diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a1e4c69 --- /dev/null +++ b/.env.example @@ -0,0 +1,59 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=fipamo +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_APP_NAME="${APP_NAME}" +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore index 63bca7e..cc4914a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,31 @@ -node_modules/ -src/node_modules/ -.parcel-cache/ -.sass-cache/ -.cache/ -.nova/ -!public/ -public/* -!public/favicon.ico -!public/index.php -!public/assets -public/assets/* -!public/assets/css -public/assets/css/* -!public/assets/css/dash -!public/assets/scripts -public/assets/scripts/* -!public/assets/scripts/dash.js -!public/assets/scripts/dash.js.map -!public/assets/images -public/assets/images/* -!public/assets/images/global/ -!public/assets/images/global/* +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/public/reference +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode + +.env.local +/.env.local.php +/.env.*.local +/.nova +/public/bundles/ +/public/assets/images/examples/ +/var/ -!content/ -content/* -!content/themes -content/themes/* -!content/themes/fipamo-default -!content/themes/fipamo-default/* -vendor/ -cache/ -_temp -.ftpconfig -.vscode/ -*.swp -config/settings.json -config/folks.json -config/pages.json -config/tags.json *.DS_Store -config.codekit3 -/config/backups \ No newline at end of file +*.codekit3 diff --git a/.parcel-cache/06d58973ebcab032.txt b/.parcel-cache/06d58973ebcab032.txt new file mode 100644 index 0000000..7e09e97 --- /dev/null +++ b/.parcel-cache/06d58973ebcab032.txt @@ -0,0 +1,2 @@ +27244989 +1650738421424070000 \ No newline at end of file diff --git a/.parcel-cache/0e613961dce44a82 b/.parcel-cache/0e613961dce44a82 new file mode 100644 index 0000000..6bb9fd6 Binary files /dev/null and b/.parcel-cache/0e613961dce44a82 differ diff --git a/.parcel-cache/103dc2bf780129b2.txt b/.parcel-cache/103dc2bf780129b2.txt new file mode 100644 index 0000000..346c9eb --- /dev/null +++ b/.parcel-cache/103dc2bf780129b2.txt @@ -0,0 +1,2 @@ +8177191 +1652749916396014000 \ No newline at end of file diff --git a/.parcel-cache/13776de4870b0ae4.txt b/.parcel-cache/13776de4870b0ae4.txt new file mode 100644 index 0000000..9549247 --- /dev/null +++ b/.parcel-cache/13776de4870b0ae4.txt @@ -0,0 +1,2 @@ +77610565 +1680824279213626000 \ No newline at end of file diff --git a/.parcel-cache/1d11806abf58443d b/.parcel-cache/1d11806abf58443d new file mode 100644 index 0000000..86966d6 Binary files /dev/null and b/.parcel-cache/1d11806abf58443d differ diff --git a/.parcel-cache/2d947ef26c61f604.txt b/.parcel-cache/2d947ef26c61f604.txt new file mode 100644 index 0000000..10f8b1e --- /dev/null +++ b/.parcel-cache/2d947ef26c61f604.txt @@ -0,0 +1,2 @@ +86051644 +1667529969687051000 \ No newline at end of file diff --git a/.parcel-cache/35c20fb91e350b46 b/.parcel-cache/35c20fb91e350b46 new file mode 100644 index 0000000..bf9917b Binary files /dev/null and b/.parcel-cache/35c20fb91e350b46 differ diff --git a/.parcel-cache/37dbec41244c32ee.txt b/.parcel-cache/37dbec41244c32ee.txt new file mode 100644 index 0000000..182f413 --- /dev/null +++ b/.parcel-cache/37dbec41244c32ee.txt @@ -0,0 +1,2 @@ +484524910 +1690930258080268000 \ No newline at end of file diff --git a/.parcel-cache/3b15f003e4aada7f b/.parcel-cache/3b15f003e4aada7f new file mode 100644 index 0000000..7eb5b21 Binary files /dev/null and b/.parcel-cache/3b15f003e4aada7f differ diff --git a/.parcel-cache/4e38dea9964e5998 b/.parcel-cache/4e38dea9964e5998 new file mode 100644 index 0000000..ce19ec7 Binary files /dev/null and b/.parcel-cache/4e38dea9964e5998 differ diff --git a/.parcel-cache/63338789dd607bd9 b/.parcel-cache/63338789dd607bd9 new file mode 100644 index 0000000..e954a29 Binary files /dev/null and b/.parcel-cache/63338789dd607bd9 differ diff --git a/.parcel-cache/7c901be8e1fcacd1 b/.parcel-cache/7c901be8e1fcacd1 new file mode 100644 index 0000000..cd45596 Binary files /dev/null and b/.parcel-cache/7c901be8e1fcacd1 differ diff --git a/.parcel-cache/7e61a613cce60b65 b/.parcel-cache/7e61a613cce60b65 new file mode 100644 index 0000000..e5cd4ef Binary files /dev/null and b/.parcel-cache/7e61a613cce60b65 differ diff --git a/.parcel-cache/839725f60ad82a5f b/.parcel-cache/839725f60ad82a5f new file mode 100644 index 0000000..37564aa Binary files /dev/null and b/.parcel-cache/839725f60ad82a5f differ diff --git a/.parcel-cache/a9f5484dda8bfe2c b/.parcel-cache/a9f5484dda8bfe2c new file mode 100644 index 0000000..6c0bdc1 Binary files /dev/null and b/.parcel-cache/a9f5484dda8bfe2c differ diff --git a/.parcel-cache/bd80eeaad5f7aeb5 b/.parcel-cache/bd80eeaad5f7aeb5 new file mode 100644 index 0000000..3f5e839 Binary files /dev/null and b/.parcel-cache/bd80eeaad5f7aeb5 differ diff --git a/.parcel-cache/d43c1a783b32ded4 b/.parcel-cache/d43c1a783b32ded4 new file mode 100644 index 0000000..6c0bdc1 Binary files /dev/null and b/.parcel-cache/d43c1a783b32ded4 differ diff --git a/.parcel-cache/da8498af7253e010 b/.parcel-cache/da8498af7253e010 new file mode 100644 index 0000000..0351f46 Binary files /dev/null and b/.parcel-cache/da8498af7253e010 differ diff --git a/.parcel-cache/data.mdb b/.parcel-cache/data.mdb new file mode 100644 index 0000000..50d29be Binary files /dev/null and b/.parcel-cache/data.mdb differ diff --git a/.parcel-cache/lock.mdb b/.parcel-cache/lock.mdb new file mode 100644 index 0000000..974cf6a Binary files /dev/null and b/.parcel-cache/lock.mdb differ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 1acb731..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - <program> Copyright (C) <year> <name of author> - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -<https://www.gnu.org/licenses/>. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,27 @@ +<?php + +namespace App\Console; + +use Illuminate\Console\Scheduling\Schedule; +use Illuminate\Foundation\Console\Kernel as ConsoleKernel; + +class Kernel extends ConsoleKernel +{ + /** + * Define the application's command schedule. + */ + protected function schedule(Schedule $schedule): void + { + // $schedule->command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ +<?php + +namespace App\Exceptions; + +use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Throwable; + +class Handler extends ExceptionHandler +{ + /** + * The list of the inputs that are never flashed to the session on validation exceptions. + * + * @var array<int, string> + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Foundation\Validation\ValidatesRequests; +use Illuminate\Routing\Controller as BaseController; + +class Controller extends BaseController +{ + use AuthorizesRequests, ValidatesRequests; +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..494c050 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,68 @@ +<?php + +namespace App\Http; + +use Illuminate\Foundation\Http\Kernel as HttpKernel; + +class Kernel extends HttpKernel +{ + /** + * The application's global HTTP middleware stack. + * + * These middleware are run during every request to your application. + * + * @var array<int, class-string|string> + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array<string, array<int, class-string|string>> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array<string, class-string|string> + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Auth\Middleware\Authenticate as Middleware; +use Illuminate\Http\Request; + +class Authenticate extends Middleware +{ + /** + * Get the path the user should be redirected to when they are not authenticated. + */ + protected function redirectTo(Request $request): ?string + { + return $request->expectsJson() ? null : route('login'); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; + +class EncryptCookies extends Middleware +{ + /** + * The names of the cookies that should not be encrypted. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; + +class PreventRequestsDuringMaintenance extends Middleware +{ + /** + * The URIs that should be reachable while maintenance mode is enabled. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +<?php + +namespace App\Http\Middleware; + +use App\Providers\RouteServiceProvider; +use Closure; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Symfony\Component\HttpFoundation\Response; + +class RedirectIfAuthenticated +{ + /** + * Handle an incoming request. + * + * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + */ + public function handle(Request $request, Closure $next, string ...$guards): Response + { + $guards = empty($guards) ? [null] : $guards; + + foreach ($guards as $guard) { + if (Auth::guard($guard)->check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; + +class TrimStrings extends Middleware +{ + /** + * The names of the attributes that should not be trimmed. + * + * @var array<int, string> + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Http\Middleware\TrustHosts as Middleware; + +class TrustHosts extends Middleware +{ + /** + * Get the host patterns that should be trusted. + * + * @return array<int, string|null> + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Http\Middleware\TrustProxies as Middleware; +use Illuminate\Http\Request; + +class TrustProxies extends Middleware +{ + /** + * The trusted proxies for this application. + * + * @var array<int, string>|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/app/Http/Middleware/ValidateSignature.php b/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Routing\Middleware\ValidateSignature as Middleware; + +class ValidateSignature extends Middleware +{ + /** + * The names of the query string parameters that should be ignored. + * + * @var array<int, string> + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ +<?php + +namespace App\Http\Middleware; + +use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; + +class VerifyCsrfToken extends Middleware +{ + /** + * The URIs that should be excluded from CSRF verification. + * + * @var array<int, string> + */ + protected $except = [ + // + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..4d7f70f --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,45 @@ +<?php + +namespace App\Models; + +// use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Foundation\Auth\User as Authenticatable; +use Illuminate\Notifications\Notifiable; +use Laravel\Sanctum\HasApiTokens; + +class User extends Authenticatable +{ + use HasApiTokens, HasFactory, Notifiable; + + /** + * The attributes that are mass assignable. + * + * @var array<int, string> + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array<int, string> + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array<string, string> + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +<?php + +namespace App\Providers; + +use Illuminate\Support\ServiceProvider; + +class AppServiceProvider extends ServiceProvider +{ + /** + * Register any application services. + */ + public function register(): void + { + // + } + + /** + * Bootstrap any application services. + */ + public function boot(): void + { + // + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..54756cd --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,26 @@ +<?php + +namespace App\Providers; + +// use Illuminate\Support\Facades\Gate; +use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; + +class AuthServiceProvider extends ServiceProvider +{ + /** + * The model to policy mappings for the application. + * + * @var array<class-string, class-string> + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Providers; + +use Illuminate\Support\Facades\Broadcast; +use Illuminate\Support\ServiceProvider; + +class BroadcastServiceProvider extends ServiceProvider +{ + /** + * Bootstrap any application services. + */ + public function boot(): void + { + Broadcast::routes(); + + require base_path('routes/channels.php'); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php new file mode 100644 index 0000000..2d65aac --- /dev/null +++ b/app/Providers/EventServiceProvider.php @@ -0,0 +1,38 @@ +<?php + +namespace App\Providers; + +use Illuminate\Auth\Events\Registered; +use Illuminate\Auth\Listeners\SendEmailVerificationNotification; +use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; +use Illuminate\Support\Facades\Event; + +class EventServiceProvider extends ServiceProvider +{ + /** + * The event to listener mappings for the application. + * + * @var array<class-string, array<int, class-string>> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,40 @@ +<?php + +namespace App\Providers; + +use Illuminate\Cache\RateLimiting\Limit; +use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\RateLimiter; +use Illuminate\Support\Facades\Route; + +class RouteServiceProvider extends ServiceProvider +{ + /** + * The path to your application's "home" route. + * + * Typically, users are redirected here after authentication. + * + * @var string + */ + public const HOME = '/home'; + + /** + * Define your route model bindings, pattern filters, and other route configuration. + */ + public function boot(): void + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} diff --git a/artisan b/artisan new file mode 100755 index 0000000..67a3329 --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +<?php + +define('LARAVEL_START', microtime(true)); + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader +| for our application. We just need to utilize it! We'll require it +| into the script here so that we do not have to worry about the +| loading of any of our classes manually. It's great to relax. +| +*/ + +require __DIR__.'/vendor/autoload.php'; + +$app = require_once __DIR__.'/bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Artisan Application +|-------------------------------------------------------------------------- +| +| When we run the console application, the current CLI command will be +| executed in this console and the response sent back to a terminal +| or another output device for the developers. Here goes nothing! +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +<?php + +/* +|-------------------------------------------------------------------------- +| Create The Application +|-------------------------------------------------------------------------- +| +| The first thing we will do is create a new Laravel application instance +| which serves as the "glue" for all the components of Laravel, and is +| the IoC container for the system binding all of the various parts. +| +*/ + +$app = new Illuminate\Foundation\Application( + $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) +); + +/* +|-------------------------------------------------------------------------- +| Bind Important Interfaces +|-------------------------------------------------------------------------- +| +| Next, we need to bind some important interfaces into the container so +| we will be able to resolve them when needed. The kernels serve the +| incoming requests to this application from both the web and CLI. +| +*/ + +$app->singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/brain/_loader.php b/brain/_loader.php deleted file mode 100644 index 87a4cf9..0000000 --- a/brain/_loader.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -spl_autoload_register(function ($className) { - $file = dirname(__DIR__) . '\\' . $className . '.php'; - $file = str_replace('\\', DIRECTORY_SEPARATOR, $file); - //echo $file; - if (file_exists($file)) { - include $file; - } -}); diff --git a/brain/api/v1/AuthAPI.php b/brain/api/v1/AuthAPI.php deleted file mode 100644 index 8c0c119..0000000 --- a/brain/api/v1/AuthAPI.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\data\Auth; -use brain\data\Session; - -class AuthAPI -{ - public function __construct() - { - } - - public static function status() - { - $result = []; - //internal check for admin action - if (Auth::status()) { - $result = [ - 'message' => 'Authorized', - 'type' => 'apiUseAuthorized', - 'token' => Session::get('token'), - ]; - } else { - $result = [ - 'message' => 'Not Authorized', - 'type' => 'apiUseNotAuthorized', - ]; - } - return $result; - } - - public static function login($body) - { - $result = []; - switch (Auth::login($body)) { - case 'no_name': - $result = [ - 'message' => 'Need to see some id, champ', - 'type' => 'requestLame', - ]; - break; - case 'bad_pass': - $result = [ - 'message' => 'Check your password, sport', - 'type' => 'requestLame', - ]; - break; - default: - $result = [ - 'message' => 'Welcome back', - 'type' => 'requestGood', - ]; - break; - } - - return $result; - } - - public static function logout($body) - { - Auth::logout($body); - $result = [ - 'message' => 'Till next time, g.', - 'type' => 'TASK_LOGOUT', - ]; - return $result; - } - - public static function requestSecret($body) - { - $result = Auth::findSecret($body); - return $result; - } - - public static function resetPassword($body) - { - $result = Auth::makeNewPassword($body); - return $result; - } -} diff --git a/brain/api/v1/FilesAPI.php b/brain/api/v1/FilesAPI.php deleted file mode 100644 index 01962a0..0000000 --- a/brain/api/v1/FilesAPI.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\utility\FileUploader; -use brain\data\Settings; -use brain\data\Member; - -class FilesAPI -{ - public function __construct() - { - } - - public static function uploadFiles($request, $type = null) - { - $upload = $request->getUploadedFiles(); //grab uploaded files - $options = $request->getParsedBody(); - $file = $upload['upload_files'][0]; //front end sends one by one for progress tracking, so grab first - $type = $file->getClientMediaType(); - $filesPath = ''; - $path = date('Y') . '/' . date('m'); - $response = []; - - switch ($type) { - case 'image/jpeg': - case 'image/png': - case 'image/gif': - case 'image/svg': - if (isset($options["source"])) { - if ($options["source"] == "avatar-upload") { - $filesPath = '/assets/images/user/' . $path . '/'; - Member::updateData( - 'avi', - $filesPath . $file->getClientFileName() - ); - } else { - $filesPath = '/assets/images/user/' . $path . '/'; - Settings::updateGlobalData( - 'background', - $filesPath . '/' . $file->getClientFileName() - ); - } - } else { - $filesPath = '/assets/images/blog/' . $path . '/'; - } - - break; - case 'video/mp4': - $filesPath = '/assets/video/blog/' . $path . '/'; - break; - case 'audio/mpeg': - $filesPath = '/assets/sound/blog/' . $path . '/'; - break; - case 'application/pdf': - case 'text/plain': - case 'text/rtf': - $filesPath = '/assets/docs/blog/' . $path . '/'; - break; - } - - FileUploader::uploadFile('../public' . $filesPath, $file); - - $response = [ - 'message' => "File Uploaded. Great!", - "filePath" => $filesPath . urlencode($file->getClientFileName()), - "fileName" => urlencode($file->getClientFileName()), - 'type' => $type, - ]; - - return $response; - } -} diff --git a/brain/api/v1/ImagesAPI.php b/brain/api/v1/ImagesAPI.php deleted file mode 100644 index 6d303ea..0000000 --- a/brain/api/v1/ImagesAPI.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\data\Member; -use brain\data\Settings; -use brain\utility\FileUploader; - -class ImagesAPI -{ - public function __construct() - { - } - - public static function uploadImage($request, $type = null) - { - $file = $request->getUploadedFiles(); - $uploadPath = ''; - $path = date('Y') . '/' . date('m'); - $response = []; - switch ($type) { - case 'avatar': - $image = $file['avatar_upload']; - $uploadPath = '../public/assets/images/user/' . $path; - break; - case 'background': - $image = $file['background_upload']; - $uploadPath = '../public/assets/images/user/' . $path; - break; - default: - $image = $file['post_image']; - $path = date('Y') . '/' . date('m'); - $uploadPath = '../public/assets/images/blog/' . $path; - break; - } - - $result = FileUploader::uploadFile($uploadPath, $image); - - switch ($type) { - case 'avatar': - $response = [ - 'message' => 'Avatar Added. You look great!', - 'type' => 'avatarUploaded', - 'url' => '/assets/images/user/' . $path . '/' . $image->getClientFileName(), - ]; - - //update member data - Member::updateData( - 'avi', - '/assets/images/user/' . $path . '/' . $image->getClientFileName() - ); - - break; - case 'background': - $response = [ - 'message' => "Background plugged in. That's nice!", - 'type' => 'siteBackgroundUploaded', - 'url' => '/assets/images/user/' . $path . '/' . $image->getClientFileName(), - ]; - - //update settings file - Settings::updateGlobalData( - 'background', - '/assets/images/user/' . $path . '/' . $image->getClientFileName() - ); - - break; - default: - $response = [ - 'message' => 'Image Added. Very slick', - 'type' => 'postImageAdded', - 'url' => '/assets/images/blog/' . $path . '/' . $image->getClientFileName(), - ]; - break; - } - - return $response; - } -} diff --git a/brain/api/v1/InitAPI.php b/brain/api/v1/InitAPI.php deleted file mode 100644 index a363fc9..0000000 --- a/brain/api/v1/InitAPI.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\utility\Setup; - -class InitAPI -{ - public function __construct() - { - } - - public static function handleInitTasks($task, $request) - { - //check if a site config already exists. if it does, deny set up request - //restore to previous version of site while a config exists is only accessible - //through settings. - - if (Setup::status()) { - $result = ['type' => 'blogInitFail', 'message' => 'Site already set up']; - } else { - switch ($task) { - case 'init': - $result = Setup::init($request); - break; - case 'restore': - $result = Setup::restore($request); - break; - } - } - - return $result; - } -} diff --git a/brain/api/v1/MailerAPI.php b/brain/api/v1/MailerAPI.php deleted file mode 100644 index ac6261f..0000000 --- a/brain/api/v1/MailerAPI.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\data\Session; -use brain\utility\Mailer; - -class MailerAPI -{ - public function __construct() - { - } - - public static function handleMail($request, $body, $response) - { - // if testing, verify session is active - // add clean method for sending programmtic emails - if ($body['mail_task'] == 'TESTING') { - if (Session::active()) { - $result = Mailer::sendmail($body); - } else { - $result = [ - 'message' => 'You need to be logged in for this, champ.', - 'type' => 'MAILER_ERROR', - ]; - } - } else { - } - - return $result; - } -} diff --git a/brain/api/v1/PagesAPI.php b/brain/api/v1/PagesAPI.php deleted file mode 100644 index 753418e..0000000 --- a/brain/api/v1/PagesAPI.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\data\Book; -use brain\data\Settings; -use brain\data\Session; -use brain\utility\StringTools; - -use function _\filter; - -class PagesAPI -{ - public function __construct() - { - } - - public static function getPageContent($request, $args) - { - $task = $args['fourth']; - $pages = (new Book('../content/pages'))->getContents(); - $content = []; - foreach ($pages as $page) { - $entry = [ - 'id' => $page['id'], - 'uuid' => $page['uuid'], - 'title' => $page['title'], - 'feature' => $page['feature'], - 'path' => $page['path'], - 'layout' => $page['layout'], - 'tags' => $page['tags'], - 'author' => $page['author'], - 'created' => $page['created'], - 'updated' => $page['updated'], - 'deleted' => $page['deleted'], - 'menu' => $page['menu'], - 'featured' => $page['featured'], - 'published' => $page['published'], - 'slug' => $page['slug'], - 'content' => StringTools::sanitizeContent($page['content']), - ]; - - array_push($content, $entry); - } - switch ($task) { - case 'published': - $published = filter($content, function ($item) { - return $item['published'] == true && $item['deleted'] == false; - }); - - $result = ['pages' => $published, 'totalItems' => count($published)]; - break; - case 'featured': - $featured = filter($content, function ($item) { - return $item['featured'] == true && $item['deleted'] == false; - }); - - $result = [ - 'pages' => $featured, - 'totalItems' => count($featured), - ]; - break; - case 'menu': - $menu = filter($content, function ($item) { - return $item['menu'] == true && $item['deleted'] == false; - }); - - $result = ['pages' => $menu, 'totalItems' => count($menu)]; - break; - case 'single': - $uuid = $args['fifth']; - $page = (new Book('../content/pages'))->findPageById($uuid); - - $entry = [ - 'id' => $page['id'], - 'uuid' => $page['uuid'], - 'title' => $page['title'], - 'feature' => $page['feature'], - 'path' => $page['path'], - 'layout' => $page['layout'], - 'tags' => $page['tags'], - 'author' => $page['author'], - 'created' => $page['created'], - 'updated' => $page['updated'], - 'deleted' => $page['deleted'], - 'menu' => $page['menu'], - 'featured' => $page['featured'], - 'published' => $page['published'], - 'slug' => $page['slug'], - 'content' => StringTools::sanitizeContent($page['content']), - ]; - $result = $entry; - break; - case 'tags': - $result = Settings::getTags(); - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - return $result; - } - - public static function handlePageTask($request, $args) - { - $task = $args['fourth']; - switch ($task) { - case 'delete': - case 'create': - case 'write': - $body = json_decode(file_get_contents("php://input"), true); - $passed = true; - if (!isset($body['form_token'])) { - $result = [ - 'message' => 'No form token. Not good, sport.', - 'type' => 'TASK_FORM_AUTH', - ]; - } else { - if ($body['form_token'] == Session::get('form_token')) { - $keys = [ - 'id', - 'uuid', - 'layout', - 'current_title', - 'content', - 'title', - 'created', - 'slug', - 'tags', - 'menu', - 'featured', - 'published', - 'form_token', - 'imageList', - "fileList", - "remote" - ]; - - foreach ($body as $key => $item) { - if (!in_array($key, $keys)) { - //found unnecessary key, so reject submission - var_dump($key); - $passed = false; - } - } - if ($passed) { - $result = (new Book())->editPage($task, $request); - } else { - $result = [ - 'message' => 'Unneccessary key found. Post not authorized, slick.', - 'type' => 'TASK_FORM_AUTH', - ]; - } - } else { - $result = [ - 'message' => 'Form token, auth failed. Uh oh.', - 'type' => 'TASK_FORM_AUTH', - ]; - } - } - - break; - case 'add-entry-image': - $result = ImagesAPI::uploadImage($request); - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - - return $result; - } -} diff --git a/brain/api/v1/SettingsAPI.php b/brain/api/v1/SettingsAPI.php deleted file mode 100644 index fd24eb3..0000000 --- a/brain/api/v1/SettingsAPI.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -namespace brain\api\v1; - -use brain\data\Render; -use brain\data\Settings; -use brain\data\Session; -use brain\utility\Maintenance; - -class SettingsAPI -{ - public function __construct() - { - } - - public static function handleSettingsTask($request, $args, $body = null) - { - $task = $args['fourth']; - switch ($task) { - case 'publish': - //check settings to see if site is a one pager - $config = new Settings(); - $settings = $config->getSettings(); - $theme = $settings['global']['theme']; - $themeConfig = json_decode( - file_get_contents('../content/themes/' . $theme . '/theme.json'), - true - ); - //check to see if dynamic rendering is active - if ( - isset($settings['global']['dynamicRender']) && - $settings['global']['dynamicRender'] === 'true' - ) { - $result = [ - 'message' => "Dynamic Render Active! You're good!", - 'type' => 'RENDER_SUCCESS', - ]; - } else { - $render = new Render(); - if (isset($themeConfig['render'])) { - //rendering for one page sites - if (!$themeConfig['render'] || $themeConfig['render'] === 'false') { - $render->renderIndex(); - $result = [ - 'message' => 'Index Rendered. HAND CLAPS', - 'type' => 'RENDER_SUCCESS', - ]; - } else { - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $result = [ - 'message' => 'Site Rendered. GOOD EFFORT', - 'type' => 'RENDER_SUCCESS', - ]; - } - } else { - // just incase the render flag is missing - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $result = [ - 'message' => 'Site Rendered. GOOD EFFORT', - 'type' => 'RENDER_SUCCESS', - ]; - } - } - - //if render flag is set and false, just render index page for one page sites - //otherwise, render all pages according to theme template files - - break; - case 'add-avatar': - $result = ImagesAPI::uploadImage($request, 'avatar'); - break; - case 'add-feature-background': - $result = ImagesAPI::uploadImage($request, 'background'); - break; - case 'sync': - Settings::sync($body); - $result = [ - 'message' => "Settings Synced. You're doing great!", - 'type' => 'settingsUpdated', - ]; - break; - case 'nav-sync': - Settings::navSync($body); - $result = [ - 'message' => 'Navigation updated. Very slick!', - 'type' => 'menuUpdated', - ]; - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - - return $result; - } - - public static function getInfo($request, $args) - { - $task = $args['fourth']; - switch ($task) { - case 'site': - $config = new Settings(); - $settings = $config->getSettings(); - $data = [ - 'title' => $settings['global']['title'], - 'base_url' => $settings['global']['base_url'], - 'description' => $settings['global']['descriptions'], - ]; - $result = [ - 'message' => 'Settings Found', - 'type' => 'GET_SETTINGS', - 'data' => $data, - ]; - break; - case 'member': - if (Session::active()) { - $member = $member = Session::get('member'); - $data = ['handle' => $member['handle'], 'email' => $member['email']]; - $result = [ - 'message' => 'Member Info Found', - 'type' => 'GET_MEMBER_INFO', - 'data' => $data, - ]; - } else { - $result = [ - 'message' => "Not logged in. C'mon, bruh", - 'type' => 'TASK_NONE', - ]; - } - break; - default: - $result = [ - 'message' => 'No Settings found. Frowny Face', - 'type' => 'TASK_NONE', - ]; - break; - } - return $result; - } - - public static function createBackup() - { - $result = Maintenance::makeBackup(); - return $result; - } -} diff --git a/brain/controller/.php-cs-fixer.cache b/brain/controller/.php-cs-fixer.cache deleted file mode 100644 index e6783e3..0000000 --- a/brain/controller/.php-cs-fixer.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"8.1.12","version":"3.13.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"braces":{"allow_single_line_closure":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_import_per_statement":{"group_to_single_imports":false},"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"array_indentation":true,"array_syntax":{"syntax":"short"},"combine_consecutive_unsets":true,"method_chaining_indentation":true,"class_attributes_separation":{"elements":{"const":"none","method":"one","property":"none","trait_import":"none"}},"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align_single_space_minimal","=>":"align_single_space_minimal"}},"concat_space":{"spacing":"one"},"function_typehint_space":true,"single_line_comment_style":{"comment_types":["hash"]},"include":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","throw"]},"no_multiline_whitespace_around_double_arrow":true,"no_spaces_around_offset":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"object_operator_without_whitespace":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true},"hashes":{"tmpixxwnz.php":"f4358c77accfedac014932cd885cbf99","tmpqkj20z.php":"f4358c77accfedac014932cd885cbf99","tmpto8q2x.php":"ca7dc7ebe4bbcde2f41325162327aa81","tmpv1ofcp.php":"ca7dc7ebe4bbcde2f41325162327aa81","tmp3nqyas.php":"ca7dc7ebe4bbcde2f41325162327aa81","tmp12kssw.php":"ca7dc7ebe4bbcde2f41325162327aa81"}} \ No newline at end of file diff --git a/brain/controller/APIControl.php b/brain/controller/APIControl.php deleted file mode 100644 index 2256f61..0000000 --- a/brain/controller/APIControl.php +++ /dev/null @@ -1,250 +0,0 @@ -<?php - -namespace brain\controller; - -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; -use brain\api\v1\AuthAPI; -use brain\api\v1\PagesAPI; -use brain\api\v1\FilesAPI; -use brain\api\v1\SettingsAPI; -use brain\api\v1\InitAPI; -use brain\api\v1\MailerAPI; -use brain\data\Member; -use brain\data\Session; - -class APIControl -{ - public static function get( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - $filename = ''; - switch (isset($args['third']) ? $args['third'] : 'none') { - case 'status': - $result = AuthAPI::status(); - - break; - case 'page': - //echo - if (Member::verifyKey($_GET['key'])) { - $result = PagesAPI::getPageContent($request, $args); - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'settings': - $token = $request->getHeader('fipamo-access-token'); - //Verify token to get site info - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::getInfo($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'files': - if (Session::active()) { - if ($args['third'] == 'backup') { - $filename = '../config/backups/latest_backup.zip'; - if (file_exists($filename)) { - header('Content-Type: application/zip'); - header( - 'Content-Disposition: attachment; filename="' . - basename($filename) . - '"' - ); - header('Content-Length: ' . filesize($filename)); - - flush(); - // return readfile($filename); - //readfile($filename); - // delete file - //unlink($filename); - } - } - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - // no break - default: - break; - } - - $freshResponse = $response; - - if ($args['third'] == 'files') { - $freshResponse - ->getBody() - ->write(file_get_contents('../config/backups/latest_back.zip')); - - $freshResponse->withHeader('Content-Type', 'application/zip'); - return $freshResponse->withAddedHeader( - 'Content-Disposition', - 'attachment; filename=latest_backup.zip' - ); - } else { - $response->getBody()->write(json_encode($result)); - return $response->withHeader('Content-Type', 'application/json'); - } - } - - public static function post( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - $contentType = $request->getHeader('Content-Type'); - switch ($contentType[0]) { - case 'application/json': - $body = json_decode(file_get_contents('php://input'), true); - break; - default: - break; - } - - switch (isset($args['third']) ? $args['third'] : 'none') { - case 'restore': //move to 'api/auth' - case 'init': //move to 'api/auth' - $task = $args['third']; - $result = InitApi::handleInitTasks( - $task, - $task == 'init' ? $body : $request - ); - break; - case 'backup': //move to 'api/auth' - $token = $request->getHeader('fipamo-access-token'); - //Verify token for admin tasks - $result = SettingsAPI::createBackup(); - /* - - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::createBackup(); - } else { - $result = [ - "message" => "API access denied, homie", - "type" => "API_ERROR", - ]; - } - */ - break; - case 'login': //move to 'api/auth' - //check if request is remote and if so, verify token - if ($body['remote'] || $body['remote'] == 'true') { - if (Member::verifyKey($body['key'])) { - $result = AuthAPI::login($body); - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - //request is local, so it's cool - $result = AuthAPI::login($body); - } - - break; - case 'logout': //move to 'api/auth' - $result = AuthAPI::logout($body); - break; - case 'get-secret': //move to 'api/auth' - $result = AuthAPI::requestSecret($body); - break; - case 'reset-password': //move to 'api/auth' - $result = AuthAPI::resetPassword($body); - break; - case 'page': - $token = $request->getHeader('fipamo-access-token'); - //Verify token for admin tasks - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = PagesAPI::handlePageTask($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - - break; - case "files": - $token = $request->getHeader('fipamo-access-token'); - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = FilesAPI::uploadFiles($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'settings': - if (isset($body)) { - $postBody = $body; - } else { - $postBody = null; - } - $task = $args['fourth']; - if ($task == 'add-feature-background' || $task == 'add-avatar') { - $result = SettingsAPI::handleSettingsTask($request, $args, $postBody); - } else { - $token = $request->getHeader('fipamo-access-token'); - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::handleSettingsTask( - $request, - $args, - $postBody - ); - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } - - break; - case 'mailer': - $result = MailerAPI::handleMail($request, $body, $response); - break; - default: - $result = [ - 'message' => "Oh, nothing to do. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - $response->getBody()->write(json_encode($result)); - return $response->withHeader('Content-Type', 'application/json'); - } -} diff --git a/brain/controller/DashControl.php b/brain/controller/DashControl.php deleted file mode 100644 index 06a33fc..0000000 --- a/brain/controller/DashControl.php +++ /dev/null @@ -1,226 +0,0 @@ -<?php - -namespace brain\controller; - -use brain\data\Book; -use brain\data\Session; -use brain\data\Settings; -use brain\data\Themes; -use brain\utility\Setup; -use brain\utility\Sorting; -use Carbon\Carbon; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; -use Slim\Views\Twig; - -class DashControl -{ - public static function start( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - $view = Twig::fromRequest($request); - $pageOptions = []; - $template = ''; - if (Setup::status()) { - switch (isset($args['second']) ? $args['second'] : 'index') { - case 'settings': - if (Session::active()) { - $config = new Settings(); - $settings = $config->getSettings(); - $themes = (new Themes())->getThemes(); // $config->getThemes(); - $template = 'dash/settings.twig'; - $member = Session::get('member'); - $form_token = Session::get('form_token'); - $updated = new Carbon($settings['global']['last_backup']); - $pageOptions = [ - 'title' => 'Settings', - 'private' => $settings['global']['private'], - 'renderOnSave' => $settings['global']['renderOnSave'], - 'background' => $settings['global']['background'], - 'member' => $member, - 'ftoken' => $form_token, - 'siteTitle' => $settings['global']['title'], - 'baseUrl' => $settings['global']['base_url'], - 'desc' => $settings['global']['descriptions'], - 'lastBackup' => $updated->format('Y M D d'), - 'currentTheme' => $settings['global']['theme'], - 'themes' => $themes, - 'apiStatus' => isset($settings['global']['externalAPI']) - ? $settings['global']['externalAPI'] - : 'false', - 'dynamicRenderStatus' => isset( - $settings['global']['dynamicRender'] - ) - ? $settings['global']['dynamicRender'] - : 'false', - 'mailOption' => $settings['email']['active'], - 'mailConfig' => $settings['email'], - 'status' => Session::active(), - ]; - } else { - header('Location: /dashboard'); - exit; - } - - break; - case 'navigation': - if (Session::active()) { - $config = new Settings(); - $settings = $config->getSettings(); - $template = 'dash/navigation.twig'; - $pageOptions = [ - 'title' => 'Edit Menu', - 'status' => Session::active(), - 'menu' => $settings['menu'], - ]; - } else { - header('Location: /dashboard'); - exit; - } - break; - case 'pages': - if (Session::active()) { - $currentPage = isset($args['fourth']) ? $args['fourth'] : 1; - $filter = isset($args['third']) ? $args['third'] : 'all'; - $data = (new Book())->getPages($currentPage, 4, $filter); - $template = 'dash/book.twig'; - $pageOptions = [ - 'title' => 'Contents', - 'entryCount' => $data['entryCount'], - 'numOfPages' => $data['numOfPages'], - 'currentPage' => $currentPage, - 'filter' => $data['paginate']['sort'], - 'stats' => $data['stats'], - 'pages' => $data['pages'], - 'paginate' => $data['paginate'], - 'status' => Session::active(), - ]; - } else { - header('Location: /dashboard'); - exit; - } - break; - case 'page': - if (Session::active()) { - $template = 'dash/page-edit.twig'; - $mode = $args['third']; - $uuid = $args['fourth']; - - switch ($mode) { - case 'edit': - $page = (new Book())->findPageById($uuid); - $views = []; - if (!isset($page['layout'])) { - $page['layout'] = 'page'; - } - if (str_contains($page['layout'], 'index')) { - $views = (new Themes())->getCustomIndex(); - } else { - $views = (new Themes())->getCustomViews(); - } - $imageList = []; - $fileList = []; - if (isset($page['feature'])) { - $imageList = explode(',', $page['feature']); - } - if (isset($page['files'])) { - $fileList = explode(',', $page['files']); - } - - $images = []; - $files = []; - foreach ($imageList as $item) { - $image = trim($item); - if (!empty($image)) { - array_push($images, $image); - } - } - - foreach ($fileList as $item) { - $file = trim($item); - if (!empty($file)) { - array_push($files, $file); - } - } - - $pageOptions = [ - 'title' => $page['title'], - 'page' => $page, - 'mode' => $mode, - 'token' => Session::get('form_token'), - 'status' => Session::active(), - 'images' => $images, - 'files' => $files, - 'views' => $views, - ]; - break; - case 'preview': - $config = new Settings(); - $settings = $config->getSettings(); - $loader = new \Twig\Loader\FilesystemLoader( - '../content/themes/' . $settings['global']['theme'] . - '/' - ); - $display = new \Twig\Environment($loader, []); - - $book = new Book(); - $page = $book->findPageById($uuid); - $pageOptions = Sorting::page($page); - $preview = $page['layout'] . - '.twig'; - $html = $display->render($preview, $pageOptions); - $response->getBody()->write($html); - - return $response; - break; - default: - $pageOptions = [ - 'title' => 'Fipamo | Create Page', - 'token' => Session::get('form_token'), - 'mode' => $mode, - 'status' => Session::active(), - ]; - break; - } - } else { - header('Location: /dashboard'); - exit; - } - break; - case 'logout': - Session::kill(); - header('Location: /dashboard'); - exit; - break; - case 'reset-password': - $template = 'dash/reset-password.twig'; - $pageOptions = [ - 'title' => 'Reset Password', - ]; - break; - default: - $template = 'dash/start.twig'; - if (Session::active()) { - $pageOptions = [ - 'title' => 'Start', - 'status' => Session::active(), - 'data' => (new Book())->getPages(1, 4), - ]; - } else { - $pageOptions = [ - 'title' => 'Welcome to Fipamo', - 'status' => Session::active(), - ]; - } - break; - } - } else { - $template = 'dash/init.twig'; - $pageOptions = ['title' => 'Fipamo Setup']; - } - - return $view->render($response, $template, $pageOptions); - } -} diff --git a/brain/controller/IndexControl.php b/brain/controller/IndexControl.php deleted file mode 100644 index 19c0e08..0000000 --- a/brain/controller/IndexControl.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -namespace brain\controller; - -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; -use Slim\Views\Twig; -use brain\data\Settings; -use brain\utility\Sorting; - -use function _\find; - -class IndexControl -{ - public static function start( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - //unset($_SESSION); - $config = new Settings(); - $settings = $config->getSettings(); - $view = Twig::fromRequest($request); - //checks dynamic render flag for site render status - if ($settings['global']['dynamicRender']) { - if ($settings['global']['dynamicRender'] == 'true') { - $loader = new \Twig\Loader\FilesystemLoader('../content/themes'); - $display = new \Twig\Environment($loader, []); - $template = ''; - $pageOptions = []; - - $pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - - if (isset($args['first'])) { - switch ($args['first']) { - case 'tags': - $template = $settings['global']['theme'] . '/tags.twig'; - $tag = trim($args['second']); - $taglist = Sorting::tags(); - $item = find($taglist, ['tag_name' => $tag]); - $pageOptions = [ - 'title' => 'Pages Tagged as ' . $item['tag_name'], - 'background' => $pageInfo['image'], - 'tag_list' => $item['pages'], - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - ]; - break; - case 'archives': - $archive = Sorting::archive(); - $template = $settings['global']['theme'] . '/archive.twig'; - $pageOptions = [ - 'title' => 'Archive', - 'background' => $pageInfo['image'], - 'archives' => $archive, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - ]; - - break; - default: - //check if page is a menu item, if not render along path as usual - $page = []; - $book = new Book(); - if (is_numeric($args['first'])) { - $page = $book->findPageBySlug($args['third']); - } else { - $page = $book->findPageBySlug($args['first']); - } - $template = $settings['global']['theme'] . '/' . $page['layout'] . '.twig'; - $pageOptions = Sorting::page($page); - - break; - } - } else { - //index - $template = $settings['global']['theme'] . '/' . $page['layout'] . '.twig'; - $book = new Book(''); - $page = $book->findPageBySlug(); - $pageOptions = Sorting::page($page); - } - - $html = $display->render($template, $pageOptions); - $response->getBody()->write($html); - return $response; - } else { - //if dynamic flag is false, load up html - $view = Twig::fromRequest($request); - $html = file_get_contents('../public/index.html'); - $response->getBody()->write($html); - return $response; - } - } else { - //if flag is not present, default to static html - $view = Twig::fromRequest($request); - $html = file_get_contents('../public/index.html'); - $response->getBody()->write($html); - return $response; - } - } -} diff --git a/brain/controller/RouteControl.php b/brain/controller/RouteControl.php deleted file mode 100644 index 2fbea94..0000000 --- a/brain/controller/RouteControl.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -namespace brain\controller; - -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; - -class RouteControl -{ - // TODO: Add additional HTTP Methods to better organize API control paths - public function get( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - switch (isset($args['first']) ? $args['first'] : 'index') { - case 'dashboard': - return DashControl::start($request, $response, $args); - break; - case 'api': - return APIControl::get($request, $response, $args); - break; - default: - return IndexControl::start($request, $response, $args); - break; - } - } - - public function post( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - switch (isset($args['first']) ? $args['first'] : 'index') { - case 'api': - return APIControl::post($request, $response, $args); - break; - default: - $result = [ - 'message' => "Nothing matches this route. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - $response->getBody()->write(json_encode($result)); - - return $response->withHeader('Content-Type', 'application/json'); - } - } -} diff --git a/brain/data/.php-cs-fixer.cache b/brain/data/.php-cs-fixer.cache deleted file mode 100644 index 108a797..0000000 --- a/brain/data/.php-cs-fixer.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"8.1.12","version":"3.13.0","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"braces":{"allow_single_line_closure":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_import_per_statement":{"group_to_single_imports":false},"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true,"array_indentation":true,"array_syntax":{"syntax":"short"},"combine_consecutive_unsets":true,"method_chaining_indentation":true,"class_attributes_separation":{"elements":{"const":"none","method":"one","property":"none","trait_import":"none"}},"multiline_whitespace_before_semicolons":{"strategy":"no_multi_line"},"binary_operator_spaces":{"default":"single_space","operators":{"=":"align_single_space_minimal","=>":"align_single_space_minimal"}},"concat_space":{"spacing":"one"},"function_typehint_space":true,"single_line_comment_style":{"comment_types":["hash"]},"include":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","throw"]},"no_multiline_whitespace_around_double_arrow":true,"no_spaces_around_offset":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"object_operator_without_whitespace":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true},"hashes":{"tmptx_2lh.php":"fbbaef6c1d64a3237a34403b9e4c51c0","tmpy4bagr.php":"fbbaef6c1d64a3237a34403b9e4c51c0"}} \ No newline at end of file diff --git a/brain/data/Auth.php b/brain/data/Auth.php deleted file mode 100644 index 3956bfd..0000000 --- a/brain/data/Auth.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - -namespace brain\data; - -use ReallySimpleJWT\Token; - -use function _\find; - -class Auth -{ - public function __construct() - { - } - - public static function sessionStatus() - { - if (isset($_SESSION['member'])) { - return true; - } else { - return false; - } - //return $this->secret; - } - - public static function status() - { - $result = ''; - if (Session::active()) { - $result = true; - } else { - $result = false; - } - return $result; - } - - public static function login($who) - { - //grab member list - $folks = (new Settings())->getFolks(); - $found = find($folks, ['handle' => $who['handle']]); - - if ($found) { - //name is found, verify password - if (password_verify($who['password'], $found['password'])) { - $member = [ - 'handle' => $found['handle'], - 'email' => $found['email'], - 'role' => $found['role'], - 'avatar' => $found['avi'], - 'key' => $found['key'], - ]; - - $token = Token::create( - $found['key'], - $found['secret'], - time() + 3600, - 'localhost' - ); //expires in an hour - - $form_token = md5(uniqid(microtime(), true)); - Session::start(); - Session::set('member', $member); - Session::set('token', $token); - Session::set('form_token', $form_token); - - $result = 'good_login'; - } else { - $result = 'bad_pass'; - } - } else { - //if name is not found - $result = 'no_name'; - } - return $result; - } - - public static function findSecret($data) - { - $result = []; - $folks = (new Settings())->getFolks(); - - if (!empty($data['email']) && filter_var($data['email'], FILTER_VALIDATE_EMAIL)) { - $found = find($folks, ['email' => $data['email']]); - if ($found) { - //if email is cool, check mail relay status - //if set up, send secret there, if not just return it - $config = new Settings(); - $settings = $config->getSettings(); - $email = $settings['email']['active']; - if ($email != 'option-none') { - $data['mail_task'] = 'SEND_SECRET'; - $data['secret'] = $found['secret']; - $result = Mailer::sendmail($data); - } else { - $result = [ - 'message' => 'Valid email, but no email set up!', - 'type' => 'secretFound', - 'secret' => $found['secret'], - ]; - } - } else { - $result = [ - 'message' => 'No valid email, no goodies, pleighboi', - 'type' => 'secretNotFound', - ]; - } - } else { - $result = [ - 'message' => 'Aye, this address is not right, slick.', - 'type' => 'secretNotFound', - ]; - } - - return $result; - } - - public static function makeNewPassword($data) - { - //check if passwordsmatch - if ($data['newPass'] == $data['newPassConfirm']) { - //verify secret - $folks = (new Settings())->getFolks(); - $found = find($folks, ['secret' => $data['secret']]); - if ($found) { - //create new pass and secret key, then update file - $hash = password_hash($data['newPass'], PASSWORD_DEFAULT); - $freshSecret = StringTools::randomString(12); - Member::updateData('password', $hash, $data['secret']); - Member::updateData('secret', $freshSecret, $data['secret']); - $result = [ - 'message' => 'Password Updated. Very nice!', - 'type' => 'passCreated', - ]; - } else { - $result = [ - 'message' => 'Secret key is invalid. Try to retrieve it again', - 'type' => 'passNotCreated', - ]; - } - } else { - $result = [ - 'message' => "Passwords don't match. Try it again.", - 'type' => 'passNotCreated', - ]; - } - - return $result; - } - - public static function logout() - { - Session::kill(); - } -} diff --git a/brain/data/Book.php b/brain/data/Book.php deleted file mode 100644 index efb0575..0000000 --- a/brain/data/Book.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php - -namespace brain\data; - -use Carbon\Carbon; -use brain\utility\DocTools; -use brain\utility\StringTools; - -use function _\find; -use function _\filter; - -class Book -{ - public function __construct() - { - } - - public function findPageById(string $uuid) - { - $content = $this->getContents(); - $page = find($content, ['uuid' => $uuid]); - - return $page; - } - - public function findPageBySlug(string $slug = null) - { - $content = $this->getContents(); - if (isset($slug)) { - $page = find($content, ['slug' => $slug]); - } else { - $page = find($content, ['layout' => 'index']); - } - - return $page; - } - - public function editPage($task, $request) - { - $content = $this->getContents(); - $body = json_decode(file_get_contents("php://input"), true); - //$body = find($content, ["uuid" => $parsed["id"]]); - - $page = find($content, ['uuid' => $body['uuid']]); - $files = $request->getUploadedFiles(); - - $member = Session::get('member'); - - if ($task != 'create') { - $path = date('Y', date($page['rawCreated'])) . - '/' . - date('m', date($page['rawCreated'])); - } else { - $path = date('Y') . '/' . date('m'); - } - - $page_feature = ''; - $page_files = ''; - - if ($task == 'delete') { - $deleted = 'true'; - $body['menu'] = 'false'; - $body['published'] = 'false'; - $body['featured'] = 'false'; - } else { - $deleted = isset($page['deleted']) ? $page['deleted'] : 'false'; - } - - $created = $task != 'create' ? new Carbon($page['rawCreated']) : Carbon::now(); - $updated = Carbon::now(); - - // grab current index from settings and update - $id = $task != 'create' ? $body['id'] : Settings::getCurrentIndex(); - $uuid = $task != 'create' ? $body['uuid'] : StringTools::createUUID(); - // now that variables are done, set to body object and then convert to markdown to save - - $body['id'] = $id; - $body['uuid'] = $uuid; - //$body['feature'] = $page_feature; - //$body['files'] = $page_files; - $body['path'] = $path; - $body['author'] = $member['handle']; - $body['created'] = $created->format("Y-m-d\TH:i:sP"); - $body['updated'] = $updated->format("Y-m-d\TH:i:sP"); - $body['deleted'] = $deleted; - - $write = DocTools::objectToMD($body); - - // if layout is index, change path to file - - if ($body['layout'] == 'index') { - $writePath = '../content/pages/start/index.md'; - } else { - $writePath = '../content/pages/' . $path . '/' . $body['slug'] . '.md'; - } - - $status = DocTools::writePages($task, $path, $writePath, $write); - - if ($status) { - $config = new Settings(); - $settings = $config->getSettings(); - $message = ''; - - if ( - $settings['global']['renderOnSave'] == 'true' && - $settings['global']['dynamicRender'] == 'false' - ) { - $render = new Render(); - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $message = 'Filed edited and rendered. NOICE.'; - } else { - $message = 'File edited. Nice work'; - } - - $response = [ - 'message' => $message, - 'type' => $task == 'write' ? 'postUpdated' : 'postAdded', - 'id' => $uuid, - ]; - - // TODO: When form submission is successful, make new form token - // Session token doesn't reset on the front end, so turning this off for now - // $form_token = md5(uniqid(microtime(), true)); - // Session::set("form_token", $form_token); - - // once saved, update menu - $body['path'] = $path; - Settings::updateMenu($body); - Settings::updateTags(); - // if new page added, update current index in Settings file - if ($task == 'create') { - Settings::updateIndex(); - } - } else { - $response = [ - 'message' => "Uh oh. File save problem. Don't panic", - 'type' => 'postError', - 'id' => $uuid, - ]; - } - - return $response; - } - - public function getPages(int $page, int $limit, string $sort = null) - { - $content = $this->getContents(); - - $published = filter($content, function ($item) { - return $item['published'] == true && $item['deleted'] == false; - }); - $deleted = filter($content, function ($item) { - return $item['deleted'] == true; - }); - - // $all = $content; - $all = filter($content, function ($item) { - return $item['deleted'] == false; - }); - $filter = isset($sort) ? $sort : 'all'; - switch ($filter) { - case 'published': - $filtered = $published; - break; - case 'deleted': - $filtered = $deleted; - break; - default: - $filtered = $all; - break; - } - $numOfPages = ceil(count($filtered) / ($limit + 1)); - $folder = []; - - if (count($filtered) != 0) { - if (count($filtered) < $limit) { - $limit = count($filtered) - 1; - } - $range = $page * $limit - $limit; - - if ($range != 0) { - $range = $range + 1; - } - for ($i = 0; $i <= $limit; ++$i) { - if (isset($filtered[$i + $range])) { - array_push($folder, $filtered[$i + $range]); - } else { - // chill out - } - } - } - - $prev = $page - 1; - if ($prev <= 0) { - $prev = $numOfPages; - } - - $next = $page + 1; - if ($next > $numOfPages) { - $next = 1; - } - - return [ - 'pages' => $folder, - 'numOfPages' => $numOfPages, - 'entryCount' => count($filtered), - 'paginate' => [ - 'sort' => $sort, - 'nextPage' => $next, - 'prevPage' => $prev, - ], - 'stats' => [ - 'all' => count($all), - 'published' => count($published), - 'deleted' => count($deleted), - ], - ]; - } - - public function getContents() - { - // test new contents data class - // $new = (new Contents("../content/pages"))->getAll(); - $contents = (new Contents('../content/pages'))->getAll(); - - return $contents; - } -} diff --git a/brain/data/Contents.php b/brain/data/Contents.php deleted file mode 100644 index db8d3d1..0000000 --- a/brain/data/Contents.php +++ /dev/null @@ -1,193 +0,0 @@ -<?php - -namespace brain\data; - -use HtmlSanitizer\SanitizerBuilder; -use League\CommonMark\MarkdownConverter; -use League\CommonMark\Environment\Environment; -use HtmlSanitizer\Extension\Basic\BasicExtension; -use HtmlSanitizer\Extension\Listing\ListExtension; -use HtmlSanitizer\Extension\Iframe\IframeExtension; -use League\CommonMark\Extension\Table\TableExtension; -use League\CommonMark\Extension\Attributes\AttributesExtension; -use League\CommonMark\Extension\FrontMatter\FrontMatterExtension; -use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; -use League\CommonMark\Extension\Strikethrough\StrikethroughExtension; -use League\CommonMark\Extension\FrontMatter\Output\RenderedContentWithFrontMatter; - -use function _\orderBy; - -class Contents -{ - public $files = []; - public $config = []; - - public function __construct($folder) - { - $this->read($folder); - } - - public function read($folder) - { - $folders = glob("$folder/*", GLOB_ONLYDIR); - foreach ($folders as $folder) { - //$this->files[] = $folder . "/"; - $this->read($folder); - } - $files = array_filter(glob("$folder/*md"), 'is_file'); - foreach ($files as $file) { - $this->files[] = $file; - } - } - - public function getAll() - { - $environment = new Environment($this->config); - $environment->addExtension(new CommonMarkCoreExtension()); - - // Add the extension - $environment->addExtension(new FrontMatterExtension()); - - //Add Strikethrough rendering - $environment->addExtension(new StrikethroughExtension()); - - //add attributes to elements in markdown - $environment->addExtension(new AttributesExtension()); - - //add table rendering - $environment->addExtension(new TableExtension()); - - // Instantiate the converter engine and start converting some Markdown! - $converter = new MarkdownConverter($environment); - - $contents = []; - foreach ($this->files as $file) { - //get meta and html from file - $result = $converter->convertToHtml(file_get_contents($file)); - $meta = []; - if ($result instanceof RenderedContentWithFrontMatter) { - $meta = $result->getFrontMatter(); - } - - //get raw markdown from file - $frontMatterExtension = new FrontMatterExtension(); - $parsed = $frontMatterExtension - ->getFrontMatterParser() - ->parse(file_get_contents($file)); - - //never trust the front end. clean it up - //add what sanitizer extensions we need manually - $builder = new SanitizerBuilder(); - $builder->registerExtension(new BasicExtension()); - $builder->registerExtension(new IframeExtension()); - $builder->registerExtension(new ListExtension()); - //just add it straight because classname is already in use - $builder->registerExtension(new \HtmlSanitizer\Extension\Table\TableExtension()); - - //relative-a and relative-image - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\A\AExtension() - ); - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\Image\ImageExtension() - ); - - $detergent = [ - 'extensions' => ['basic', 'list', 'relative-a', 'relative-image', 'iframe', 'table'], - 'tags' => [ - 'div' => [ - 'allowed_attributes' => ['class', 'title', 'id', 'style'], - ], - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - ], - 'iframe' => [ - 'allowed_attributes' => ['height', 'width', 'title', 'src'], - ], - ], - ]; - - $sanitizer = $builder->build($detergent); - $scrubbed = $sanitizer->sanitize($result->getContent()); - if (isset($meta['feature'])) { - $featureList = explode(',', $meta['feature']); - } else { - $featureList = ""; - } - - $docs = ''; - if (isset($meta['files'])) { - $fileList = explode(',', $meta['files']); - $docs = $meta['files']; - } else { - $fileList = []; - $docs = ''; - } - - $media = []; - $files = []; - if ($featureList != '') { - foreach ($featureList as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - if ($item != null || $item != '') { - array_push($media, ['file' => $item, 'type' => trim($ext)]); - } - } - } - - if ($fileList != "") { - foreach ($fileList as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - if ($item != null || $item != '') { - array_push($files, ['file' => $item, 'type' => trim($ext)]); - } - } - } - - //sort attributes into page object - $page = [ - 'id' => $meta['id'], - 'uuid' => $meta['uuid'], - 'title' => $meta['title'], - 'feature' => $meta['feature'], - 'files' => $docs, - 'path' => $meta['path'], - 'layout' => $meta['layout'], - 'tags' => $meta['tags'], - 'author' => $meta['author'], - 'created' => date('Y M D d', $meta['created']), - 'updated' => date('Y M D d', $meta['updated']), - 'rawCreated' => $meta['created'], - 'rawUpdated' => $meta['updated'], - 'createdYear' => date('Y', $meta['created']), - 'createdMonth' => date('m', $meta['created']), - 'deleted' => $meta['deleted'], - 'menu' => $meta['menu'], - 'featured' => $meta['featured'], - 'published' => $meta['published'], - 'slug' => $meta['slug'], - 'filePath' => $file, - 'content' => $parsed->getContent(), - 'html' => $scrubbed, - 'media' => $media, - 'docs' => $files - ]; - //checks for duplicates - $uuid = $meta['uuid']; - $found = current( - array_filter($contents, function ($item) use ($uuid) { - return isset($item['uuid']) && $uuid == $item['uuid']; - }) - ); - - // if uuid is not present, add it - if (!$found) { - array_push($contents, $page); - } - } - $contents = orderBy($contents, ['id'], ['desc']); - return $contents; - } -} diff --git a/brain/data/Member.php b/brain/data/Member.php deleted file mode 100644 index 31e4cd8..0000000 --- a/brain/data/Member.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -namespace brain\data; - -use Carbon\Carbon; -use brain\utility\DocTools; - -use function _\find; - -class Member -{ - public function __construct() - { - } - - public static function verifyKey(string $key) - { - if (isset($key)) { - $folks = (new Settings())->getFolks(); - $found = find($folks, ['key' => $key]); - if ($found) { - return true; - } else { - return false; - } - } else { - return false; - } - } - - public static function updateData(string $key, string $data, $secret = null) - { - $folks = (new Settings())->getFolks(); - if (isset($secret)) { - $found = find($folks, ['secret' => $secret]); - } else { - $member = Session::get('member'); - $found = find($folks, ['handle' => $member['handle']]); - } - $found[$key] = $data; - //record time updated - $updated = Carbon::now(); - $found['updated'] = $updated->format("Y-m-d\TH:i:sP"); - $newFolks = []; - array_push($newFolks, $found); - //save updated file - DocTools::writeSettings('../config/folks.json', $newFolks); - //update member data in session - - if (!isset($secret)) { - $member = [ - 'handle' => $found['handle'], - 'email' => $found['email'], - 'role' => $found['role'], - 'avatar' => $found['avi'], - 'key' => $found['key'], - ]; - Session::set('member', $member); - } - } -} diff --git a/brain/data/Render.php b/brain/data/Render.php deleted file mode 100644 index df55789..0000000 --- a/brain/data/Render.php +++ /dev/null @@ -1,204 +0,0 @@ -<?php - -namespace brain\data; - -use brain\utility\Sorting; -use brain\utility\DocTools; - -use function _\find; - -class Render -{ - public $loader; - public $twig; - public $pageInfo; - public $menu; - public $background; - - public function __construct() - { - $config = new Settings(); - //TODO: Add theme folder to loader - $settings = $config->getSettings(); - $this->menu = $settings['menu']; - $this->theme = $settings['global']['theme']; - $this->loader = new \Twig\Loader\FilesystemLoader('../content/themes/' . $this->theme); - $this->twig = new \Twig\Environment($this->loader, []); - $this->pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - //move global theme image assets to public folder - foreach ( - new \DirectoryIterator('../content/themes/' . $this->theme . '/assets/images/global/') as $file - ) { - if ($file->isDot()) { - continue; - } - if (!is_file('../public/assets/images/global/' . $file->getFileName())) { - copy( - '../content/themes/' . - $this->theme . - '/assets/images/global/' . - $file->getFileName(), - '../public/assets/images/global/' . $file->getFileName() - ); - } else { - //image is already there, so chill - } - //print $file->getFilename() . "\n"; - } - - //copy current theme assets to public - - //clear files in css and scripts folder - $styles = glob('../public/assets/css/*'); // get all file names - foreach ($styles as $file) { // iterate files - if (is_file($file)) { - //don't erase dashboard css - if (!$file == '../public/assets/css/dash.css') { - unlink($file); // delete file - } - } - } - - $scripts = glob('../public/assets/scripts/*'); // get all file names - foreach ($scripts as $file) { // iterate files - if (is_file($file)) { - if (!$file == '../public/assets/scripts/Start.js') { - unlink($file); // delete file - } - } - } - //copy theme assets to public - $newcss = glob('../content/themes/' . $this->theme . '/assets/css/*'); - foreach ($newcss as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, '../public/assets/css/' . $path[6]); - } - } - $newjs = glob('../content/themes/' . $this->theme . '/assets/scripts/*'); - foreach ($newjs as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, '../public/assets/scripts/' . $path[6]); - } - } - } - - public function renderPages() - { - $pages = (new Book())->getContents(); - $recent = []; - $featured = []; - $limit = 4; - foreach ($pages as $page) { - $pageOptions = Sorting::page($page); - - $layout = $page['layout']; - //new pages have no layout, so defautl for now - if ($layout == '' || $layout == null) { - $layout = 'page'; - } - - $template = $layout . '.twig'; - if (str_contains($layout, 'index')) { - $location = '../public/index.html'; - $dir = null; - } else { - // if page is a menu item, render the page on public root - if ($page['menu'] == 'true') { - $location = '../public/' . $page['slug'] . '.html'; - $dir = '../public/'; - } else { - $location = '../public/' . $page['path'] . '/' . $page['slug'] . '.html'; - $dir = '../public/' . $page['path']; - } - } - - $html = $this->twig->render($template, $pageOptions); - DocTools::writeHTML($location, $html, $dir); - } - } - - public function renderArchive() - { - $archive = Sorting::archive(); - $template = 'archive.twig'; - $pageOptions = [ - 'title' => 'Archive', - 'background' => $this->pageInfo['image'], - 'archives' => $archive, - 'info' => $this->pageInfo, - 'menu' => $this->menu, - 'media' => [['file' => $this->pageInfo['image'], 'type' => trim(pathinfo($this->pageInfo['image'], PATHINFO_EXTENSION))]], - ]; - - $html = $this->twig->render($template, $pageOptions); - $location = '../public/archives.html'; - DocTools::writeHTML($location, $html); - } - - public function renderTags() - { - $list = Sorting::tags(); - foreach ($list as $item) { - $template = 'tags.twig'; - $pageOptions = [ - 'title' => 'Pages Tagged as ' . $item['tag_name'], - 'background' => $this->pageInfo['image'], - 'tag_list' => $item['pages'], - 'info' => $this->pageInfo, - 'menu' => $this->menu, - 'media' => [['file' => $this->pageInfo['image'], 'type' => trim(pathinfo($this->pageInfo['image'], PATHINFO_EXTENSION))]], - ]; - - $html = $this->twig->render($template, $pageOptions); - - $location = '../public/tags/' . $item['slug'] . '.html'; - - //if tags folder doesn't exist, make it - if (!is_dir('../public/tags')) { - mkdir('../public/tags', 0755, true); - } else { - } - - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, 'w')) or die('Unable to open file!'); - fwrite($new, $html); - fclose($new); - } - } - } - - public function renderIndex() - { - //TODO: Need to fix this to account for new index templating system - $pages = (new Book())->getContents(); - $index = find($pages, ['layout' => 'index']); - $template = 'index.twig'; - $location = '../public/index.html'; - $dir = null; - - $meta = [ - 'who' => $index['author'], - 'when' => $index['created'], - ]; - - $pageOptions = [ - 'title' => $index['title'], - 'background' => $index['feature'], - 'meta' => $meta, - ]; - - $html = $this->twig->render($template, $pageOptions); - DocTools::writeHTML($location, $html, $dir); - } -} diff --git a/brain/data/Session.php b/brain/data/Session.php deleted file mode 100644 index a4dbb02..0000000 --- a/brain/data/Session.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -namespace brain\data; - -use ReallySimpleJWT\Token; - -class Session -{ - private static $file = '../content/.session'; - private static $data = [ - 'member' => '', - 'token' => '', - 'form_token' => '', - ]; - - public static function start() - { - if (!is_file(self::$file)) { - file_put_contents(self::$file, json_encode(self::$data)); - } else { - ($new = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($new, json_encode(self::$data)); - fclose($new); - } - } - - public static function active() - { - if (!is_file(self::$file)) { - return false; - } else { - $data = json_decode(file_get_contents(self::$file), true); - if ($data['member'] != null) { - $secret = (new Settings())->getFolks('secret'); - if ($secret == null) { - return false; - } else { - if ( - Token::validate($data['token'], $secret) && - Token::validateExpiration($data['token'], $secret) - ) { - return true; - } else { - return false; - } - } - } else { - return false; - } - } - } - - public static function verifyToken($token) - { - $data = json_decode(file_get_contents(self::$file), true); - if ($data['member'] != null) { - $secret = (new Settings())->getFolks('secret'); - if ( - Token::validate($token, $secret) && - Token::validateExpiration($token, $secret) - ) { - return true; - } else { - return false; - } - } else { - return false; - } - } - - public static function set($key, $value) - { - $data = json_decode(file_get_contents(self::$file), true); - $data[$key] = $value; - ($fresh = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($fresh, json_encode($data)); - fclose($fresh); - } - - public static function get($key) - { - $data = json_decode(file_get_contents(self::$file), true); - - return $data[$key]; - } - - public static function kill() - { - ($fresh = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($fresh, json_encode(self::$data)); - fclose($fresh); - } -} diff --git a/brain/data/Settings.php b/brain/data/Settings.php deleted file mode 100644 index 4b81b99..0000000 --- a/brain/data/Settings.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php - -namespace brain\data; - -use brain\utility\DocTools; -use brain\utility\Sorting; -use Carbon\Carbon; - -use function _\find; -use function _\pull; -use function _\remove; - -class Settings -{ - private $folks; - private static $tags; - private static $settings; - - public function __construct() - { - //gets all settings files and converts to php objects - $this->folks = json_decode(file_get_contents('../config/folks.json'), true); - self::$tags = json_decode(file_get_contents('../config/tags.json'), true); - self::$settings = json_decode( - file_get_contents('../config/settings.json'), - true - ); - } - - public static function sync($data) - { - $settings = self::$settings; - $settings['global']['base_url'] = $data['global']['base_url']; - $settings['global']['title'] = $data['global']['title']; - $settings['global']['descriptions'] = $data['global']['descriptions']; - $settings['global']['base_url'] = $data['global']['base_url']; - $settings['global']['private'] = $data['global']['private']; - $settings['global']['renderOnSave'] = $data['global']['renderOnSave']; - $settings['global']['theme'] = $data['global']['theme']; - $settings['global']['externalAPI'] = $data['global']['externalAPI']; - $settings['global']['dynamicRender'] = $data['global']['dynamicRender']; - - Member::updateData('handle', $data['member']['handle']); - Member::updateData('email', $data['member']['email']); - - $settings['email']['active'] = $data['email']['active']; - $settings['email']['smtp'] = $data['email']['smtp']; - $settings['email']['mailgun'] = $data['email']['mailgun']; - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function navSync($data) - { - $settings = self::$settings; - - $remove = $data['remove']; - //if remove contains id, find nav item page and set menu to false - if ($remove != null || $remove != '') { - $page = (new Book('../content/pages'))->findPageById($remove); - $page['menu'] = 'false'; - $page['published'] - ? ($page['published'] = 'true') - : ($page['published'] = 'false'); - $page['featured'] - ? ($page['featured'] = 'true') - : ($page['featured'] = 'false'); - $page['deleted'] - ? ($page['deleted'] = 'true') - : ($page['deleted'] = 'false'); - $updated = Carbon::now(); - $created = new Carbon($page['rawCreated']); - $page['created'] = $created->format("Y-m-d\TH:i:sP"); - $page['updated'] = $updated->format("Y-m-d\TH:i:sP"); - - $md = DocTools::objectToMD($page); - - if ($page['layout'] == 'index') { - $writePath = '../content/pages/start/index.md'; - } else { - $writePath = '../content/pages/' . $page['path'] . '/' . $page['slug'] . '.md'; - } - - DocTools::writePages('write', $page['path'], $writePath, $md); - } - - $settings['menu'] = []; - $items = $data['menu']; - foreach ($items as $item) { - array_push($settings['menu'], [ - 'title' => $item['title'], - 'id' => $item['id'], - 'uuid' => $item['uuid'], - 'slug' => $item['slug'], - 'path' => $item['path'], - ]); - } - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public function getFolks($key = null) - { - if (isset($key)) { - $member = Session::get('member'); - $found = find($this->folks, ['handle' => $member['handle']]); - if ($found) { - return $found[$key]; - } - } else { - return $this->folks; - } - } - - public function getSettings($key = null) - { - return self::$settings; - } - - public static function getTags() - { - return self::$tags; - } - - public static function updateGlobalData($key, $data) - { - $settings = self::$settings; - $settings['global'][$key] = $data; - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function getCurrentIndex() - { - $settings = self::$settings; - return $settings['library_stats']['current_index']; - } - - public static function updateIndex() - { - $settings = self::$settings; - - $settings['library_stats']['current_index'] = $settings['library_stats']['current_index'] + 1; - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function updateMenu($body) - { - $settings = self::$settings; - //$menu = $settings["menu"]; - $item = [ - 'title' => $body['title'], - 'id' => $body['id'], - 'uuid' => $body['uuid'], - 'slug' => $body['slug'], - 'path' => $body['path'], - ]; - if ($body['menu'] == 'true') { - if (!find($settings['menu'], ['uuid' => $item['uuid']])) { - array_push($settings['menu'], $item); - } - } else { - if (find($settings['menu'], ['uuid' => $item['uuid']])) { - pull($settings['menu'], $item); - } - } - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function updateTags() - { - $tags = Sorting::tags(); - DocTools::writeSettings('../config/tags.json', $tags); - } -} diff --git a/brain/data/Themes.php b/brain/data/Themes.php deleted file mode 100644 index b82c336..0000000 --- a/brain/data/Themes.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -namespace brain\data; - -class Themes -{ - private $themes = []; - - public function __construct() - { - $_themes = glob('../content/themes/*', GLOB_ONLYDIR); - foreach ($_themes as $theme) { - array_push( - $this->themes, - json_decode(file_get_contents($theme . '/theme.json'), true) - ); - } - } - - public function getThemes() - { - return $this->themes; - } - - public function getCustomIndex() - { - $settings = (new Settings())->getSettings(); - $currentTheme = $settings['global']['theme']; - $folder = '../content/themes/' . $currentTheme; - $files = array_filter(glob("$folder/*twig"), 'is_file'); - $views = []; - - foreach ($files as $file) { - $path = explode('/', $file); - $fileName = $path[4]; - if (str_contains($fileName, 'index')) { - $page = explode('.', $fileName); - $views[] = $page[0]; - } - } - return $views; - } - - public function getCustomViews() - { - $settings = (new Settings())->getSettings(); - $currentTheme = $settings['global']['theme']; - $folder = '../content/themes/' . $currentTheme; - $files = array_filter(glob("$folder/*twig"), 'is_file'); - $views = []; - - foreach ($files as $file) { - $path = explode('/', $file); - $fileName = $path[4]; - if (str_contains($fileName, 'page')) { - $page = explode('.', $fileName); - $views[] = $page[0]; - } - } - return $views; - } -} diff --git a/brain/init/App.php b/brain/init/App.php deleted file mode 100644 index 8b0d650..0000000 --- a/brain/init/App.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -namespace brain\init; - -use brain\utility\HandleCors; -use Slim\Factory\AppFactory; -use Slim\Views\Twig; -use Slim\Views\TwigMiddleware; - -class App -{ - public function __construct() - { - // when a new class is made, run composer dump-autoload - // set up cors - new HandleCors(); - $app = AppFactory::create(); - $twig = Twig::create('../brain/views/'); - $app->add(TwigMiddleware::create($app, $twig)); - // set up routing - $app->get( - '/[{first}[/{second}[/{third}[/{fourth}[/{fifth}]]]]]', - "brain\controller\RouteControl:get" - ); - $app->post( - '/[{first}[/{second}[/{third}[/{fourth}]]]]', - "brain\controller\RouteControl:post" - ); - // start the app - - $app->run(); - } -} diff --git a/brain/utility/DocTools.php b/brain/utility/DocTools.php deleted file mode 100644 index 1dd9dfd..0000000 --- a/brain/utility/DocTools.php +++ /dev/null @@ -1,144 +0,0 @@ -<?php - -namespace brain\utility; - -class DocTools -{ - public function __construct() - { - } - - public static function writePages($task, $path, $fileLocation, $fileContents) - { - try { - if ($task == 'create') { - if (!is_dir('../content/pages/' . $path)) { - //Directory does not exist, so lets create it. - mkdir('../content/pages/' . $path, 0755, true); - } - file_put_contents($fileLocation, $fileContents); - } else { - ($new = fopen($fileLocation, 'w')) or die('Unable to open file!'); - fwrite($new, $fileContents); - fclose($new); - } - - return true; - } catch (Error $error) { - return false; - } - } - - public static function writeSettings($fileLocation, $fileContents) - { - if (!is_file($fileLocation)) { - file_put_contents($fileLocation, json_encode($fileContents)); - } else { - ($new = fopen($fileLocation, 'w')) or die('Unable to open file!'); - fwrite($new, json_encode($fileContents)); - fclose($new); - } - } - - public static function writeHTML($location, $html, $path = null) - { - if ($path != null) { - if (!is_dir($path)) { - //Directory does not exist, so lets create it. - mkdir($path, 0755, true); - } - } - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, 'w')) or die('Unable to open file!'); - fwrite($new, $html); - fclose($new); - } - } - - public static function deleteFolder($path) - { - if (!empty($path) && is_dir($path)) { - $dir = new \RecursiveDirectoryIterator( - $path, - \RecursiveDirectoryIterator::SKIP_DOTS - ); //upper dirs are not included,otherwise DISASTER HAPPENS :) - $files = new \RecursiveIteratorIterator( - $dir, - \RecursiveIteratorIterator::CHILD_FIRST - ); - foreach ($files as $f) { - if (is_file($f)) { - unlink($f); - } else { - $empty_dirs[] = $f; - } - } - if (!empty($empty_dirs)) { - foreach ($empty_dirs as $eachDir) { - rmdir($eachDir); - } - } - rmdir($path); - } - } - - public static function objectToMD($object) - { - $markdown = "---\n" . - 'id: ' . - $object['id'] . - "\n" . - 'uuid: ' . - $object['uuid'] . - "\n" . - 'title: ' . - "'" . - $object['title'] . - "'" . - "\n" . - 'feature: ' . - $object['imageList'] . - "\n" . - 'files: ' . - $object['fileList'] . - "\n" . - 'path: ' . - $object['path'] . - "\n" . - 'layout: ' . - $object['layout'] . - "\n" . - 'tags: ' . - $object['tags'] . - "\n" . - 'author: ' . - $object['author'] . - "\n" . - 'created: ' . - $object['created'] . - "\n" . - 'updated: ' . - $object['updated'] . - "\n" . - 'deleted: ' . - $object['deleted'] . - "\n" . - 'slug: ' . - $object['slug'] . - "\n" . - 'menu: ' . - $object['menu'] . - "\n" . - 'published: ' . - $object['published'] . - "\n" . - 'featured: ' . - $object['featured'] . - "\n---\n" . - $object['content']; - - return $markdown; - } -} diff --git a/brain/utility/FileUploader.php b/brain/utility/FileUploader.php deleted file mode 100644 index 6790f4a..0000000 --- a/brain/utility/FileUploader.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace brain\utility; - -class FileUploader -{ - public static function uploadFile(string $directory, $file) - { - $response = []; - try { - if (!is_dir($directory)) { - // Directory does not exist, so lets create it. - mkdir($directory, 0755, true); - } - // $upload = move_uploaded_file($file->getClientFileName(), $directory); - // $extension = pathinfo($file->getClientFilename(), PATHINFO_EXTENSION); - - // see http://php.net/manual/en/function.random-bytes.php - // $basename = bin2hex(random_bytes(8)); - // $filename = sprintf("%s.%0.8s", $basename, $extension); - - // echo "**FILE** " . $file->getClientFileName(); - - $file->moveTo($directory . '/' . urlencode($file->getClientFileName())); - } catch (RuntimeException $e) { - echo 'ERROR ' . $e->getMessage(); - - // echo "failed to upload image: " . $e->getMessage(); - // throw new Error("Failed to upload image file"); - } - } -} diff --git a/brain/utility/HandleCors.php b/brain/utility/HandleCors.php deleted file mode 100644 index 78207e4..0000000 --- a/brain/utility/HandleCors.php +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -namespace brain\utility; - -use brain\data\Settings; - -class HandleCors -{ - public function __construct() - { - //look to see if settings file exists. kinda important - if (file_exists('../config/settings.json')) { - //check settings to see if external api access is allowed - $config = new Settings(); - $settings = $config->getSettings(); - if ($settings['global']['externalAPI']) { - //echo "API STATUS: " . $settings["global"]["externalAPI"]; - if ($settings['global']['externalAPI'] == 'true') { - //echo "API ACCESS ACTIVE"; - // checks to see if origin is set - if (isset($_SERVER['HTTP_ORIGIN'])) { - // You can decide if the origin in $_SERVER['HTTP_ORIGIN'] - //is something you want to allow, or as we do here, just allow all - header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); - } else { - //No HTTP_ORIGIN set, so we allow any. You can disallow if needed here - //never allow just any domain, so turn CORS off if no No HTTP_ORIGIN is set - //header("Access-Control-Allow-Origin: *"); - } - - header('Access-Control-Allow-Credentials: true'); - header('Access-Control-Max-Age: 600'); // cache for 10 minutes - - if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { - if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) { - header( - 'Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT' - ); - } //Make sure you remove those you do not want to support - - if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) { - header( - "Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}" - ); - } - - //Just exit with 200 OK with the above headers for OPTIONS method - exit(0); - } - } else { - //echo "API ACCESS ACTIVE"; - } - } else { - //value doesn't exist, so whatevs - //echo "API ACCESS VALUE NOT PRESENT"; - } - } else { - //init state, so chill - } - } -} diff --git a/brain/utility/Mailer.php b/brain/utility/Mailer.php deleted file mode 100644 index 1c4afa1..0000000 --- a/brain/utility/Mailer.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -namespace brain\utility; - -use PHPMailer\PHPMailer\PHPMailer; -use PHPMailer\PHPMailer\Exception; -use brain\data\Settings; -use brain\data\Session; - -class Mailer -{ - public static function sendMail($body) - { - $config = new Settings(); - $settings = $config->getSettings(); - $mailConfig = $settings['email']; - $mail = new PHPMailer(); - - switch ($body['mail_task']) { - case 'TESTING': - $html = "<h1>Hi! It's Fipamo!</h1><br>" . - "<strong>It's just a test</strong><br>" . - $body['content']; - $member = Session::get('member'); - $mail->addAddress($member['email'], ''); //pull email address from current user - $mail->Subject = 'A test email'; - break; - case 'SEND_SECRET': - $html = "<h1>Hi! It's Fipamo!</h1><br>" . - '<strong>This is your secret key.</strong><br><br>' . - '<h3>' . - $body['secret'] . - '</h3>' . - '<br> Use this key to reset your password.'; - $mail->addAddress($body['email'], ''); //pull email address from current user - $mail->Subject = "Shhhh! It's a secret!"; - break; - default: - return $result = [ - 'type' => 'noMailService', - 'message' => 'Mail task is undefined. What are you doing??', - ]; - break; - } - - //set values based on current active protocol - switch ($mailConfig['active']) { - case 'option-smtp': - $mail->setFrom($mailConfig['smtp']['email'], 'System Email'); - $mail->Host = 'playvicio.us'; - $mail->Username = $mailConfig['smtp']['email']; - $mail->Password = $mailConfig['smtp']['password']; - - break; - case 'option-mg': - $mail->setFrom($mailConfig['mailgun']['domain'], 'No Reply'); - $mail->Host = 'smtp.mailgun.org'; - $mail->Username = $mailConfig['mailgun']['domain']; - $mail->Password = $mailConfig['mailgun']['key']; - break; - default: - //no mail service - return $result = [ - 'type' => 'noMailService', - 'message' => 'Mail is not configured. Handle that.', - ]; - break; - } - - $mail->Body = $html; - $mail->IsHTML(true); - $mail->isSMTP(); - $mail->SMTPAuth = true; - $mail->SMTPSecure = 'ssl'; - $mail->Port = 465; - - // Uncomment for debug info - //$mail->SMTPDebug = 4; - - /* Finally send the mail. */ - try { - $mail->send(); - $result = ['type' => 'mailSent', 'message' => 'Message Away!']; - } catch (Exception $e) { - //echo $e->errorMessage(); - $result = [ - 'type' => 'mailNotSent', - 'message' => 'Message Not Away!', - 'error' => $e->errorMessage(), - ]; - } - - return $result; - } -} diff --git a/brain/utility/Maintenance.php b/brain/utility/Maintenance.php deleted file mode 100644 index 764a274..0000000 --- a/brain/utility/Maintenance.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -namespace brain\utility; - -use brain\data\Settings; -use Carbon\Carbon; - -class Maintenance -{ - public function __construct() - { - } - - public static function makeBackup() - { - //make sure back directory is there - if (!is_dir('../config/backups')) { - mkdir('../config/backups', 0755, true); - } - //creat backup zip - $zip = new \ZipArchive(); - $zip->open( - '../config/backups/latest_back.zip', - \ZipArchive::CREATE | \ZipArchive::OVERWRITE - ); - //gather data and path info for md pages - $pagePath = '../content/pages'; - $yearPaths = glob($pagePath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - //grap the index and save it - if (trim($year[3]) == 'start') { - $options = [ - 'add_path' => 'content/pages/' . $year[3] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($years . '/*.md', GLOB_BRACE, $options); - } - $monthsPath = glob($pagePath . '/' . $year[3] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add md pages to zip - $options = [ - 'add_path' => 'content/pages/' . $year[3] . '/' . $month[4] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.md', GLOB_BRACE, $options); - } - } - - //gather data and path info for blog images - $blogImagesPath = '../public/assets/images/blog'; - $yearPaths = glob($blogImagesPath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - $monthsPath = glob($blogImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add images pages to zip - $options = [ - 'add_path' => 'public/assets/images/blog/' . $year[5] . '/' . $month[6] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.*', GLOB_BRACE, $options); - } - } - - //gather data and path info for user images - $userImagesPath = '../public/assets/images/user'; - $yearPaths = glob($userImagesPath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - $monthsPath = glob($userImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add images pages to zip - $options = [ - 'add_path' => 'public/assets/images/user/' . $year[5] . '/' . $month[6] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.*', GLOB_BRACE, $options); - } - } - - //add directory for settings and save them - $zip->addEmptyDir('settings'); - $zip->addFile('../config/settings.json', 'settings/settings.json'); - $zip->addFile('../config/folks.json', 'settings/folks.json'); - $zip->addFile('../config/tags.json', 'settings/tags.json'); - //save zip file - $zip->close(); - - //update settings file with latest back up date - $updated = Carbon::now(); - Settings::updateGlobalData( - 'last_backup', - $updated->format("Y-m-d\TH:i:sP") - ); - - $result = ['message' => 'Backup created. THIS IS A SAFE SPACE!']; - return $result; - } -} diff --git a/brain/utility/Setup.php b/brain/utility/Setup.php deleted file mode 100644 index 128f06e..0000000 --- a/brain/utility/Setup.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php - -namespace brain\utility; - -use Carbon\Carbon; - -use function _\find; - -class SetUp -{ - public static function status() - { - if (file_exists('../config/settings.json')) { - return true; - } else { - return false; - } - } - - public static function init($body) - { - //grab template files - $newFolks = json_decode( - file_get_contents('../config/init/folks-template.json'), - true - ); - $newSettings = json_decode( - file_get_contents('../config/init/settings-template.json'), - true - ); - //get form values - //$body = $request->getParsedBody(); - $handle = $body['new_member_handle']; - $email = $body['new_member_email']; - $pass = $body['new_member_pass']; - $title = $body['new_member_title']; - - $now = Carbon::now(); - //setup folks config - $hash = password_hash($pass, PASSWORD_DEFAULT); - $newFolks[0]['id'] = 0; - $newFolks[0]['handle'] = $handle; - $newFolks[0]['email'] = $email; - $newFolks[0]['password'] = $hash; - $newFolks[0]['key'] = password_hash($email, PASSWORD_DEFAULT); - $newFolks[0]['secret'] = StringTools::randomString(12); - $newFolks[0]['role'] = 'hnic'; - $newFolks[0]['created'] = $now->format("Y-m-d\TH:i:sP"); - $newFolks[0]['updated'] = $now->format("Y-m-d\TH:i:sP"); - //set up settings config - $newSettings['global']['title'] = $title; - - //create index file - //$rightNow = $now->format("Y-m-d\TH:i:sP"); - //var_dump($now->format("Y-m-d\TH:i:sP")); - $index = [ - 'id' => 1, - 'uuid' => StringTools::createUUID(), - 'title' => 'FIRST!', - 'imageList' => '/assets/images/global/default-bg.jpg', - 'fileList' => '', - 'path' => 'content/pages/start', - 'layout' => 'index', - 'tags' => 'start, welcome', - 'author' => $handle, - 'created' => $now->format("Y-m-d\TH:i:sP"), - 'updated' => $now->format("Y-m-d\TH:i:sP"), - 'deleted' => 'false', - 'slug' => 'first', - 'menu' => 'false', - 'featured' => 'false', - 'published' => 'true', - 'content' => "# F**k Yes \n\nIf you're seeing this, you're up and running. NICE WORK!\n\nFrom here, feel free to start dropping pages to your heart's content.\n\nFor some tips about using Fipamo, check out the \n\nAll good? Feel free to edit this page to whatever you want!\n\nYOU'RE THE CAPTAIN NOW.", - ]; - - $freshIndex = DocTools::objectToMD($index); - - //once all files created, write down - - DocTools::writeSettings('../config/settings.json', $newSettings); - DocTools::writeSettings('../config/folks.json', $newFolks); - DocTools::writeSettings('../config/tags.json', []); - DocTools::writePages( - 'create', - 'start', - '../content/pages/start/index.md', - $freshIndex - ); - - //if there is an older session file, get rid of it - if (is_file('../content/.session')) { - unlink('../content/.session'); - } - - $result = ['type' => 'blogInitGood', 'message' => 'Site Created']; - - return $result; - } - - public static function restore($request) - { - $result = [ - 'type' => 'requestLame', - 'message' => 'Still working on it.', - ]; - $body = $request->getParsedBody(); - - $backup = $request->getUploadedFiles(); - $file = $backup['backup-upload']; - //NOTE: If this fails check 'post_max_size' in php.ini - $size = $file->getSize(); - $name = $file->getClientFileName(); - - //park it so it can be read - $file->moveTo('../content' . '/' . $name); - - //open it and get files to verify user - $zip = new \ZipArchive(); - if ($zip->open('../content' . '/' . $name) === true) { - $folks = json_decode($zip->getFromName('settings/folks.json'), true); - $found = find($folks, ['handle' => $body['restore_member_handle']]); - - //if member is found in back up, check pass - if ($found) { - if (password_verify($body['restore_member_pass'], $found['password'])) { - //backup verified, restore site - - //set new secret key for older folks configs - $newFolks = []; - if (!isset($found['secret'])) { - $found['secret'] = StringTools::randomString(12); - } - array_push($newFolks, $found); - //dump files in folder - $zip->extractTo('../content'); - - //move to appropriate spots - /* - rename( - "../content/settings/settings.json", - "../config/settings.json" - ); - */ - - //load up old config file - $newConfig = json_decode( - file_get_contents('../content/settings/settings.json'), - true - ); - //check for key, add if not there - if (!isset($newConfig['global']['externalAPI'])) { - $newConfig['global']['externalAPI'] = 'false'; - } - //write new config file - DocTools::writeSettings('../config/settings.json', $newConfig); - - //rename("../content/settings/folks.json", "../config/folks.json"); - DocTools::writeSettings('../config/folks.json', $newFolks); - - rename('../content/settings/tags.json', '../config/tags.json'); - - //images path for blog and user - $blogImagePath = '../public/assets/images/blog'; - $userImagePath = '../public/assets/images/user'; - - //check to see if image dirs are empty, if not chill - if ($globs = glob($blogImagePath . '/*')) { - //directory not empty, relax - } else { - rename('../content/public/assets/images/blog', $blogImagePath); - } - - if ($globs = glob($userImagePath . '/*')) { - //directory not empty, relax - } else { - rename('../content/public/assets/images/user', $userImagePath); - } - - rename('../content/content/pages/', '../content/pages'); - - //legacy check for old file structure - if (is_file('../content/pages/index.md')) { - if (!is_dir('../content/pages/start')) { - //Directory does not exist, so lets create it. - mkdir('../content/pages/start', 0755, true); - //move start page to appropriate spot - rename( - '../content/pages/index.md', - '../content/pages/start/index.md' - ); - } - } else { - //chill - } - - //clean up - - DocTools::deleteFolder('../content/settings'); - DocTools::deleteFolder('../content/public'); - DocTools::deleteFolder('../content/content'); - $result = [ - 'type' => 'requestGood', - 'message' => 'Site Restored! Redirecting', - ]; - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'Check that password, champ.', - ]; - } - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'No member found by that name, hoss', - ]; - } - - $zip->close(); - $zipPath = '../content/' . $name; - //trash zip when done - unlink($zipPath); - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'Could not open backup. RATS!', - ]; - } - return $result; - } -} diff --git a/brain/utility/Sorting.php b/brain/utility/Sorting.php deleted file mode 100644 index e22dfdc..0000000 --- a/brain/utility/Sorting.php +++ /dev/null @@ -1,269 +0,0 @@ -<?php - -namespace brain\utility; - -use brain\data\Book; -use brain\data\Settings; -use Mni\FrontYAML\Parser; - -use function _\filter; -use function _\find; - -class Sorting -{ - private static $p_tags = []; - private static $p_archive = []; - - public function __construct() - { - } - - public static function tags() - { - $pages = (new Book('../content/pages'))->getContents(); - foreach ($pages as $page) { - $temp = []; - if (isset($page['tags'])) { - $temp = explode(',', $page['tags']); - foreach ($temp as $tag) { - $label = trim($tag); - if (!find(self::$p_tags, ['tag_name' => $label])) { - array_push(self::$p_tags, [ - 'tag_name' => $label, - 'slug' => StringTools::safeString($label), - 'pages' => self::tagPages($label, $pages), - ]); - } - } - } - } - - return self::$p_tags; - } - - private static function tagPages($tag, $pages) - { - $tagged = []; - foreach ($pages as $page) { - if (isset($page['tags'])) { - if (strpos($page['tags'], $tag) !== false) { - array_push($tagged, [ - 'title' => $page['title'], - 'slug' => $page['slug'], - 'path' => $page['path'], - 'feature' => $page['feature'], - ]); - } - } - } - - return $tagged; - } - - public static function archive() - { - $pages = (new Book('../content/pages'))->getContents(); - $years = []; - $archive = []; - foreach ($pages as $page) { - // $year = date("Y", date($page["rawCreated"])); - $date = explode('/', $page['path']); - // echo $page["title"] . " : " . $year . "\n"; - if (!find($years, ['year' => trim($date[0])])) { - $findPages = filter($pages, ['createdYear' => trim($date[0])]); - // var_dump($findPages); - array_push( - $years, - [ - 'year' => trim($date[0]), - 'count' => count($findPages), - ] - ); - } - } - foreach ($years as $year) { - $sorted = []; - $filtered = filter($pages, ['createdYear' => $year['year']]); - - foreach ($filtered as $obj) { - $month = date('m', date($obj['rawCreated'])); - if (!find($sorted, ['month' => $month])) { - $perMonth = filter( - $pages, - [ - 'path' => $year['year'] . '/' . $month, - 'deleted' => false, - 'published' => true, - 'layout' => 'page', - ] - ); - array_push($sorted, [ - 'month' => $month, - 'full_month' => date('F', date($obj['rawCreated'])), - 'count' => count($perMonth), - 'pages' => $perMonth, - ]); - } - } - array_push(self::$p_archive, [ - 'year' => $year['year'], - 'year_data' => $sorted, - ]); - } - - return self::$p_archive; - } - - public static function page($page) - { - $config = new Settings(); - $settings = $config->getSettings(); - $pageOption = []; - - $pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - $tags = []; - if (isset($page['tags'])) { - $taglist = explode(',', $page['tags']); - foreach ($taglist as $tag) { - $label = trim($tag); - array_push($tags, [ - 'label' => $label . ' ', - 'slug' => StringTools::safeString($label), - ]); - } - } - - $meta = [ - 'who' => $page['author'], - 'when' => $page['created'], - 'tags' => $tags, - ]; - - // render markdown content and clean it - $parser = new Parser(); - $rendered = $parser->parse($page['content']); - $sanitizer = \HtmlSanitizer\Sanitizer::create([ - 'extensions' => ['basic', 'image', 'list', 'code'], - 'tags' => [ - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - 'allowed_hosts' => null, - ], - ], - ]); - - $preclean = $sanitizer->sanitize($rendered->getContent()); - - // just clean renderd string for now, Sanitize doesn't like relative img urls - // so another option is needed - $cleaned = strip_tags($rendered->getContent(), [ - 'a', - 'br', - 'p', - 'strong', - 'br', - 'img', - 'iframe', - 'ul', - 'li', - 'i', - 'em', - 'h1', - 'h2', - 'h3', - 'pre', - 'code', - ]); - - // if page feature isn't empty, find image from list and set it as background image - // if it is empty, just use global background - if ($page['feature'] != '' || $page['feature'] != null) { - $media = explode(',', $page['feature']); - $set = false; - foreach ($media as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - - if ($ext != 'mp4' && !$set) { - $pageInfo['image'] = $pageInfo['baseURL'] . $item; - $set = true; - } - } - } - - if ($page['layout'] == 'index') { - // $template = $this->theme . "/index.twig"; - // $location = "../public/index.html"; - // $dir = null; - - $recent = []; - $featured = []; - $limit = 4; - $pages = (new Book())->getContents(); - foreach ($pages as $item) { - if (!$item['deleted'] && - $item['published'] && - $item['menu'] != 'true' - ) { - if (count($recent) < $limit) { - array_push($recent, [ - 'path' => $item['path'], - 'slug' => $item['slug'], - 'title' => $item['title'], - 'feature' => $item['feature'], - ]); - } - - if ($item['featured'] == true) { - if (count($featured) < $limit) { - array_push($featured, [ - 'path' => $item['path'], - 'slug' => $item['slug'], - 'title' => $item['title'], - 'feature' => $item['feature'], - ]); - } - } - } - } - - $pageOptions = [ - 'title' => $page['title'], - 'background' => $page['feature'], - 'content' => $page['html'], // $cleaned, - 'meta' => $meta, - 'recent' => $recent, - 'featured' => $featured, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - 'media' => $page['media'], - 'files' => $page['docs'], - ]; - } else { - // $template = $this->theme . "/page.twig"; - // $location = "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; - // $dir = "../public/" . $page["path"]; - $pageOptions = [ - 'title' => $page['title'], - 'background' => $page['feature'], - 'content' => $page['html'], // $cleaned, - 'meta' => $meta, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - 'media' => $page['media'], - 'files' => $page['docs'], - ]; - } - - return $pageOptions; - } -} diff --git a/brain/utility/StringTools.php b/brain/utility/StringTools.php deleted file mode 100644 index 76ae2ac..0000000 --- a/brain/utility/StringTools.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - -namespace brain\utility; - -use ReallySimpleJWT\Token; -use ReallySimpleJWT\Exception\BuildException; -use Mni\FrontYAML\Parser; - -class StringTools -{ - public static function createUUID() - { - if (function_exists('com_create_guid') === true) { - return trim(com_create_guid(), '{}'); - } - - return sprintf( - '%04X%04X-%04X-%04X-%04X-%04X%04X%04X', - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(16384, 20479), - mt_rand(32768, 49151), - mt_rand(0, 65535), - mt_rand(0, 65535), - mt_rand(0, 65535) - ); - } - - public static function sanitizeContent($entry) - { - $parser = new Parser(); - $rendered = $parser->parse($entry); - $sanitizer = HtmlSanitizer\Sanitizer::create([ - 'extensions' => ['basic', 'image', 'list', 'code'], - 'tags' => [ - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - 'allowed_hosts' => null, - ], - ], - ]); - - $preclean = $sanitizer->sanitize($rendered->getContent()); - - $cleaned = strip_tags($rendered->getContent(), [ - 'a', - 'br', - 'p', - 'strong', - 'br', - 'img', - 'iframe', - 'ul', - 'li', - 'i', - 'h1', - 'h2', - 'h3', - 'pre', - 'code', - ]); - - return $cleaned; - } - - public static function safeString($string) - { - return strtolower( - trim( - preg_replace( - '~[^0-9a-z]+~i', - '_', - html_entity_decode( - preg_replace( - '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', - '$1', - htmlentities($string, ENT_QUOTES, 'UTF-8') - ), - ENT_QUOTES, - 'UTF-8' - ) - ), - '-' - ) - ); - } - - public static function randomString(int $length) - { - $alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - $special = '*&!@%^#$'; - $alphabet = $alphanum . $special; - $random = openssl_random_pseudo_bytes($length); - $alphabet_length = strlen($alphabet); - $string = ''; - for ($i = 0; $i < $length; ++$i) { - $string .= $alphabet[ord($random[$i]) % $alphabet_length]; - } - - //secret needs to be a valid token - if ($length == 12) { - try { - $secret = Token::create(12, $string, time() + 3600, 'localhost'); - return $string; - } catch (BuildException $e) { - //bad secret, so try agiain - //echo "BAD STRING"; - return self::randomString(12); - } - - if (Token::validate($key, $string)) { - return $string; - } else { - return self::randomString(12); - } - } - } - - private static function checkSpecial($string) - { - $specials = ['*', '&', '!', '@', '%', '^', '#', '$']; - $valid = false; - foreach ($specials as $item) { - if (strpos($string, $item)) { - return $valid = true; - } - } - return $valid; - } -} diff --git a/brain/views/dash/_frame.twig b/brain/views/dash/_frame.twig deleted file mode 100644 index 5da247a..0000000 --- a/brain/views/dash/_frame.twig +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <meta name="theme-color" content="#1d3040"/> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title> - {% block title %} - {{ title }} - {% endblock %} - </title> - {% block stylesheets %}{% endblock %} - </head> - <body> - {% if status %} - <header> - {% apply spaceless %} - <nav class="top-nav"> - <a href="/dashboard"><img id="the-logo" src="/assets/images/global/fipamo-logo.svg"/></a> - <h1>{{ title }}</h1> - <div class="nav-right"> - {% if status %} - {% apply spaceless %} - {{ include("dash/partials/navigation.twig") }} - {% endapply %} - {% endif %} - </div> - </nav> - <div class="notify" role="note"> - {% apply spaceless %} - {{ include("dash/partials/notifications.twig") }} - {% endapply %} - </div> - {% endapply %} - {% endif %} - </header> - <main> - {% apply spaceless %} - {% block mainContent %}{% endblock %} - {% endapply %} - </main> - <footer></footer> - <script type="module" src="/assets/scripts/dash.js"></script> - </body> -</html> diff --git a/brain/views/dash/book.twig b/brain/views/dash/book.twig deleted file mode 100644 index 07d40f8..0000000 --- a/brain/views/dash/book.twig +++ /dev/null @@ -1,80 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css?=vdthg"> - {% endblock %} - - {% block mainContent %} - <section role="book-index-header"> - <div role="book-index-header-left"> - {{ filter }} - Pages - </div> - <div role="book-index-header-right"> - <a href="/dashboard/pages/all" title="view all pages"> - <button> - <i class="ti ti-clipboard-list"></i> - {{ stats['all'] }} - </button> - </a> - <a href="/dashboard/pages/published" title="view publised pages"> - <button> - <i class="ti ti-clipboard-check"></i> - {{ stats['published'] }} - </button> - </a> - <a href="/dashboard/pages/deleted" title="view deleted pages"> - <button> - <i class="ti ti-clipboard-off"></i> - {{ stats['deleted'] }} - </button> - </a> - </section> - <section role="book-index-pages"> - {% for page in pages %} - {% if page.media[0].type == 'mp4' %} - <a href="/dashboard/page/edit/{{ page.uuid }}" id="{{ page.uuid }}" class="page-link"> - <div class="page-video"> - <video class="post-video" loop muted autoplay> - <source src="{{ page.media[0].file }}" type="video/mp4"> - - Sorry, your browser doesn't support embedded videos. - </video> - <div id="meta"> - {{ include("dash/partials/recent-meta.twig") }} - </div> - </div> - </a> - {% else %} - <a class="page-link" href="/dashboard/page/edit/{{ page.uuid }}"> - <div class="page-bg" style="background: url({{ page.media[0].file }}) no-repeat center center / cover #fc6399"> - <div id="meta"> - {{ include("dash/partials/recent-meta.twig") }} - </div> - </div> - </a> - {% endif %} - - {% endfor %} - {% if numOfPages > 1 %} - <div role="paginate"> - <a class="page-btns" href="/dashboard/pages/{{ paginate['sort'] }}/{{ paginate['prevPage'] }}"> - <i class="ti ti-square-arrow-left"></i> - </a> - <span class="count"> - {{ currentPage }} - of - {{ numOfPages }} - </span> - <a class="page-btns" href="/dashboard/pages/{{ paginate['sort'] }}/{{ paginate['nextPage'] }}"> - <i class="ti ti-square-arrow-right"></i> - </a> - </div> - {% endif %} - - </section> - {% endblock %} diff --git a/brain/views/dash/email.twig b/brain/views/dash/email.twig deleted file mode 100644 index 0fc58cb..0000000 --- a/brain/views/dash/email.twig +++ /dev/null @@ -1,120 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> - <meta name='viewport' content='width=device-width, initial-scale=1.0' /> - <title> - {{title}} - </title> - <style type="text/css"> - /* reset */ - #outlook a { - padding: 0; - } - /* Force Outlook to provide a "view in browser" menu link. */ - .ExternalClass { - width: 100%; - } - /* Force Hotmail to display emails at full width */ - .ExternalClass, - .ExternalClass p, - .ExternalClass span, - .ExternalClass font, - .ExternalClass td, - .ExternalClass div { - line-height: 100%; - } - /* Forces Hotmail to display normal line spacing. More on that: http://www.emailonacid.com/forum/viewthread/43/ */ - p { - margin: 0; - padding: 0; - font-size: 0px; - line-height: 0px; - } - /* squash Exact Target injected paragraphs */ - table td { - border-collapse: collapse; - } - /* Outlook 07, 10 padding issue fix */ - table { - border-collapse: collapse; - mso-table-lspace: 0pt; - mso-table-rspace: 0pt; - } - /* remove spacing around Outlook 07, 10 tables */ - /* bring inline */ - img { - display: block; - outline: none; - text-decoration: none; - -ms-interpolation-mode: bicubic; - } - a img { - border: none; - } - a { - text-decoration: none; - color: #000001; - } - /* text link */ - a.phone { - text-decoration: none; - color: #000001 !important; - pointer-events: auto; - cursor: default; - } - /* phone link, use as wrapper on phone numbers */ - span { - font-size: 13px; - line-height: 17px; - font-family: monospace; - color: #000001; - } - - </style> - </head> - <body> - <table cellpadding='0' cellspacing='0' border='0' style="margin:0; padding:0; width:100%; line-height: 100% !important;"> - <tr> - <td valign='top'> - {# edge wrapper #} - <table cellpadding='0' cellspacing='0' border='0' align='center' width='600' style='background: #374857;'> - <tr> - <td valign='top' style='vertical-align: top;')> - {# info table start #} - <table cellpadding='0' cellspacing='0' border='0' align='center' style='width:100%'> - <tr> - <td valign='top' style='vertical-align: top;text-align: center; padding: 10px'> - <span style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#f5ab35; font-size:20px; font-weight: bold;'> - {{ header }} - </span> - </td> - </tr> - <tr> - <td valign='top' style='vertical-align: top; background: #161d23; padding:10px;'> - <span style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#cecece; font-size:16px;'> - {{ content }} - </span> - </td> - </tr> - <tr> - <td valign='top' style='vertical-align: top; padding: 10px;'> - <span style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#b2cce5; font-size:12px;'> - {{ footer }} - </span> - </td> - </tr> - </table> - {# info table end #} - - </td> - </tr> - </table> - - </td> - - </tr> - </table> - </body> -</html> \ No newline at end of file diff --git a/brain/views/dash/forms/init-backup.twig b/brain/views/dash/forms/init-backup.twig deleted file mode 100644 index b157efa..0000000 --- a/brain/views/dash/forms/init-backup.twig +++ /dev/null @@ -1,16 +0,0 @@ -<div> - <a href="/dashboard"> - <img id="the-logo" src="/assets/images/global/fipamo-logo.svg"/> - </a> -</div> -<form id="init-restore" method="POST"> - <input type="text" name="restore_member_handle" id="restore_member_handle" placeholder="handle"/><input type="password" name="restore_member_pass" id="restore_member_pass" placeholder="password"/> - <div> - <label>Grab your backup zip</label> - <input id="backup-upload" type="file" name="backup-upload" placeholder="Backup Zip"/> - </div> - <br/><br/> - <button id="blog-restore" data-action='blog-restore' type='submit'>RESTORE</button> - <br/><br/> - <button class="init-option" id="init-switch-fresh">OR INSTALL FROM SCRATCH</button> -</form> diff --git a/brain/views/dash/forms/init-fresh.twig b/brain/views/dash/forms/init-fresh.twig deleted file mode 100644 index 70ba1c3..0000000 --- a/brain/views/dash/forms/init-fresh.twig +++ /dev/null @@ -1,15 +0,0 @@ -<div> - <a href="/dashboard"> - <img id="the-logo" src="/assets/images/global/fipamo-logo.svg"/> - </a> -</div> -<form id="init-form" method="POST" onsubmit="return false;"> - <input type="text" name="new_member_handle" id="new_member_handle" placeholder="handle"/> - <input type="text" name="new_member_email" id="new_member_email" placeholder="email"/> - <input type="text" name="new_member_pass" id="new_member_pass" placeholder="password"/> - <input type="text" name="new_member_pass2" id="new_member_pass2" placeholder="password confirm"/> - <input type="text" name="new_member_title" id="new_member_title" placeholder="title"/> - <button id="init-blog" data-action='blog-init' type='submit'>SET UP YOUR SITE</button> - <br/><br/> - <button class="init-option" id="init-switch-restore">RESTORE FROM BACKUP</button> -</form> diff --git a/brain/views/dash/forms/login.twig b/brain/views/dash/forms/login.twig deleted file mode 100644 index 12b4d06..0000000 --- a/brain/views/dash/forms/login.twig +++ /dev/null @@ -1,13 +0,0 @@ -<section class="login"> - <div> - <img id="the-logo" src="/assets/images/global/fipamo-logo.svg"/> - </div> - <form id="login" class='login' name="login" method="POST" onsubmit="return false;"> - <input type="text" name="handle" class="form-control" placeholder="Handle" required/> - <input type="password" name="password" class="form-control" placeholder="Password" required/> - <button id="login-btn" class='login-btn'> - ID, PLEASE - </button> - <a href="/dashboard/reset-password">?</a> - </form> -</section> diff --git a/brain/views/dash/forms/reset.twig b/brain/views/dash/forms/reset.twig deleted file mode 100644 index c250fa1..0000000 --- a/brain/views/dash/forms/reset.twig +++ /dev/null @@ -1,21 +0,0 @@ -<div> - <a href="/dashboard"> - <img id="the-logo" src="/assets/images/global/fipamo-logo.svg"/> - </a> -</div> -<form id="reset" class='login' name="reset" action="/dashboard/login" method="POST"> - - <input type="password" id="new_password" name="new_password" class="form-control" placeholder="New Password" required/> - <input type="password" id="new_password2" name="new_password2" class="form-control" placeholder="New Password Confirm" required"> - <input type="password" id="secret" name="secret" class="form-control" placeholder="Account Secret" required/> - <button id="reset-btn" class='login-btn' type='submit'> - RESET PASSWORD - </button><br/> - <p> - Use this to get your secret to verify it's you. If your email is set up, the secret will be sent there. If not, the form will be updated automatically(but please set up your email, once you reset your password). - </p> - <input type="text" id="email" name="email" class="form-control" placeholder="email to verify" required/> - <button id="get-secret-btn" class='login-btn' type='submit'> - VERIFY EMAIL - </button><br/><br/> - </form> diff --git a/brain/views/dash/init.twig b/brain/views/dash/init.twig deleted file mode 100644 index 79f5b71..0000000 --- a/brain/views/dash/init.twig +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css"> - {% endblock %} - - {% block mainContent %} - <article role="site-restore"> - <section role="restore-fresh"> - {% apply spaceless %} - {{ include("dash/forms/init-fresh.twig") }} - {% endapply %} - </section> - <section role="restore-backup"> - {% apply spaceless %} - {{ include("dash/forms/init-backup.twig") }} - {% endapply %} - </section> - </article> - {% endblock %} diff --git a/brain/views/dash/navigation.twig b/brain/views/dash/navigation.twig deleted file mode 100644 index a77d540..0000000 --- a/brain/views/dash/navigation.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css?=sdsdsds"> - {% endblock %} - - {% block mainContent %} - <article role="navigation"> - <section id="nav-items"> - {% for item in menu %} - <div id="{{ item.id }}" class="nav-item" data-slug="{{ item.slug }}" data-uuid="{{ item.uuid }}" data-path="{{ item.path }}"> - <i class="ti ti-arrows-move-vertical"></i> - <label>{{ item.title }}</label> - <div id="nav-btns"> - <button id="edit-item" class="nav-btn" data-id="{{ item.uuid }}" title="edit page"> - <i class="ti ti-edit"></i> - </button> - <button id="remove-item" class="nav-btn" data-uuid="{{ item.uuid }}" data-id="{{ item.id }}" title="delete from menu"> - <i class="ti ti-x"></i> - </button> - </div> - </div> - {% endfor %} - </section> - </article> - {% endblock %} diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig deleted file mode 100644 index 1612863..0000000 --- a/brain/views/dash/page-edit.twig +++ /dev/null @@ -1,206 +0,0 @@ -{% extends "dash/_frame.twig" %} -{# - if page is in 'edit' mode, set variables - if not, just make them empty - #} -{% if mode == 'edit' %} - {% set id = page['id'] %} - {% set uuid = page['uuid'] %} - {% set slug = page['slug'] %} - {% set layout = page['layout'] %} - {% set feature = page['feature'] %} - {% set tags = page['tags'] %} - {% set content = page['content'] %} - {% set date = page['created'] %} - {% set updated = page['updated'] %} - {% set media = page['media'] %} - {% set files = page['docs'] %} -{% else %} - {% set id = '' %} - {% set uuid = '' %} - {% set slug = '' %} - {% set layout = 'page' %} - {% set feature = '' %} - {% set title = '' %} - {% set tags = '' %} - {% set content = '' %} - {% set date = '' %} - {% set updated = '' %} - {% set media = '' %} - {% set files = '' %} -{% endif %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css?=vdthg"> - {% endblock %} - - {% block mainContent %} - <section data-index="{{ id }}" data-uuid="{{ uuid }}" data-slug="{{ slug }}" data-layout="{{ layout }}" role="file-manager"> - {% if page['feature'] == null %} - <div role="file-drop"> - <label for="page-files-upload">DRAG AND DROP FILES OR CLICK TO SELECT</label> - </div> - <label role="list-title">IMAGES AND VIDEO</label> - <div role="page-images-list"></div> - <label role="list-title">FILES</label> - <div role="page-files-list"></div> - {% else %} - <div role="file-drop"> - <label for="page-files-upload">DRAG AND DROP FILES OR CLICK TO SELECT</label> - </div> - <label role="list-title">IMAGES AND VIDEO</label> - <div role="page-images-list"> - {% if media|length > 1 %} - {% for item in media %} - {% set fileName = item.file|split('/') %} - {% if item.type == "mp4" %} - - <div id="{{ loop.index0 }}" class="video-item" data-source="{{ item.file }}"> - <video> - <source src="{{ item.file }}"/> - </video> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% else %} - <div id="{{ loop.index0 }}" class="img-item" data-source="{{ item.file }}" style="background: url({{ item.file }}) no-repeat center center / cover"> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% endif %} - {% endfor %} - {% else %} - {% if media[0] != '' %} - {% set fileName = media[0].file|split('/') %} - {% if media[0].type == "mp4" %} - <div id="0" class="video-item" data-source="{{ media[0].file }}"> - <button id="{{ loop.index0 }}" class="media-remove">X</button> - </div> - - {% else %} - <div id="0" class="img-item" data-source="{{ media[0].file }}" style="background: url({{ media[0].file }}) no-repeat center center / cover"> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% endif %} - {% else %} - {% endif %} - {% endif %} - </div> - <label role="list-title">FILES</label> - <div role="page-files-list"> - {% if files|length > 1 %} - {% for item in files %} - {% set fileName = item.file|split('/') %} - {% if item.type == "mp3" %} - <div id="{{ loop.index0 }}" class="audio-item" data-source="{{ item.file }}"> - <audio controls> - <source src="{{ item.file }}"/> - </audio> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% else %} - <div id="{{ loop.index0 }}" class="file-item" data-source="{{ item.file }}"> - <a href="{{ item.file }}" target="_blank">{{ fileName[6] }}"</a> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% endif %} - {% endfor %} - {% else %} - {% if files[0] != '' %} - {% set fileName = files[0].file|split('/') %} - {% if files[0].type == "mp3" %} - <div id="0" class="audio-item" data-source="{{ files[0].file }}"> - <audio controls> - <source src="{{ files[0].file }}"/> - </audio> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% else %} - <div id="0" class="file-item" data-source="{{ files[0].file }}"> - <a href="{{ item.file }}" target="_blank">{{ fileName[6] }}"</a> - <button id="{{ loop.index0 }}" class="media-remove"> - <i class="ti ti-x"></i> - </button> - </div> - {% endif %} - - {% else %} - - {% endif %} - {% endif %} - - </div> - {% endif %} - </section> - <section role="page-meta"> - <div role="page-meta-wrapper"> - <div role="page-title"> - <strong>TITLE</strong> - <textarea id="post-title-text" type="text" name="post-title-text" class="post-edit" placeholder="TITLE">{{ title }}</textarea> - </div> - <div role="page-tags"> - <strong>TAGS</strong> - <textarea id="post-tags" type="text" name="post-tags" class="form-control" placeholder="tags [comma seperated]">{{ tags }}</textarea> - </div> - <div role="page-layouts"> - <strong>LAYOUTS</strong> - <select id="page-templates"> - {% for view in views %} - {% if view == page['layout'] %} - <option value={{ view }} selected>{{ view }}</option> - {% else %} - <option value={{ view }}>{{ view }}</option> - {% endif %} - - {% endfor %} - </select> - </div> - <div role="page-options"> - <strong>OPTIONS</strong> - {% apply spaceless %} - {{ include("dash/partials/options.twig") }} - {% endapply %} - </div> - <div role="page-updated"> - <strong>UPDATED</strong> - <span id="post-date" type="text"> - {{ updated }} - </span> - </div> - <div role="page-created"> - <strong>CREATED</strong> - <span id="post-date" type="text"> - {{ date }} - </span> - <input id="page-files-upload" type="file" name="page-files-upload" multiple/> - <input id="post-image-upload" type="file" name="post-image-upload"/> - <input id="form_token" name="token" type="hidden" value="{{ token }}"></div> - </div> - </div> - </section> - <section role="text-editor"> - {% apply spaceless %} - {{ include("dash/partials/editor.twig") }} - {% endapply %} - <div role="edit-post-wrapper"> - <textarea id="edit" spellcheck="false" class="language-md">{{ content }}</textarea> - <pre id="highlight"> - <code id="highlight-content" class="language-md"></code> - </pre> - </div> - </section> - {% endblock %} diff --git a/brain/views/dash/partials/editor.twig b/brain/views/dash/partials/editor.twig deleted file mode 100644 index 9cd3194..0000000 --- a/brain/views/dash/partials/editor.twig +++ /dev/null @@ -1,38 +0,0 @@ -<div role="text-editor-control"> - <button id="edit-bold" class="content-editor-btn-text editor-button" title="bold"> - <i id="edit-bold" class="ti ti-bold"></i> - </button> - <button id="edit-italic" class="content-editor-btn-text editor-button" title="italic"> - <i id="edit-italic" class="ti ti-italic"></i> - </button> - <button id="edit-strikethrough" class="content-editor-btn-text editor-button" title="strikethrough"> - <i id="edit-strikethrough" class="ti ti-strikethrough"></i> - </button> - <button id="edit-link" class="content-editor-btn-icon editor-button" title="insert link"> - <i id="edit-link" class="ti ti-link"></i> - </button> - <button id="edit-header1" class="content-editor-btn-text editor-button" title="header 1"> - <i id="edit-header1" class="ti ti-h-1"></i> - </button> - <button id="edit-header2" class="content-editor-btn-text editor-button" title="header 2"> - <i id="edit-header2" class="ti ti-h-2"></i> - </button> - <button id="edit-header3" class="content-editor-btn-text editor-button" title="header 3"> - <i id="edit-header3" class="ti ti-h-3"></i> - </button> - <button id="edit-image" class="content-editor-btn-icon editor-button" title="insert image"> - <i id="edit-image" class="ti ti-photo"></i> - </button> - {% if mode == "edit" %} - <button id="edit-update" class="post-sumbit-btn submit-start editor-button" data-action='blog-update' data-id="{{ page['uuid'] }} type='submit' title=" bold"> - <i id="edit-update" class="ti ti-device-floppy"></i> - </button> - <button id="edit-delete" class="content-editor-btn-icon editor-button submit-delete" for="post-delete" title='delete post'> - <i id="edit-delete" class="ti ti-x"></i> - </button> - {% else %} - <button id="edit-save" class="post-sumbit-btn submit-start editor-button" data-action='blog-add' type='submit'> - <i id="edit-save" class="ti ti-file-plus"></i> - </button> - {% endif %} -</div> diff --git a/brain/views/dash/partials/index.twig b/brain/views/dash/partials/index.twig deleted file mode 100644 index b586594..0000000 --- a/brain/views/dash/partials/index.twig +++ /dev/null @@ -1,30 +0,0 @@ -<section class="index-header"> - <div class="index-header-left"> - <h1>Recent</h1> - </div> - <div class="index-header-right"></div> -</section> -<section class="index-recent-pages"> - {% if data["entryCount"] != 0 %} - {% for page in data['pages'] %} - {% if page.media[0].type == 'mp4' %} - - <a href="/dashboard/page/edit/{{ page.uuid }}" id="{{ page.uuid }}" class="post-video-link recent-link"> - {{ include("dash/partials/recent-meta.twig") }} - <video class="post-video" loop muted autoplay> - <source src="{{ page.media[0].file }}" type="video/mp4"> - Sorry, your browser doesn't support embedded videos. - </video> - </a> - - {% else %} - <a href="/dashboard/page/edit/{{ page.uuid }}" id="{{ page.uuid }}" class="post-link recent-link" style="background: url({{ page.media[0].file }}) no-repeat center center / cover #fc6399"> - {{ include("dash/partials/recent-meta.twig") }} - </a> - {% endif %} - {% endfor %} - {% else %} - There are no pages - {% endif %} - - </section> diff --git a/brain/views/dash/partials/mailforms.twig b/brain/views/dash/partials/mailforms.twig deleted file mode 100644 index 9c85c5e..0000000 --- a/brain/views/dash/partials/mailforms.twig +++ /dev/null @@ -1,31 +0,0 @@ -{% if mailOption == "option-smtp" %} - <div id="mail-smtp" data-enabled='true'> - <input type='text' name='smtp-domain' id='smtp-domain' placeholder='domain'value="{{mailConfig['smtp']['domain']}}"/> - <input type='text' name='smtp-email' id='smtp-email' placeholder='email' value="{{mailConfig['smtp']['email']}}" /> - <input type='text' name='smtp-pass' id='smtp-pass' placeholder='password' value="{{mailConfig['smtp']['password']}}"/> - </div> - <div id="mail-mg" data-enabled='false'> - <input type='text' name='mg-domain' id='mg-domain' placeholder='domain' value="{{mailConfig['mailgun']['domain']}}" /> - <input type='text' name='mg-key' id='mg-key' placeholder='api key' value="{{mailConfig['mailgun']['key']}}"/> - </div> -{% elseif(mailOption == 'option-mg') %} - <div id="mail-smtp" data-enabled='false'> - <input type='text' name='smtp-domain' id='smtp-domain' placeholder='domain'value="{{mailConfig['smtp']['domain']}}"/> - <input type='text' name='smtp-email' id='smtp-email' placeholder='email' value="{{mailConfig['smtp']['email']}}" /> - <input type='text' name='smtp-pass' id='smtp-pass' placeholder='password' value="{{mailConfig['smtp']['password']}}"/> - </div> - <div id="mail-mg" data-enabled='true'> - <input type='text' name='mg-domain' id='mg-domain' placeholder='domain' value="{{mailConfig['mailgun']['domain']}}" /> - <input type='text' name='mg-key' id='mg-key' placeholder='api key' value="{{mailConfig['mailgun']['key']}}"/> - </div> -{% else %} - <div id="mail-smtp" data-enabled='false'> - <input type='text' name='smtp-domain' id='smtp-domain' placeholder='domain'value="{{mailConfig['smtp']['domain']}}"/> - <input type='text' name='smtp-email' id='smtp-email' placeholder='email' value="{{mailConfig['smtp']['email']}}" /> - <input type='text' name='smtp-pass' id='smtp-pass' placeholder='password' value="{{mailConfig['smtp']['password']}}"/> - </div> - <div id="mail-mg" data-enabled='false'> - <input type='text' name='mg-domain' id='mg-domain' placeholder='domain' value="{{mailConfig['mailgun']['domain']}}" /> - <input type='text' name='mg-key' id='mg-key' placeholder='api key' value="{{mailConfig['mailgun']['key']}}"/> - </div> -{% endif %} \ No newline at end of file diff --git a/brain/views/dash/partials/navigation.twig b/brain/views/dash/partials/navigation.twig deleted file mode 100644 index f62b038..0000000 --- a/brain/views/dash/partials/navigation.twig +++ /dev/null @@ -1,57 +0,0 @@ -<div class="menu"> - {% if title == "Settings" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_settings.twig") }} - {% endapply %} - {% elseif title=="Start" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_start.twig") }} - {% endapply %} - {% endif %} - <a id="settings" href="/dashboard/settings" title="settings"> - <button> - <i class="ti ti-home-cog"></i> - </button> - </a> - <a id="navigation" href="/dashboard/navigation" title="edit navigation"> - <button> - <i class="ti ti-arrow-autofit-height"></i> - </button> - </a> - <a id="navigation" href="/dashboard/logout" title="log out"> - <button> - <i class="ti ti-logout"></i> - </button> - </a> -</div> - -<button class="menu-toggle"> - <i class="ti ti-menu-2"></i> -</button> - -<div class="mobile-menu"> - {% if title == "Settings" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_settings.twig") }} - {% endapply %} - {% elseif title=="Start" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_start.twig") }} - {% endapply %} - {% endif %} - <a id="settings" href="/dashboard/settings" title="settings"> - <button> - <i class="ti ti-home-cog"></i> - </button> - </a> - <a id="navigation" href="/dashboard/navigation" title="edit navigation"> - <button> - <i class="ti ti-arrow-autofit-height"></i> - </button> - </a> - <a id="navigation" href="/dashboard/logout" title="log out"> - <button> - <i class="ti ti-logout"></i> - </button> - </a> -</div> diff --git a/brain/views/dash/partials/notifications.twig b/brain/views/dash/partials/notifications.twig deleted file mode 100644 index 7c34058..0000000 --- a/brain/views/dash/partials/notifications.twig +++ /dev/null @@ -1,10 +0,0 @@ -<div class="notify-message"> - <div class="notify-icons"> - <i class="ti ti-mood-smile notify-good"></i> - <i class="ti ti-mood-sad notify-notgood"></i> - <i class="ti ti-settings notify-working"></i> - </div> - <div class="notify-text"> - <span class="response-text">Hey Hey</span> - </div> -</div> diff --git a/brain/views/dash/partials/options.twig b/brain/views/dash/partials/options.twig deleted file mode 100644 index 2502514..0000000 --- a/brain/views/dash/partials/options.twig +++ /dev/null @@ -1,40 +0,0 @@ -{% if page['menu'] %} - {% set menu = 'true' %} -{% else %} - {% set menu = 'false' %} -{% endif %} - -{% if page['featured'] %} - {% set featured = 'true' %} -{% else %} - {% set featured = 'false' %} -{% endif %} - -{% if page['published'] %} - {% set published = 'true' %} -{% else %} - {% set published = 'false' %} -{% endif %} -<br> - <button id="option-menu-pin" class="option-inactive post-option-btn" data-active="{{ menu }}" title='Pin to Menu'> - <svg id="option-page-icon" role="icon"> - <use id="option-page-icon" xlink:href="/assets/images/global/sprite.svg#entypo-add-to-list"/> - </svg> - </button> - <button id="option-feature" class="option-inactive post-option-btn" data-active="{{ featured }}" title='Feature'> - <svg id="option-feature-icon" role="icon"> - <use id="option-feature-icon" xlink:href="/assets/images/global/sprite.svg#entypo-star"/> - </svg> - </button> - <button id="option-published" class="option-inactive post-option-btn" data-active="{{ published }}" title='Published'> - <svg id="option-published-icon" role="icon"> - <use id="option-published-icon" xlink:href="/assets/images/global/sprite.svg#entypo-globe"/> - </svg> - </button> - <a href="/dashboard/page/preview/{{ uuid }}" target="_blank"> - <button id="option-preview" class="option-inactive post-option-btn" data-active="false" title='preview page'> - <svg id="option-preview-icon" role="icon"> - <use id="option-preview-icon" xlink:href="/assets/images/global/sprite.svg#entypo-eye"/> - </svg> - </button> - </a> diff --git a/brain/views/dash/partials/recent-meta.twig b/brain/views/dash/partials/recent-meta.twig deleted file mode 100644 index e4dd4c9..0000000 --- a/brain/views/dash/partials/recent-meta.twig +++ /dev/null @@ -1,37 +0,0 @@ -{% if page.menu == 'true' %} - {% set menu = "true" %} -{% else %} - {% set menu = "false" %} -{% endif %} -{% if page.published == 'true' %} - {% set published = "true" %} -{% else %} - {% set published = "false" %} -{% endif %} -{% if page.featured == 'true' %} - {% set featured = "true" %} -{% else %} - {% set featured = "false" %} -{% endif %} - -<aside> - <strong> - {{ page.updated }} - </strong> - <hr/> - <strong> - {{ page.title }} - </strong> - <hr/> - <button data-active="{{ menu }}"> - <i class="ti ti-navigation"></i> - </button> - <button data-active="{{ published }}"> - <i class="ti ti-world"></i> - </button> - - <button data-active="{{ featured }}"> - <i class="ti ti-star"></i> - </button> - -</aside> diff --git a/brain/views/dash/partials/submenu_settings.twig b/brain/views/dash/partials/submenu_settings.twig deleted file mode 100644 index eabb29e..0000000 --- a/brain/views/dash/partials/submenu_settings.twig +++ /dev/null @@ -1,11 +0,0 @@ -<div class="submenu"> - <button id="save-toggle" title="save settings"> - <i class="ti ti-device-floppy"></i> - </button> - <button id="publish-pages" title="publish site"> - <i class="ti ti-world-upload"></i> - </button> - <button id="render-toggle" title="render on save toggle" data-render="{{ renderOnSave }}"> - <i class="ti ti-circle-dashed"></i> - </button> -</div> diff --git a/brain/views/dash/partials/submenu_start.twig b/brain/views/dash/partials/submenu_start.twig deleted file mode 100644 index 8e198a7..0000000 --- a/brain/views/dash/partials/submenu_start.twig +++ /dev/null @@ -1,12 +0,0 @@ -<div class="submenu"> - <a href='/dashboard/pages' title="view pages"> - <button> - <i class="ti ti-book-2"></i> - </button> - </a> - <a href='/dashboard/page/add/new' title="add new page"> - <button> - <i class="ti ti-square-plus"></i> - </button> - </a> -</div> diff --git a/brain/views/dash/reset-password.twig b/brain/views/dash/reset-password.twig deleted file mode 100644 index 5e47794..0000000 --- a/brain/views/dash/reset-password.twig +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css"> - {% endblock %} - - {% block mainContent %} - <section role="password-reset"> - {% apply spaceless %} - {{ include("dash/forms/reset.twig") }} - {% endapply %} - - </section> - {% endblock %} diff --git a/brain/views/dash/settings.twig b/brain/views/dash/settings.twig deleted file mode 100644 index 6f61e1d..0000000 --- a/brain/views/dash/settings.twig +++ /dev/null @@ -1,123 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css?=cvnbm"> - {% endblock %} - - {% block mainContent %} - <article class="settings"> - <section class="member-settings"> - <div class="member-avatar"> - <div class="avatar" style="background: url({{ member['avatar'] }} ) no-repeat center center / cover"></div> - <input id="avatar-upload" type="file" name="avatar-upload"/> - </div> - <div class="site-background"> - <div class="background" style="background: url({{ background }} ) no-repeat center center / cover"></div> - <input id="background-upload" type="file" name="backgrond-upload"/> - </div> - <div> - <input type='text' name='handle' id='settings-handle' placeholder='handle' value="{{ member['handle'] }}" autofocus/> - <input type='text' name='email' id='settings-email' placeholder='email' value="{{ member['email'] }}" autofocus/> - <input type='text' name='base-url' id='settings-url' placeholder='url' value="{{ baseUrl }}" autofocus/> - <input type='text' name='base-title' id='settings-title' placeholder='site title' value="{{ siteTitle }}" autofocus/> - <textarea id="settings-desc" type='text' name='settings_desc' class='settings-dec' placeholder='description stuff' , autofocus>{{ desc }}</textarea> - </div> - - <div> - <button id="create-backup"> - <i class="ti ti-disc"></i> - <span>BACK UP YOUR SITE</span> - </button><br/> - {% if lastBackup != '' %} - LAST BACK UP<br/> - <a href="/api/v1/files">{{ lastBackup }}</a><br/> - {% else %} - <span>span No back ups. Frowny face.</span> - {% endif %} - </div> - <div class="features"> - {% if apiStatus is defined and apiStatus == "true" %} - <button id="api-access-toggle" title="allow external api" data-enabled="true"> - <i class="ti ti-phone-incoming"></i> - <span id="api-status">API ACCESS ENABLED</span> - </button> - - {% else %} - <button id="api-access-toggle" title="allow external api" data-enabled="false"> - <i class="ti ti-phone-incoming"></i> - <span id="api-status">API ACCESS NOT ENABLED</span> - </button> - - {% endif %} - {% if dynamicRenderStatus is defined and dynamicRenderStatus == "true" %} - <button id="dynamic-render-toggle" title="allow external api" data-enabled="true"> - <i class="ti ti-arrow-merge"></i> - <span id="dynamic-render-status">DYNAMIC PAGE RENDERING</span> - </button> - - {% else %} - <button id="dynamic-render-toggle" title="allow external api" data-enabled="false"> - <i class="ti ti-arrow-merge"></i> - <span id="dynamic-render-status">STATIC PAGE RENDERING</span> - </button> - - {% endif %} - </div> - <div class="theme"> - <label>Themes</label><br/> - {% for theme in themes %} - {% if theme.name == currentTheme %} - <button id="{{ theme.name }}" class="theme-select" data-enabled="true"> - <i class="ti ti-brush"></i> - <span>{{ theme['display-name'] }}</span> - </button> - {% else %} - <button href="#" id="{{ theme.name }}" class="theme-select" data-enabled="false"> - <i class="ti ti-brush-off"></i> - <span>{{ theme['display-name'] }}</span> - </button> - {% endif %} - - {% endfor %} - </div> - <div class="mail"> - <label>Email</label><br/> - {% if mailOption == "option-none" or mailOption == "" %} - <a href="#" class="mail-option" id="option-none" data-enabled="true">NONE</a> - {% else %} - <a href="#" class="mail-option" id="option-none" data-enabled="false">NONE</a> - {% endif %} - {% if mailOption == "option-mg" or mailOption == "" %} - <a href="#" class="mail-option" id="option-mg" data-enabled="true">MAILGUN</a> - {% else %} - <a href="#" class="mail-option" id="option-mg" data-enabled="false">MAILGUN</a> - {% endif %} - {% if mailOption == "option-smtp" or mailOption == "" %} - <a href="#" class="mail-option" id="option-smtp" data-enabled="true">SMTP</a> - {% else %} - <a href="#" class="mail-option" id="option-smtp" data-enabled="false">SMTP</a> - {% endif %} - - {% apply spaceless %} - {{ include("dash/partials/mailforms.twig") }} - {% endapply %} - <button id="send-mail"> - <i class="ti ti-mailbox"></i> - <span>TEST MAIL</span> - </button> - </div> - <div> - <label>API KEY</label> - <br/> - {{ member['key'] }} - <br/> - <label>FORM TOKEN</label><br/> - {{ ftoken }} - </div> - </section> - </article> - {% endblock %} diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig deleted file mode 100644 index e01d965..0000000 --- a/brain/views/dash/start.twig +++ /dev/null @@ -1,19 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/assets/css/dash/start.css?=dfdfrtr"> - {% endblock %} - - {% block mainContent %} - {% if status %} - {% apply spaceless %} - {{ include("dash/partials/index.twig") }} - {% endapply %} - {% else %} - {{ include("dash/forms/login.twig") }} - {% endif %} - {% endblock %} diff --git a/brain/views/front/_frame.twig b/brain/views/front/_frame.twig deleted file mode 100644 index ffccaa2..0000000 --- a/brain/views/front/_frame.twig +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title> - {% block title %} - {{ title }} - {% endblock %} - </title> - {% block stylesheets %}{% endblock %} - </head> - <body> - <div id="main-content" class="main-container"> {% block mainContent %}{% endblock %} - </section> - </body> - </html> -</div> - -<footer> - {% if options['showFooter'] is defined %} - <!-- NO FOOTER --> - {% else %} - <div class="inner"> - <div class="columns"> - <div id="footer_left" class="column"> - <a href="#">About</a><br/> - </div> - <div id="footer_right " class="column"> - <a href="#">FAQ</a><br/> - </div> - </div> - </div> - {% endif %} - - -</footer> -{% block javascripts %}{% endblock %}</body></html> \ No newline at end of file diff --git a/brain/views/front/start.twig b/brain/views/front/start.twig deleted file mode 100644 index c3fb820..0000000 --- a/brain/views/front/start.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "front/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - <link rel="stylesheet" type="text/css" href="/public/assets/css/base.css"> - {% endblock %} - - {% block mainContent %} - This is the index page, boss - {% endblock %} - - {% block javascripts %} - <script src="/public/assets/scripts/dash.min.js" type="text/javascript"></script> - {% endblock %} \ No newline at end of file diff --git a/composer.json b/composer.json index 25efe24..8a3d72d 100644 --- a/composer.json +++ b/composer.json @@ -1,37 +1,66 @@ { - "name": "are0h/fipamo", - "descriptions": "The most chill no database blog framework ever.", - "version": "2.6.1-beta", - "homepage": "https://fipamo.blog", - "authors": [ - { - "name": "Are0h", - "homepage": "https://roiskinda.cool" - } - ], - "support": { - "source": "https://koodu.ubiqueros.com/are0h/Fipamo", - "wiki": "https://koodu.ubiqueros.com/are0h/Fipamo/wiki/?action=_pages", - "issues": "https://koodu.ubiqueros.com/are0h/Fipamo/issues" - }, - "require": { - "slim/slim": "4.*", - "slim/psr7": "^1.2", - "twig/twig": "^3.0", - "slim/twig-view": "^3.0", - "mnapoli/front-yaml": "^1.8", - "lodash-php/lodash-php": "^0.0.7", - "rbdwllr/reallysimplejwt": "^4.0", - "tgalopin/html-sanitizer": "^1.4", - "phpmailer/phpmailer": "^6.4", - "league/commonmark": "^2.1", - "symfony/yaml": "^5.4", - "olegatro/html-sanitizer-relative": "^1.0", - "nesbot/carbon": "^2.62" - }, - "scripts": { - "start": [ - "@php -S localhost:8000 -t public/" - ] - } + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], + "license": "MIT", + "require": { + "php": "^8.1", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.3", + "laravel/tinker": "^2.8" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true } diff --git a/composer.lock b/composer.lock index 46918e6..df2df39 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,132 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6f3ff1b7b0dd1fa0d77615d80c1a5257", + "content-hash": "9c491b8531eec05ba41a11d9276a5749", "packages": [ + { + "name": "brick/math", + "version": "0.11.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.2", @@ -82,30 +206,34 @@ "time": "2022-10-27T11:44:00+00:00" }, { - "name": "erusev/parsedown", - "version": "1.7.4", + "name": "doctrine/inflector", + "version": "2.0.10", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { - "psr-0": { - "Parsedown": "" + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -114,52 +242,233 @@ ], "authors": [ { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ - "markdown", - "parser" + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], "support": { - "issues": "https://github.com/erusev/parsedown/issues", - "source": "https://github.com/erusev/parsedown/tree/1.7.x" + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, - "time": "2019-12-30T22:54:17+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" }, { - "name": "fig/http-message-util", - "version": "1.1.5", + "name": "doctrine/lexer", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { "psr-4": { - "Fig\\Http\\Message\\": "src/" + "Egulias\\EmailValidator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -168,37 +477,1041 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Eduardo Gulias Davis" } ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" ], "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, - "time": "2020-11-24T22:02:12+00:00" + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" }, { - "name": "league/commonmark", - "version": "2.4.0", + "name": "fruitcake/php-cors", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:16:48+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:35:24+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.46.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "5e95946a8283a8d5c015035793f9c61c297e937f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/5e95946a8283a8d5c015035793f9c61c297e937f", + "reference": "5e95946a8283a8d5c015035793f9c61c297e937f", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "phpunit/phpunit": ">=11.0.0", + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.18", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-02-27T16:46:54+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.16", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.16" + }, + "time": "2024-02-21T19:25:27+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-12-19T18:44:48+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.9.0" + }, + "time": "2024-01-04T16:10:04+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -211,7 +1524,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -221,10 +1534,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -291,7 +1604,7 @@ "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -376,162 +1689,276 @@ "time": "2022-12-11T20:36:23+00:00" }, { - "name": "league/uri-parser", - "version": "1.4.1", + "name": "league/flysystem", + "version": "3.24.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/uri-parser.git", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00" + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "b25a361508c407563b34fac6f64a8a17a8819675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-parser/zipball/671548427e4c932352d9b9279fdfa345bf63fa00", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b25a361508c407563b34fac6f64a8a17a8819675", + "reference": "b25a361508c407563b34fac6f64a8a17a8819675", "shasum": "" }, "require": { - "php": ">=7.0.0" + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.0" + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.24.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2024-02-04T12:10:17+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.23.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2024-01-26T18:25:23+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { - "ext-intl": "Allow parsing RFC3987 compliant hosts", - "league/uri-schemes": "Allow validating and normalizing URI parsing results" + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "League\\Uri\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "userland URI parser RFC 3986 compliant", - "homepage": "https://github.com/thephpleague/uri-parser", - "keywords": [ - "parse_url", - "parser", - "rfc3986", - "rfc3987", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/thephpleague/uri-parser/issues", - "source": "https://github.com/thephpleague/uri-parser/tree/master" - }, - "abandoned": true, - "time": "2018-11-22T07:55:51+00:00" - }, - { - "name": "lodash-php/lodash-php", - "version": "0.0.7", - "source": { - "type": "git", - "url": "https://github.com/lodash-php/lodash-php.git", - "reference": "9083fdc398db5594b3d6909338d8b824e661955b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lodash-php/lodash-php/zipball/9083fdc398db5594b3d6909338d8b824e661955b", - "reference": "9083fdc398db5594b3d6909338d8b824e661955b", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "sebastian/comparator": "^1.2 | ^2.0 | ^2.1 | ^3.0 | ^4.0", - "symfony/property-access": "^2.7 | ^3.0 | ^4.0 | ^5.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "phpdocumentor/reflection-docblock": "^4.2", - "phpstan/phpdoc-parser": "^0.3.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pierre du Plessis", - "email": "open-source@solidworx.co" - } - ], - "description": "A port of Lodash to PHP", - "keywords": [ - "lodash", - "php-library", - "php-utility", - "utilities", - "utility", - "utility-library" - ], - "support": { - "issues": "https://github.com/lodash-php/lodash-php/issues", - "source": "https://github.com/lodash-php/lodash-php/tree/0.0.7" - }, - "time": "2020-09-21T11:55:26+00:00" - }, - { - "name": "masterminds/html5", - "version": "2.7.6", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Masterminds\\": "src" + "Monolog\\": "src/Monolog" } }, "notification-url": "https://packagist.org/downloads/", @@ -540,98 +1967,63 @@ ], "authors": [ { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" }, { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" } ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" - }, - "time": "2022-08-18T16:18:26+00:00" - }, - { - "name": "mnapoli/front-yaml", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/mnapoli/FrontYAML.git", - "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", - "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", - "shasum": "" - }, - "require": { - "erusev/parsedown": "~1.0", - "php": ">=7.3", - "symfony/yaml": "~2.1|^3.0|^4.0|^5.0" - }, - "require-dev": { - "league/commonmark": "~1.4", - "phpunit/phpunit": "^9.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mni\\FrontYAML\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "support": { - "issues": "https://github.com/mnapoli/FrontYAML/issues", - "source": "https://github.com/mnapoli/FrontYAML/tree/1.8.0" - }, - "time": "2020-12-04T10:52:19+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "nesbot/carbon", - "version": "2.66.0", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -708,35 +2100,35 @@ "type": "tidelift" } ], - "time": "2023-01-29T18:53:47+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -768,26 +2160,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -795,7 +2187,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -805,8 +2197,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -855,37 +2246,46 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { - "name": "nikic/fast-route", - "version": "v1.3.0", + "name": "nikic/php-parser", + "version": "v5.0.1", "source": { "type": "git", - "url": "https://github.com/nikic/FastRoute.git", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69", + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69", "shasum": "" }, "require": { - "php": ">=5.4.0" + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" }, "require-dev": { - "phpunit/phpunit": "^4.8.35|~5.7" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "FastRoute\\": "src/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", @@ -894,44 +2294,65 @@ ], "authors": [ { - "name": "Nikita Popov", - "email": "nikic@php.net" + "name": "Nikita Popov" } ], - "description": "Fast request router for PHP", + "description": "A PHP parser written in PHP", "keywords": [ - "router", - "routing" + "parser", + "php" ], "support": { - "issues": "https://github.com/nikic/FastRoute/issues", - "source": "https://github.com/nikic/FastRoute/tree/master" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1" }, - "time": "2018-02-13T20:26:39+00:00" + "time": "2024-02-21T19:24:10+00:00" }, { - "name": "olegatro/html-sanitizer-relative", - "version": "1.0.0", + "name": "nunomaduro/termwind", + "version": "v1.15.1", "source": { "type": "git", - "url": "https://github.com/olegatro/html-sanitizer-relative.git", - "reference": "1a4d4683c0c162653da6dcfe6050476dd8bfc026" + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/olegatro/html-sanitizer-relative/zipball/1a4d4683c0c162653da6dcfe6050476dd8bfc026", - "reference": "1a4d4683c0c162653da6dcfe6050476dd8bfc026", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", "shasum": "" }, "require": { - "ext-dom": "*", - "php": ">=7.1", - "tgalopin/html-sanitizer": "^1.4" + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, "autoload": { + "files": [ + "src/Functions.php" + ], "psr-4": { - "HtmlSanitizer\\": "src" + "Termwind\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -940,96 +2361,161 @@ ], "authors": [ { - "name": "Oleg Scherbakov", - "email": "shcherbakov.oleg88@gmail.com" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Extension for html-sanitizer library by allowing relative urls in the A and Image tags", + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], "support": { - "issues": "https://github.com/olegatro/html-sanitizer-relative/issues", - "source": "https://github.com/olegatro/html-sanitizer-relative/tree/1.0.0" + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" }, - "time": "2021-02-05T13:39:44+00:00" + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2023-02-08T01:06:31+00:00" }, { - "name": "phpmailer/phpmailer", - "version": "v6.8.0", + "name": "phpoption/phpoption", + "version": "1.9.2", "source": { "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/df16b615e371d81fb79e506277faea67a1be18f1", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "php": ">=5.5.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.1", - "yoast/phpunit-polyfills": "^1.0.4" - }, - "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, "autoload": { "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" + "PhpOption\\": "src/PhpOption/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-only" + "Apache-2.0" ], "authors": [ { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.8.0" + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { - "url": "https://github.com/Synchro", + "url": "https://github.com/GrahamCampbell", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" } ], - "time": "2023-03-06T14:43:22+00:00" + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/clock", + "version": "1.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" + }, + "type": "library", + "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" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -1135,22 +2621,74 @@ "time": "2019-01-08T18:20:26+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.1", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -1170,7 +2708,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -1185,22 +2723,22 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { @@ -1209,7 +2747,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1224,7 +2762,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -1238,123 +2776,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2023-04-04T09:50:52+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-handler/issues", - "source": "https://github.com/php-fig/http-server-handler/tree/master" - }, - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-middleware/issues", - "source": "https://github.com/php-fig/http-server-middleware/tree/master" - }, - "time": "2018-10-30T17:12:04+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -1406,6 +2830,136 @@ }, "time": "2021-07-14T16:46:02+00:00" }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.0", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" + }, + "time": "2023-12-20T15:28:09+00:00" + }, { "name": "ralouphie/getallheaders", "version": "3.0.3", @@ -1451,384 +3005,56 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "rbdwllr/reallysimplejwt", - "version": "4.0.3", + "name": "ramsey/collection", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/RobDWaller/ReallySimpleJWT.git", - "reference": "2b92aba98c71cfc4046dea895659450bfce530ed" + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RobDWaller/ReallySimpleJWT/zipball/2b92aba98c71cfc4046dea895659450bfce530ed", - "reference": "2b92aba98c71cfc4046dea895659450bfce530ed", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": "^8.1" }, "require-dev": { - "infection/infection": "^0.20", - "phpbench/phpbench": "^1.0", - "phploc/phploc": "^7.0", - "phpmd/phpmd": "^2.9", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.5", - "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "ReallySimpleJWT\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rob Waller", - "email": "rdwaller1984@gmail.com" - } - ], - "description": "A really simple library to generate user authentication JSON Web Tokens.", - "keywords": [ - "Authentication", - "json", - "json web tokens", - "jwt", - "php", - "tokens" - ], - "support": { - "issues": "https://github.com/RobDWaller/ReallySimpleJWT/issues", - "source": "https://github.com/RobDWaller/ReallySimpleJWT/tree/4.0.3" - }, - "time": "2021-07-12T10:12:22+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T12:41:17+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T06:03:37+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "slim/psr7", - "version": "1.6", - "source": { - "type": "git", - "url": "https://github.com/slimphp/Slim-Psr7.git", - "reference": "3471c22c1a0d26c51c78f6aeb06489d38cf46a4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/3471c22c1a0d26c51c78f6aeb06489d38cf46a4d", - "reference": "3471c22c1a0d26c51c78f6aeb06489d38cf46a4d", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1.5", - "php": "^7.4 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0", - "symfony/polyfill-php80": "^1.26" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "adriansuter/php-autoload-override": "^1.3", - "ext-json": "*", - "http-interop/http-factory-tests": "^0.9.0", - "php-http/psr7-integration-tests": "dev-master", - "phpspec/prophecy": "^1.15", + "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/phpstan": "^1.8", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.7" + "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" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { - "Slim\\Psr7\\": "src" + "Ramsey\\Collection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1837,187 +3063,180 @@ ], "authors": [ { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "http://joshlockhart.com" - }, - { - "name": "Andrew Smith", - "email": "a.smith@silentworks.co.uk", - "homepage": "http://silentworks.co.uk" - }, - { - "name": "Rob Allen", - "email": "rob@akrabat.com", - "homepage": "http://akrabat.com" - }, - { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "Strict PSR-7 implementation", - "homepage": "https://www.slimframework.com", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ - "http", - "psr-7", - "psr7" + "array", + "collection", + "hash", + "map", + "queue", + "set" ], "support": { - "issues": "https://github.com/slimphp/Slim-Psr7/issues", - "source": "https://github.com/slimphp/Slim-Psr7/tree/1.6" - }, - "time": "2022-11-05T18:50:24+00:00" - }, - { - "name": "slim/slim", - "version": "4.11.0", - "source": { - "type": "git", - "url": "https://github.com/slimphp/Slim.git", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", - "shasum": "" - }, - "require": { - "ext-json": "*", - "nikic/fast-route": "^1.3", - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0", - "psr/http-server-middleware": "^1.0", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "adriansuter/php-autoload-override": "^1.3", - "ext-simplexml": "*", - "guzzlehttp/psr7": "^2.4", - "httpsoft/http-message": "^1.0", - "httpsoft/http-server-request": "^1.0", - "laminas/laminas-diactoros": "^2.17", - "nyholm/psr7": "^1.5", - "nyholm/psr7-server": "^1.0", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.8", - "phpunit/phpunit": "^9.5", - "slim/http": "^1.2", - "slim/psr7": "^1.5", - "squizlabs/php_codesniffer": "^3.7" - }, - "suggest": { - "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", - "ext-xml": "Needed to support XML format in BodyParsingMiddleware", - "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim", - "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information." - }, - "type": "library", - "autoload": { - "psr-4": { - "Slim\\": "Slim" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "https://joshlockhart.com" - }, - { - "name": "Andrew Smith", - "email": "a.smith@silentworks.co.uk", - "homepage": "http://silentworks.co.uk" - }, - { - "name": "Rob Allen", - "email": "rob@akrabat.com", - "homepage": "http://akrabat.com" - }, - { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" - }, - { - "name": "Gabriel Manricks", - "email": "gmanricks@me.com", - "homepage": "http://gabrielmanricks.com" - } - ], - "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", - "homepage": "https://www.slimframework.com", - "keywords": [ - "api", - "framework", - "micro", - "router" - ], - "support": { - "docs": "https://www.slimframework.com/docs/v4/", - "forum": "https://discourse.slimframework.com/", - "irc": "irc://irc.freenode.net:6667/slimphp", - "issues": "https://github.com/slimphp/Slim/issues", - "rss": "https://www.slimframework.com/blog/feed.rss", - "slack": "https://slimphp.slack.com/", - "source": "https://github.com/slimphp/Slim", - "wiki": "https://github.com/slimphp/Slim/wiki" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { - "url": "https://opencollective.com/slimphp", - "type": "open_collective" + "url": "https://github.com/ramsey", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/slim/slim", + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", "type": "tidelift" } ], - "time": "2022-11-06T16:33:39+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { - "name": "slim/twig-view", - "version": "3.3.0", + "name": "ramsey/uuid", + "version": "4.7.5", "source": { "type": "git", - "url": "https://github.com/slimphp/Twig-View.git", - "reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98" + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/df6dd6af6bbe28041be49c9fb8470c2e9b70cd98", - "reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/http-message": "^1.0", - "slim/slim": "^4.9", - "symfony/polyfill-php81": "^1.23", - "twig/twig": "^3.3" + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.3.0", - "phpunit/phpunit": "^9.5", - "psr/http-factory": "^1.0", - "squizlabs/php_codesniffer": "^3.6" + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.5" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-11-08T05:53:05+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Slim\\Views\\": "src" - } + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2025,43 +3244,118 @@ ], "authors": [ { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "http://joshlockhart.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Slim Framework 4 view helper built on top of the Twig 3 templating component", - "homepage": "https://www.slimframework.com", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", "keywords": [ - "framework", - "slim", - "template", - "twig", - "view" + "cli", + "command-line", + "console", + "terminal" ], "support": { - "issues": "https://github.com/slimphp/Twig-View/issues", - "source": "https://github.com/slimphp/Twig-View/tree/3.3.0" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, - "time": "2022-01-02T05:14:45+00:00" + "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" + } + ], + "time": "2024-02-22T20:27:10+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "name": "symfony/css-selector", + "version": "v7.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "url": "https://github.com/symfony/css-selector.git", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" + }, + "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" + } + ], + "time": "2024-01-23T15:02:46+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -2070,7 +3364,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2099,7 +3393,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -2115,20 +3409,669 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "name": "symfony/error-handler", + "version": "v6.4.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "url": "https://github.com/symfony/error-handler.git", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.4.4" + }, + "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" + } + ], + "time": "2024-02-22T20:27:10+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" + }, + "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" + } + ], + "time": "2024-01-23T15:02:46+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + }, + "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" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.0" + }, + "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" + } + ], + "time": "2023-10-31T17:30:12+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" + }, + "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" + } + ], + "time": "2024-02-08T15:01:18+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7a186f64a7f02787c04e8476538624d6aa888e42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7a186f64a7f02787c04e8476538624d6aa888e42", + "reference": "7a186f64a7f02787c04e8476538624d6aa888e42", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.4.4" + }, + "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" + } + ], + "time": "2024-02-27T06:32:13+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.4.4" + }, + "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" + } + ], + "time": "2024-02-03T21:33:47+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.4.3" + }, + "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" + } + ], + "time": "2024-01-30T08:32:12+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -2142,9 +4085,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2181,7 +4121,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -2197,20 +4137,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -2221,9 +4161,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2262,7 +4199,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -2278,20 +4215,104 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "name": "symfony/polyfill-intl-idn", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + }, + "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" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -2302,9 +4323,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2346,7 +4364,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -2362,20 +4380,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -2389,9 +4407,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2429,7 +4444,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -2445,20 +4460,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "name": "symfony/polyfill-php72", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -2466,9 +4481,79 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" + }, + "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" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2512,7 +4597,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -2528,30 +4613,28 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "name": "symfony/polyfill-php83", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -2562,7 +4645,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -2582,7 +4665,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2591,7 +4674,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -2607,38 +4690,108 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/property-access", - "version": "v5.4.22", + "name": "symfony/polyfill-uuid", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "ffee082889586b5718347b291e04071f4d07b38f" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/ffee082889586b5718347b291e04071f4d07b38f", - "reference": "ffee082889586b5718347b291e04071f4d07b38f", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" + "php": ">=7.1" }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" + "provide": { + "ext-uuid": "*" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" + }, + "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" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "710e27879e9be3395de2b98da3f52a946039f297" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", + "shasum": "" + }, + "require": { + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2658,21 +4811,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.22" + "source": "https://github.com/symfony/process/tree/v6.4.4" }, "funding": [ { @@ -2688,49 +4830,45 @@ "type": "tidelift" } ], - "time": "2023-03-14T14:59:20+00:00" + "time": "2024-02-20T12:31:00+00:00" }, { - "name": "symfony/property-info", - "version": "v6.2.8", + "name": "symfony/routing", + "version": "v6.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "400a019b7c05030599fd15f02b3d4ce287631732" + "url": "https://github.com/symfony/routing.git", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/400a019b7c05030599fd15f02b3d4ce287631732", - "reference": "400a019b7c05030599fd15f02b3d4ce287631732", + "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/string": "^5.4|^6.0" + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<5.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" + "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2742,26 +4880,24 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.2.8" + "source": "https://github.com/symfony/routing/tree/v6.4.3" }, "funding": [ { @@ -2777,38 +4913,120 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2024-01-30T13:55:02+00:00" }, { - "name": "symfony/string", - "version": "v6.2.8", + "name": "symfony/service-contracts", + "version": "v3.4.1", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.4.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" + } + ], + "time": "2023-12-26T14:02:43+00:00" + }, + { + "name": "symfony/string", + "version": "v7.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", + "shasum": "" + }, + "require": { + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2847,7 +5065,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v7.0.4" }, "funding": [ { @@ -2863,32 +5081,35 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2024-02-01T13:17:36+00:00" }, { "name": "symfony/translation", - "version": "v6.2.8", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5" + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/817535dbb1721df8b3a8f2489dc7e50bcd6209b5", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5", + "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -2896,25 +5117,19 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -2945,7 +5160,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.8" + "source": "https://github.com/symfony/translation/tree/v6.4.4" }, "funding": [ { @@ -2961,32 +5176,29 @@ "type": "tidelift" } ], - "time": "2023-03-31T09:14:44+00:00" + "time": "2024-02-20T13:16:58+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3026,7 +5238,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -3042,35 +5254,2766 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { - "name": "symfony/yaml", - "version": "v5.4.21", + "name": "symfony/uid", + "version": "v6.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "3713e20d93e46e681e51605d213027e48dab3469" + "url": "https://github.com/symfony/uid.git", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3713e20d93e46e681e51605d213027e48dab3469", - "reference": "3713e20d93e46e681e51605d213027e48dab3469", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.4.3" + }, + "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" + } + ], + "time": "2024-01-23T14:51:35+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" + }, + "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" + } + ], + "time": "2024-02-15T11:23:52+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:43:29+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.49.0", + "illuminate/view": "^10.43.0", + "larastan/larastan": "^2.8.1", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.7", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.33.6" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2024-02-20T17:38:05+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.28.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "f84e444a3dbc1811803cd2a050bdd54ff6f5eef8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/f84e444a3dbc1811803cd2a050bdd54ff6f5eef8", + "reference": "f84e444a3dbc1811803cd2a050bdd54ff6f5eef8", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", + "php": "^8.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2024-02-23T00:24:47+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-12-10T02:24:34+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-10-11T15:45:01+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T15:38:30+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.5.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.11" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-02-25T14:05:00+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-14T13:18:12+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T10:55:06+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-04-11T05:39:26+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-24T13:22:09+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-01-31T14:18:45+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-01-03T15:49:39+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e", + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-02-09T16:08:40+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", + "shasum": "" + }, + "require": { + "php": ">=8.2", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -3101,7 +8044,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.21" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -3117,90 +8060,33 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { - "name": "tgalopin/html-sanitizer", - "version": "1.5.0", + "name": "theseer/tokenizer", + "version": "1.2.2", "source": { "type": "git", - "url": "https://github.com/tgalopin/html-sanitizer.git", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tgalopin/html-sanitizer/zipball/5d02dcb6f2ea4f505731eac440798caa1b3b0913", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { "ext-dom": "*", - "league/uri-parser": "^1.4.1", - "masterminds/html5": "^2.4", - "php": ">=7.1", - "psr/log": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.4", - "symfony/var-dumper": "^4.1" + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { - "psr-4": { - "HtmlSanitizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Titouan Galopin", - "email": "galopintitouan@gmail.com" - } - ], - "description": "Sanitize untrustworthy HTML user input", - "support": { - "issues": "https://github.com/tgalopin/html-sanitizer/issues", - "source": "https://github.com/tgalopin/html-sanitizer/tree/1.5.0" - }, - "abandoned": "symfony/html-sanitizer", - "time": "2021-09-14T08:27:50+00:00" - }, - { - "name": "twig/twig", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Twig\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3208,50 +8094,33 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.1" + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/theseer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" } ], - "time": "2023-02-08T07:49:20+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], - "packages-dev": [], "aliases": [], "minimum-stability": "stable", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, - "platform": [], + "platform": { + "php": "^8.1" + }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..9207160 --- /dev/null +++ b/config/app.php @@ -0,0 +1,188 @@ +<?php + +use Illuminate\Support\Facades\Facade; +use Illuminate\Support\ServiceProvider; + +return [ + + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application. This value is used when the + | framework needs to place the application's name in a notification or + | any other location as required by the application or its packages. + | + */ + + 'name' => env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => ServiceProvider::defaultProviders()->merge([ + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Authentication Defaults + |-------------------------------------------------------------------------- + | + | This option controls the default authentication "guard" and password + | reset options for your application. You may change these defaults + | as required, but they're a perfect start for most applications. + | + */ + + 'defaults' => [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,71 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Broadcaster + |-------------------------------------------------------------------------- + | + | This option controls the default broadcaster that will be used by the + | framework when an event needs to be broadcast. You may set this to + | any of the connections defined in the "connections" array below. + | + | Supported: "pusher", "ably", "redis", "log", "null" + | + */ + + 'default' => env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,111 @@ +<?php + +use Illuminate\Support\Str; + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Cache Store + |-------------------------------------------------------------------------- + | + | This option controls the default cache connection that gets used while + | using this caching library. This connection is used when another is + | not explicitly specified when executing a given caching function. + | + */ + + 'default' => env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Cross-Origin Resource Sharing (CORS) Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure your settings for cross-origin resource sharing + | or "CORS". This determines what cross-origin operations may execute + | in web browsers. You are free to adjust these settings as needed. + | + | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + | + */ + + 'paths' => ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/config/database.php @@ -0,0 +1,151 @@ +<?php + +use Illuminate\Support\Str; + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Database Connection Name + |-------------------------------------------------------------------------- + | + | Here you may specify which of the database connections below you wish + | to use as your default connection for all database work. Of course + | you may use many connections at once using the Database library. + | + */ + + 'default' => env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,76 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Filesystem Disk + |-------------------------------------------------------------------------- + | + | Here you may specify the default filesystem disk that should be used + | by the framework. The "local" disk, as well as a variety of cloud + | based disks are available to your application. Just store away! + | + */ + + 'default' => env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..0e8a0bb --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,54 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Hash Driver + |-------------------------------------------------------------------------- + | + | This option controls the default hash driver that will be used to hash + | passwords for your application. By default, the bcrypt algorithm is + | used; however, you remain free to modify this option if you wish. + | + | Supported: "bcrypt", "argon", "argon2id" + | + */ + + 'driver' => 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + 'verify' => true, + ], + +]; diff --git a/config/init/folks-template.json b/config/init/folks-template.json deleted file mode 100644 index 0933e36..0000000 --- a/config/init/folks-template.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "", - "handle": "", - "avi": "/assets/images/global/default-avi.png", - "email": "", - "password": "", - "key": "", - "secret": "", - "role": "", - "created": "", - "updated": "", - "deleted": null - } -] diff --git a/config/init/settings-template.json b/config/init/settings-template.json deleted file mode 100644 index a9681d8..0000000 --- a/config/init/settings-template.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "global": { - "base_url": "http://your.domain", - "title": "This is a Title", - "descriptions": "Because it should be easy.", - "background": "/assets/images/global/default-bg.jpg", - "private": "true", - "renderOnSave": "false", - "theme": "fipamo-default", - "display_limit": 5, - "last_backup": null, - "externalAPI": "false", - "dynamicRender": "false" - }, - "library_stats": { - "current_index": 1 - }, - "email": { - "active": "none", - "smtp": { - "domain": "", - "email": "", - "password": "" - }, - "mailgun": { - "domain": "", - "api-key": "" - } - }, - "menu": [] -} diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,131 @@ +<?php + +use Monolog\Handler\NullHandler; +use Monolog\Handler\StreamHandler; +use Monolog\Handler\SyslogUdpHandler; +use Monolog\Processor\PsrLogMessageProcessor; + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Log Channel + |-------------------------------------------------------------------------- + | + | This option defines the default log channel that gets used when writing + | messages to the logs. The name specified in this option should match + | one of the channels defined in the "channels" configuration array. + | + */ + + 'default' => env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..e894b2e --- /dev/null +++ b/config/mail.php @@ -0,0 +1,134 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Mailer + |-------------------------------------------------------------------------- + | + | This option controls the default mailer that is used to send any email + | messages sent by your application. Alternative mailers may be setup + | and used as needed; however, this mailer will be used by default. + | + */ + + 'default' => env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover", "roundrobin" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => null, + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,109 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Queue Connection Name + |-------------------------------------------------------------------------- + | + | Laravel's queue API supports an assortment of back-ends via a single + | API, giving you convenient access to each back-end using the same + | syntax for every one. Here you may define a default connection. + | + */ + + 'default' => env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 0000000..35d75b3 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,83 @@ +<?php + +use Laravel\Sanctum\Sanctum; + +return [ + + /* + |-------------------------------------------------------------------------- + | Stateful Domains + |-------------------------------------------------------------------------- + | + | Requests from the following domains / hosts will receive stateful API + | authentication cookies. Typically, these should include your local + | and production domains which access your API via a frontend SPA. + | + */ + + 'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/config/services.php @@ -0,0 +1,34 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | Third Party Services + |-------------------------------------------------------------------------- + | + | This file is for storing the credentials for third party services such + | as Mailgun, Postmark, AWS and more. This file provides the de facto + | location for this type of information, allowing packages to have + | a conventional file to locate the various service credentials. + | + */ + + 'mailgun' => [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..e738cb3 --- /dev/null +++ b/config/session.php @@ -0,0 +1,214 @@ +<?php + +use Illuminate\Support\Str; + +return [ + + /* + |-------------------------------------------------------------------------- + | Default Session Driver + |-------------------------------------------------------------------------- + | + | This option controls the default session "driver" that will be used on + | requests. By default, we will use the lightweight native driver but + | you may specify any of the other wonderful drivers provided here. + | + | Supported: "file", "cookie", "database", "apc", + | "memcached", "redis", "dynamodb", "array" + | + */ + + 'driver' => env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => false, + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ +<?php + +return [ + + /* + |-------------------------------------------------------------------------- + | View Storage Paths + |-------------------------------------------------------------------------- + | + | Most templating systems load templates from disk. Here you may specify + | an array of paths that should be checked for your views. Of course + | the usual Laravel view path has already been registered for you. + | + */ + + 'paths' => [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/content/themes/fipamo-default/archive.twig b/content/themes/fipamo-default/archive.twig deleted file mode 100644 index 681596e..0000000 --- a/content/themes/fipamo-default/archive.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} - <section> - <div class="page-title"> - <span>{{title}}</span> - </div> - </section> - <article> - <div class="page"> - {% for item in archives %} - <div class="archive-item"> - <span class="year"> - {{item.year}} - </span> - {% for data in item.year_data %} - <div class="archive-month"> - <span class="month"> - {{data.full_month}} - </span> - {% for page in data.pages %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{ "/"~item.year~"/"~data.month~"/"~page.slug }}">{{page.title}}</a><br /> - {% else %} - <a href="{{ "/"~item.year~"/"~data.month~"/"~page.slug~".html" }}">{{page.title}}</a><br /> - {% endif %} - - {% else %} - <a href="{{ "/"~item.year~"/"~data.month~"/"~page.slug~".html" }}">{{page.title}}</a><br /> - {% endif %} - {% endfor %} - </div> - - {% endfor %} - </div> - {% endfor %} - - </div> - </article> - {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/css/base.css b/content/themes/fipamo-default/assets/css/base.css deleted file mode 100644 index 2242b2b..0000000 --- a/content/themes/fipamo-default/assets/css/base.css +++ /dev/null @@ -1,600 +0,0 @@ -h1, h2, h3 { - color: #ebe5d4; -} - -h1 { - font-size: 2em; - font-weight: 400; -} - -h2 { - font-size: 1.75em; - font-weight: 400; -} - -h3 { - font-size: 1.5em; - font-weight: 300; -} - -html { - line-height: 1.15; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -body { - margin: 0; -} - -article, -aside, -footer, -header, -nav, -section { - display: block; -} - -h1 { - font-size: 2em; - margin: 0.67em 0; - line-height: 1em; -} - -figcaption, -figure, -main { - display: block; -} - -figure { - margin: 1em 40px; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -pre { - font-family: monospace, monospace; - font-size: 1em; -} - -a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} - -a:active, -a:hover { - outline-width: 0; -} - -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; -} - -b, -strong { - font-weight: inherit; - font-weight: bolder; -} - -kbd, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -dfn { - font-style: italic; -} - -mark { - background-color: #ff0; - color: #000; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 60%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.55em; - background: #151d26; - color: #151d26; - border-radius: 2px; - padding: 0 2px 0 2px; - margin: 0 2px 0 0; -} - -audio, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -img { - border-style: none; -} - -svg:not(:root) { - overflow: hidden; -} - -button, -input, -optgroup, -select, -textarea { - font-family: sans-serif; - font-size: 100%; - line-height: 1.15; - margin: 0; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, html [type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner, -button::-moz-focus-inner { - border-style: none; - padding: 0; -} - -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring, -button:-moz-focusring { - outline: 1px dotted ButtonText; -} - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; -} - -progress { - display: inline-block; - vertical-align: baseline; -} - -textarea { - overflow: auto; -} - -[type=checkbox], -[type=radio] { - box-sizing: border-box; - padding: 0; -} - -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -[type=search]::-webkit-search-cancel-button, -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -details, -menu { - display: block; -} - -summary { - display: list-item; -} - -canvas { - display: inline-block; -} - -template { - display: none; -} - -[hidden] { - display: none; -} - -form { - display: inline-block; -} -form a { - color: #151d26; -} -form p { - background: #e8c33e; - color: #151d26; - padding: 5px; - display: block; - border-radius: 5px; - text-align: left; -} - -input[type=email], input[type=password], input[type=text] { - border: 0; - border-radius: 5px; - padding: 5px; - margin: 10px 5px 0 0; - font: 18px Helvetica, Arial, sans-serif; - display: inline-block; - background: #151d26; - color: #e8c33e; -} - -textarea { - border: 0; - border-radius: 3px; - color: #ebe5d4; - font: 15px Helvetica, Arial, sans-serif; - background: #151d26; -} - -button, input[type=submit] { - background: #7ED07E; - color: #151d26; - font: 20px Helvetica, Arial, sans-serif; - border-radius: 5px; - position: relative; - cursor: pointer; - border: 0; - padding: 10px 0 5px 0; - transition: all 0.3s linear; -} - -select { - font: 14px Helvetica, Arial, sans-serif; - border: 1px solid #FC6399; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - color: #151d26; -} - -::-webkit-input-placeholder { - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -:-moz-placeholder { - /* Firefox 18- */ - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -::-moz-placeholder { - /* Firefox 19+ */ - font: 15px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -:-ms-input-placeholder { - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -html { - margin: 0; - padding: 0; - width: 100%; - height: 100%; - overflow: hidden; - font: 400 1.2em/1.4em Helvetica, Arial, sans-serif; -} -html body { - background: #ebe5d4; - margin: 0; - padding: 0; - perspective: 1px; - transform-style: preserve-3d; - height: 100%; - width: 100%; - overflow-y: scroll; - overflow-x: hidden; -} -html body a { - color: #151d26; - text-decoration: none; - border-bottom: 1px solid #7ED07E; -} -html body a:hover { - border-bottom: 1px solid #FC6399; -} -html body code { - background: #32302f; - color: #7ED07E; - border-radius: 3px; - padding: 3px; -} -html body pre { - background: #32302f; - color: #7ED07E; - border-radius: 3px; - padding: 3px; -} -html body code { - color: #FC6399; - background: none; -} -html body svg.icons { - width: 25px; - fill: #ebe5d4; -} -html body header { - background: #151d26; - height: 90%; - width: 100%; - border-top: #ebe5d4 3px solid; -} -html body header #media { - width: 100%; - height: 90%; - position: absolute; -} -html body header #media .slide { - transition: all 0.7s linear; - width: 100%; - height: 100%; - position: absolute; -} -html body header #media .hide { - opacity: 0; -} -html body header #media .show { - opacity: 1; -} -html body header #media video { - width: 100%; - height: 100%; - object-fit: cover; -} -html body header nav { - width: 97%; - margin: 10px auto; - z-index: 1000; - position: relative; - color: #151d26; -} -html body header nav .left, html body header nav .right { - width: 50%; - display: inline-block; - vertical-align: top; -} -html body header nav .left a.logo-link { - border-bottom: none; - margin: 0 0 20px 0; - display: block; -} -html body header nav .left a.logo-link #logo { - width: 50px; - border-bottom: none; -} -html body header nav .right { - text-align: right; -} -html body header nav .right a.menu-link { - background: #FC6399; - margin-bottom: 4px; - padding: 3px; - border-radius: 2px; - display: inline-block; - font-size: 0.8em; - border-bottom: none; -} -html body header nav .right a.menu-link:hover { - background: #FC6399; -} -html body .container { - z-index: 2; - background: #ebe5d4; - line-height: 30px; - font-weight: lighter; - width: 100%; - color: #32302f; -} -html body .container article { - position: relative; - width: 80%; - height: 80%; - max-width: 840px; - background: #ebe5d4; - vertical-align: top; - color: #32302f; - margin: 0 auto; -} -html body .container article .index, html body .container article .page { - padding: 0 0 15px 0; -} -html body .container article .index img, html body .container article .page img { - display: block; - width: 100%; -} -html body .container article .index h1, html body .container article .index h2, html body .container article .page h1, html body .container article .page h2 { - color: #151d26; -} -html body .container article .index p, html body .container article .page p { - font: 300 1.25em/1.6em Helvetica, Arial, sans-serif; -} -html body .container article .index .page_files .page_doc a, html body .container article .page .page_files .page_doc a { - background: #32302f; - border-radius: 3px; - color: #ebe5d4; - padding: 3px; - margin: 0 5px 0 0; -} -html body .container article .index .meta, html body .container article .page .meta { - font: 500 0.8em/1.3em Helvetica, Arial, sans-serif; - padding: 5px 0 0 0; - border-top: 1px solid #151d26; - background: #ebe5d4; -} -html body .container article .index .meta a, html body .container article .page .meta a { - font-size: 0.8em; - font-weight: 400; -} -html body .container article .index .archive-item, html body .container article .page .archive-item { - padding: 15px 0 20px 0; -} -html body .container article .index .archive-item span.year, html body .container article .page .archive-item span.year { - font-size: 1.5em; - font-weight: 500; - padding: 5px; - display: block; - color: #151d26; -} -html body .container article .index .archive-item .archive-month, html body .container article .page .archive-item .archive-month { - display: inline-block; - vertical-align: top; - width: 30%; - padding: 5px; -} -html body .container article .index .archive-item .archive-month span.month, html body .container article .page .archive-item .archive-month span.month { - color: #FC6399; - font-size: 1.5em; - font-weight: 300; - padding: 5px; - display: block; -} -html body .container section { - padding: 0 0 20px 0; - background: #151d26; -} -html body .container section a { - color: #ebe5d4; -} -html body .container section .index-lists, html body .container section .page-title { - max-width: 840px; - width: 80%; - margin: 0 auto; - padding: 20px 0 0 0; -} -html body .container section .index-lists span, html body .container section .page-title span { - font-size: 2em; - color: #FC6399; - font-weight: 400; - width: 80%; - margin: 0 auto; - padding: 20px 0 0 0; -} -html body .container section .index-lists .recent, html body .container section .index-lists .featured, html body .container section .page-title .recent, html body .container section .page-title .featured { - display: inline-block; - width: 50%; - vertical-align: top; -} -html body .container section .index-lists label, html body .container section .page-title label { - background: #32302f; - color: #ebe5d4; - font-size: 1.5em; - line-height: 1.3; -} -html body footer { - background: #ebe5d4; - padding: 10px; - color: #151d26; - font-size: 0.8em; - font-weight: 600; - height: 100px; -} -html body footer .inner { - margin: 20px auto; - width: 80%; - max-width: 840px; -} -html body footer .inner a { - color: #FC6399; -} -html body header nav { - width: 98%; -} -html body header span { - font-size: 2.5em; -} -html body header .container article .index .archive-item .archive-month, html body header .container article .page .archive-item .archive-month { - width: 45%; -} -html body header nav { - width: 96%; -} -html body header .container article .index, html body header .container article .page { - margin: 0; -} -html body header .container article .index p, html body header .container article .page p { - font: 300 1em/1.6em Helvetica, Arial, sans-serif; -} -html body header .container section .index-lists .recent, html body header .container section .index-lists .featured { - width: 100% !important; -} -html body header nav { - width: 95%; -} -html body .container article .index, html body .container article .page { - margin: 0; -} -html body .container article .index p, html body .container article .page p { - font: 300 0.9em/1.7em Helvetica, Arial, sans-serif; -} -html body .container article .index .archive-item .archive-month, html body .container article .page .archive-item .archive-month { - width: 95%; -} - -/*# sourceMappingURL=base.css.map */ diff --git a/content/themes/fipamo-default/assets/css/base.css.map b/content/themes/fipamo-default/assets/css/base.css.map deleted file mode 100644 index 361940b..0000000 --- a/content/themes/fipamo-default/assets/css/base.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../../styles/_typography.sass","../../../styles/_normalize.sass","../../../styles/_colors.sass","../../../styles/_forms.sass","../../../styles/_structure.sass"],"names":[],"mappings":"AAGA;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AChBJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AACJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAGJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA,YCnFM;EDoFN,OCpFM;EDqFN;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAGA;EACI;EACA;;;AAER;EACI;;;AAGA;EACI;;;AAER;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;EAII;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AEpMJ;EACI;;AACA;EACI,ODHE;;ACIN;EACI,YDHI;ECIJ,ODNE;ECOF;EACA;EACA;EACA;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA,YDnBM;ECoBN,ODlBQ;;;ACoBZ;EACI;EACA;EACA,ODrBK;ECsBL;EACA,YD3BM;;;AC6BV;EACI,YD3BS;EC4BT,OD/BM;ECgCN;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA,OD9CM;;;ACgDV;EACI;EACA,OD9CK;;;ACgDT;AACI;EACA;EACA,ODnDK;;;ACqDT;AACI;EACA;EACA,ODxDK;;;AC0DT;EACI;EACA,OD5DK;;;AEJT;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,YFLK;EEML;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,OFpBI;EEqBJ;EACA;;AAEA;EACE;;AAEJ;EACE,YFvBG;EEwBH,OF1BO;EE2BP;EACA;;AAEF;EACE,YF7BG;EE8BH,OFhCO;EEiCP;EACA;;AACF;EACE,OFtCO;EEuCP;;AAEF;EACE;EACA,MFxCG;;AE0CL;EACE,YF/CI;EEgDJ;EACA;EACA;;AACA;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;;AACF;EACE;;AACF;EACE;EACA;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA,OFzEE;;AE0EF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AACA;EACE;EACA;;AACN;EACE;;AACA;EACE,YFxFC;EEyFD;EACA;EACA;EACA;EACA;EACA;;AACA;EACE,YFhGD;;AEkGT;EACE;EACA,YFjGG;EEkGH;EACA;EACA;EAEA,OFrGG;;AEsGH;EACE;EACA;EACA;EACA;EAEA,YF7GC;EE8GD;EACA,OF9GC;EE+GD;;AAGA;EACE;;AACA;EACE;EACA;;AACF;EACE,OF7HF;;AE8HA;EACE;;AAIE;EACE,YF/HP;EEgIO;EACA,OFlIP;EEmIO;EACA;;AACN;EACE;EACA;EACA;EACA,YFzIH;;AE0IG;EACE;EACA;;AAEJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA,OFzJJ;;AE0JE;EACE;EACA;EACA;EACA;;AACA;EACE,OF/JH;EEgKG;EACA;EACA;EACA;;AACV;EACE;EACA,YFvKE;;AEwKF;EACE,OFrKD;;AEsKD;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA,OFjLC;EEkLD;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;;AACF;EACE,YFvLH;EEwLG,OFzLH;EE0LG;EACA;;AAER;EACE,YF9LG;EE+LH;EACA,OFpMI;EEqMJ;EACA;EACA;;AACA;EACE;EACA;EACA;;AACA;EACE,OF5MG;;AEkNP;EACE;;AACF;EACE;;AAKM;EACE;;AAIV;EACE;;AAGE;EACE;;AACA;EACE;;AAGF;EACE;;AAIR;EACE;;AAGA;EACE;;AACA;EACE;;AAEA;EACE","file":"base.css"} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/default-avi.png b/content/themes/fipamo-default/assets/images/global/default-avi.png deleted file mode 100644 index 99ee4bb..0000000 Binary files a/content/themes/fipamo-default/assets/images/global/default-avi.png and /dev/null differ diff --git a/content/themes/fipamo-default/assets/images/global/default-bg.jpg b/content/themes/fipamo-default/assets/images/global/default-bg.jpg deleted file mode 100644 index ff29737..0000000 Binary files a/content/themes/fipamo-default/assets/images/global/default-bg.jpg and /dev/null differ diff --git a/content/themes/fipamo-default/assets/images/global/sprite.svg b/content/themes/fipamo-default/assets/images/global/sprite.svg deleted file mode 100644 index 565e7ab..0000000 --- a/content/themes/fipamo-default/assets/images/global/sprite.svg +++ /dev/null @@ -1,823 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><symbol viewBox='0 0 20 20' id='entypo-500px-with-circle'> - <path d="M8.349 9.257a2.55 2.55 0 0 0-.497-.293 1.257 1.257 0 0 0-.519-.117.907.907 0 0 0-.757.361 1.29 1.29 0 0 0-.281.812c0 .327.096.596.287.805s.455.314.791.314c.173 0 .345-.035.519-.104.173-.068.337-.154.491-.259.155-.104.301-.222.437-.354.137-.131.259-.262.368-.389a12.19 12.19 0 0 0-.382-.387 4.52 4.52 0 0 0-.457-.389zm4.278-.41a1.23 1.23 0 0 0-.525.117 2.309 2.309 0 0 0-.478.293c-.15.118-.293.248-.43.389-.137.141-.261.271-.368.389.118.137.245.272.382.402.137.133.281.25.438.355.153.104.314.188.483.252.168.064.349.096.539.096.337 0 .595-.109.777-.328a1.21 1.21 0 0 0 .272-.805c0-.318-.099-.592-.293-.818-.195-.228-.461-.342-.797-.342zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.835 10.562c-.108.309-.263.58-.463.811-.2.233-.448.414-.743.546a2.4 2.4 0 0 1-.989.197c-.282 0-.546-.043-.791-.129a3.097 3.097 0 0 1-.689-.342 4.17 4.17 0 0 1-.608-.49c-.19-.188-.372-.38-.546-.58-.19.2-.377.393-.559.58a3.86 3.86 0 0 1-.581.49 2.864 2.864 0 0 1-.668.342c-.24.086-.511.129-.812.129a2.39 2.39 0 0 1-.996-.197 2.328 2.328 0 0 1-.75-.532 2.266 2.266 0 0 1-.478-.798A3.022 3.022 0 0 1 5 9.994c0-.355.052-.684.157-.989.105-.305.258-.568.457-.792.2-.224.445-.399.737-.532a2.36 2.36 0 0 1 .982-.197c.3 0 .575.045.825.137.25.09.481.211.695.361.215.149.415.322.602.518s.37.402.552.621c.174-.209.354-.414.539-.613.188-.201.387-.376.602-.525.213-.15.445-.271.695-.361.25-.092.521-.137.81-.137.365 0 .692.062.984.191.291.127.536.301.736.524.2.224.354.483.463.784.11.301.164.627.164.982 0 .356-.054.688-.165.996z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-500px'> - <path d="M6.398 14.775c.481-.174.928-.4 1.337-.683.41-.282.797-.608 1.16-.982.363-.373.736-.759 1.118-1.159.346.4.71.786 1.092 1.159.382.374.787.7 1.214.982.428.282.887.509 1.379.683.49.173 1.017.259 1.582.259.727 0 1.387-.132 1.977-.396a4.175 4.175 0 0 0 1.487-1.092 5.03 5.03 0 0 0 .928-1.623A5.911 5.911 0 0 0 20 9.932c0-.71-.109-1.364-.328-1.964a4.735 4.735 0 0 0-.928-1.569 4.234 4.234 0 0 0-1.473-1.05c-.583-.256-1.238-.383-1.966-.383-.581 0-1.123.092-1.623.273-.5.182-.964.423-1.391.723-.428.3-.828.65-1.201 1.051-.372.399-.732.81-1.078 1.228a25.66 25.66 0 0 0-1.104-1.242 8.026 8.026 0 0 0-1.201-1.037 5.966 5.966 0 0 0-1.391-.723 4.796 4.796 0 0 0-1.65-.273c-.728 0-1.385.133-1.965.396a4.358 4.358 0 0 0-1.474 1.064 4.54 4.54 0 0 0-.914 1.583A6.05 6.05 0 0 0 0 9.985c0 .71.108 1.374.326 1.992.219.619.537 1.15.955 1.597.419.446.919.801 1.5 1.064.584.264 1.246.396 1.993.396.6 0 1.142-.086 1.624-.259zM3.164 11.65c-.383-.418-.573-.955-.573-1.609 0-.6.186-1.142.561-1.624.372-.48.876-.723 1.515-.723.345 0 .689.078 1.035.232.346.154.678.35.997.587.317.237.622.496.912.777.291.283.546.542.765.778-.219.255-.464.515-.737.776a6.18 6.18 0 0 1-.872.71c-.311.21-.637.382-.983.519a2.79 2.79 0 0 1-1.036.205c-.675 0-1.202-.209-1.584-.628zm11.092.438a4.655 4.655 0 0 1-.968-.505 6.23 6.23 0 0 1-.874-.709 12.192 12.192 0 0 1-.764-.806c.218-.236.463-.495.736-.778.273-.281.56-.54.859-.776.3-.237.619-.433.955-.587a2.505 2.505 0 0 1 1.051-.232c.673 0 1.204.227 1.596.683.392.454.587 1 .587 1.638 0 .637-.183 1.172-.546 1.608-.364.438-.882.655-1.555.655a3.047 3.047 0 0 1-1.077-.191z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-add-to-list'> - <path d="M19.4 9H16V5.6c0-.6-.4-.6-1-.6s-1 0-1 .6V9h-3.4c-.6 0-.6.4-.6 1s0 1 .6 1H14v3.4c0 .6.4.6 1 .6s1 0 1-.6V11h3.4c.6 0 .6-.4.6-1s0-1-.6-1zm-12 0H.6C0 9 0 9.4 0 10s0 1 .6 1h6.8c.6 0 .6-.4.6-1s0-1-.6-1zm0 5H.6c-.6 0-.6.4-.6 1s0 1 .6 1h6.8c.6 0 .6-.4.6-1s0-1-.6-1zm0-10H.6C0 4 0 4.4 0 5s0 1 .6 1h6.8C8 6 8 5.6 8 5s0-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-add-user'> - <path d="M15.989 19.129C16 17 13.803 15.74 11.672 14.822c-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.014-.234-.011-.871zM17 10V7h-2v3h-3v2h3v3h2v-3h3v-2h-3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-address'> - <path d="M19.799 5.165l-2.375-1.83a1.997 1.997 0 0 0-.521-.237A2.035 2.035 0 0 0 16.336 3H9.5l.801 5h6.035c.164 0 .369-.037.566-.098s.387-.145.521-.236l2.375-1.832c.135-.091.202-.212.202-.334s-.067-.243-.201-.335zM8.5 1h-1a.5.5 0 0 0-.5.5V5H3.664c-.166 0-.37.037-.567.099-.198.06-.387.143-.521.236L.201 7.165C.066 7.256 0 7.378 0 7.5c0 .121.066.242.201.335l2.375 1.832c.134.091.323.175.521.235.197.061.401.098.567.098H7v8.5a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-17a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-adjust'> - <path d="M19 9.199h-.98c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799H19c.552 0 1-.357 1-.799 0-.441-.449-.801-1-.801zM10 4.5A5.483 5.483 0 0 0 4.5 10c0 3.051 2.449 5.5 5.5 5.5 3.05 0 5.5-2.449 5.5-5.5S13.049 4.5 10 4.5zm0 9.5c-2.211 0-4-1.791-4-4 0-2.211 1.789-4 4-4v8zm-7-4c0-.441-.449-.801-1-.801H1c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799h1c.551 0 1-.358 1-.799zm7-7c.441 0 .799-.447.799-1V1c0-.553-.358-1-.799-1-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1zm0 14c-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1 .441 0 .799-.447.799-1v-1c0-.553-.358-1-.799-1zm7.365-13.234c.391-.391.454-.961.142-1.273s-.883-.248-1.272.143l-.7.699c-.391.391-.454.961-.142 1.273s.883.248 1.273-.143l.699-.699zM3.334 15.533l-.7.701c-.391.391-.454.959-.142 1.271s.883.25 1.272-.141l.7-.699c.391-.391.454-.961.142-1.274s-.883-.247-1.272.142zm.431-12.898c-.39-.391-.961-.455-1.273-.143s-.248.883.141 1.274l.7.699c.391.391.96.455 1.272.143s.249-.883-.141-1.273l-.699-.7zm11.769 14.031l.7.699c.391.391.96.453 1.272.143.312-.312.249-.883-.142-1.273l-.699-.699c-.391-.391-.961-.455-1.274-.143s-.248.882.143 1.273z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-air'> - <path d="M2.643 6.357c1.747-1.5 3.127-2.686 6.872-.57 1.799 1.016 3.25 1.4 4.457 1.398 2.115 0 3.486-1.176 4.671-2.193a1.037 1.037 0 0 0 .122-1.439.987.987 0 0 0-1.41-.125c-1.746 1.502-3.127 2.688-6.872.57-4.948-2.793-7.266-.803-9.128.797a1.037 1.037 0 0 0-.121 1.439.986.986 0 0 0 1.409.123zm14.712 2.178c-1.746 1.5-3.127 2.688-6.872.57-4.948-2.795-7.266-.804-9.128.795a1.037 1.037 0 0 0-.121 1.439.986.986 0 0 0 1.409.125c1.747-1.501 3.127-2.687 6.872-.572 1.799 1.018 3.25 1.4 4.457 1.4 2.115 0 3.486-1.176 4.671-2.195a1.035 1.035 0 0 0 .122-1.438.986.986 0 0 0-1.41-.124zm0 5.106c-1.746 1.502-3.127 2.688-6.872.572-4.948-2.795-7.266-.805-9.128.795a1.037 1.037 0 0 0-.121 1.439.985.985 0 0 0 1.409.123c1.747-1.5 3.127-2.685 6.872-.57 1.799 1.016 3.25 1.4 4.457 1.4 2.115 0 3.486-1.178 4.671-2.195a1.037 1.037 0 0 0 .122-1.439.988.988 0 0 0-1.41-.125z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft-landing'> - <path d="M18.752 16.038c-.097.266-.822 1.002-6.029-.878l-5.105-1.843C5.841 12.676 3.34 11.668 2.36 11.1c-.686-.397-.836-1.282-.836-1.282s-.163-2.956-.263-3.684c-.1-.728.095-.853.796-.492.436.225 1.865 2.562 2.464 3.567 1.512.381 2.862.761 3.493.949-.257-1.717-.74-4.928-.913-5.933-.166-.963.55-.535.55-.535.331.19.983.661 1.206 1.002 1.522 2.326 3.672 6.6 3.836 6.928.896.28 2.277.733 3.102 1.03 2.156.779 3.087 3.034 2.957 3.388z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft-take-off'> - <path d="M19.87 6.453c.119.257.127 1.29-4.884 3.642l-4.913 2.306c-1.71.803-4.191 1.859-5.285 2.151-.766.204-1.497-.316-1.497-.316S1.085 12.261.499 11.817c-.585-.444-.535-.67.215-.91.467-.149 3.13.493 4.265.78A91.697 91.697 0 0 1 8.12 9.889c-1.396-1.033-4.008-2.962-4.841-3.55-.799-.565.01-.768.01-.768.368-.099 1.162-.228 1.562-.144 2.721.569 7.263 2.071 7.611 2.186a90.641 90.641 0 0 1 2.922-1.465c2.075-.974 4.327-.037 4.486.305z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft'> - <path d="M12.496 17.414c-.394-1.096-1.805-4.775-2.39-6.297-1.103.737-2.334 1.435-3.512 1.928-.366 1.28-1.094 3.709-1.446 4.033-.604.557-.832.485-.925-.279-.093-.764-.485-3.236-.485-3.236s-2.162-1.219-2.84-1.568-.667-.591.057-.974c.422-.223 2.927-.085 4.242.005.861-.951 1.931-1.882 2.993-2.679-1.215-1.076-4.15-3.675-5.034-4.424-.776-.658.079-.797.079-.797.39-.07 1.222-.132 1.628-.009 2.524.763 6.442 2.068 7.363 2.376l1.162-.821c4.702-3.33 5.887-2.593 6.111-2.27s.503 1.701-4.199 5.032l-1.16.823c-.029.98-.157 5.151-.311 7.811-.025.428-.367 1.198-.565 1.544-.001 0-.423.765-.768-.198z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-bottom'> - <path d="M13 11h-2V3H9v8H7l3 3 3-3zm4.4 4H2.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h14.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-horizontal-middle'> - <path d="M8 10L5 7v2H1v2h4v2l3-3zm7 3v-2h4V9h-4V7l-3 3 3 3zm-5 5c.553 0 1-.049 1-.6V2.6c0-.553-.447-.6-1-.6-.552 0-1 .047-1 .6v14.8c0 .551.448.6 1 .6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-left'> - <path d="M6 10l3 3v-2h8V9H9V7l-3 3zM4 2c-.553 0-1 .047-1 .6v14.8c0 .551.447.6 1 .6.552 0 1-.049 1-.6V2.6c0-.553-.448-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-right'> - <path d="M11 7v2H3v2h8v2l3-3-3-3zm4-4.4v14.8c0 .551.448.6 1 .6.553 0 1-.049 1-.6V2.6c0-.553-.447-.6-1-.6-.552 0-1 .047-1 .6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-top'> - <path d="M10 6L7 9h2v8h2V9h2l-3-3zm8-2c0-.553-.048-1-.6-1H2.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h14.8c.552 0 .6-.447.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-vertical-middle'> - <path d="M10 12l-3 3h2v4h2v-4h2l-3-3zm3-7h-2V1H9v4H7l3 3 3-3zm5 5c0-.553-.048-1-.6-1H2.6c-.552 0-.6.447-.6 1 0 .551.048 1 .6 1h14.8c.552 0 .6-.449.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-app-store'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17.564 13.862c-.413.916-.612 1.325-1.144 2.135-.742 1.13-1.79 2.538-3.087 2.55-1.152.01-1.448-.75-3.013-.741-1.564.008-1.89.755-3.043.744-1.297-.012-2.29-1.283-3.033-2.414-2.077-3.16-2.294-6.87-1.013-8.843.91-1.401 2.347-2.221 3.697-2.221 1.375 0 2.24.754 3.376.754 1.103 0 1.775-.756 3.365-.756 1.2 0 2.474.655 3.381 1.785-2.972 1.629-2.49 5.873.514 7.007zM12.463 3.808c.577-.742 1.016-1.788.857-2.858-.944.065-2.047.665-2.692 1.448-.584.71-1.067 1.763-.88 2.787 1.03.031 2.096-.584 2.715-1.377z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-archive'> - <path d="M13.981 2H6.018s-.996 0-.996 1h9.955c0-1-.996-1-.996-1zm2.987 3c0-1-.995-1-.995-1H4.027s-.995 0-.995 1v1h13.936V5zm1.99 1l-.588-.592V7H1.63V5.408L1.041 6C.452 6.592.03 6.75.267 8c.236 1.246 1.379 8.076 1.549 9 .186 1.014 1.217 1 1.217 1h13.936s1.03.014 1.217-1c.17-.924 1.312-7.754 1.549-9 .235-1.25-.187-1.408-.777-2zM14 11.997c0 .554-.449 1.003-1.003 1.003H7.003A1.003 1.003 0 0 1 6 11.997V10h1v2h6v-2h1v1.997z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-area-graph'> - <path d="M20 2v16H.32c-.318 0-.416-.209-.216-.465l4.469-5.748a.526.526 0 0 1 .789-.062l1.419 1.334a.473.473 0 0 0 .747-.096l3.047-4.74a.466.466 0 0 1 .741-.09l2.171 2.096c.232.225.559.18.724-.1l5.133-7.785C19.51 2.062 19.75 2 20 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-down'> - <path d="M2.5 10H6V3h8v7h3.5L10 17.5 2.5 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-left'> - <path d="M10 2.5V6h7v8h-7v3.5L2.5 10 10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-right'> - <path d="M17.5 10L10 17.5V14H3V6h7V2.5l7.5 7.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-up'> - <path d="M10 2.5l7.5 7.5H14v7H6v-7H2.5L10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-down'> - <path d="M10 17.5L3.5 11H7V3h6v8h3.5L10 17.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-left'> - <path d="M2.5 10L9 3.5V7h8v6H9v3.5L2.5 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-down'> - <path d="M10 19.25L4.5 14H8V1h4v13h3.5L10 19.25z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-left'> - <path d="M.75 10L6 4.5V8h13v4H6v3.5L.75 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-right'> - <path d="M14 15.5V12H1V8h13V4.5l5.25 5.5L14 15.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-up'> - <path d="M10 .75L15.5 6H12v13H8V6H4.5L10 .75z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-right'> - <path d="M11 16.5V13H3V7h8V3.5l6.5 6.5-6.5 6.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-up'> - <path d="M10 2.5L16.5 9H13v8H7V9H3.5L10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-down'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM12 6H8v4H5.5l4.5 4.5 4.5-4.5H12V6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-left'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 5.5L5.5 10l4.5 4.5V12h4V8h-4V5.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-right'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 8H6v4h4v2.5l4.5-4.5L10 5.5V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-up'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 5.5l4.5 4.5H12v4H8v-4H5.5L10 5.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-attachment'> - <path d="M5.602 19.8c-1.293 0-2.504-.555-3.378-1.44-1.695-1.716-2.167-4.711.209-7.116l9.748-9.87c.988-1 2.245-1.387 3.448-1.06 1.183.32 2.151 1.301 2.468 2.498.322 1.22-.059 2.493-1.046 3.493l-9.323 9.44c-.532.539-1.134.858-1.738.922-.599.064-1.17-.13-1.57-.535-.724-.736-.828-2.117.378-3.337l6.548-6.63c.269-.272.705-.272.974 0s.269.714 0 .986l-6.549 6.631c-.566.572-.618 1.119-.377 1.364.106.106.266.155.451.134.283-.029.606-.216.909-.521l9.323-9.439c.64-.648.885-1.41.69-2.145a2.162 2.162 0 0 0-1.493-1.513c-.726-.197-1.48.052-2.12.7l-9.748 9.87c-1.816 1.839-1.381 3.956-.209 5.143 1.173 1.187 3.262 1.629 5.079-.212l9.748-9.87a.683.683 0 0 1 .974 0 .704.704 0 0 1 0 .987L9.25 18.15c-1.149 1.162-2.436 1.65-3.648 1.65z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-awareness-ribbon'> - <path d="M16.574 16.338c-.757-1.051-2.851-3.824-4.57-6.106.696-.999 1.251-1.815 1.505-2.242 1.545-2.594.874-4.26.022-5.67C12.677.909 12.542.094 10 .094c-2.543 0-2.678.815-3.531 2.227-.854 1.41-1.524 3.076.021 5.67.254.426.809 1.243 1.506 2.242-1.72 2.281-3.814 5.055-4.571 6.106-.176.244-.16.664.009 1.082.13.322.63 1.762.752 2.064.156.389.664.67 1.082.092.241-.334 2.582-3.525 4.732-6.522 2.149 2.996 4.491 6.188 4.732 6.522.417.578.926.297 1.082-.092.122-.303.622-1.742.752-2.064.167-.419.184-.839.008-1.083zm-6.94-9.275C8.566 5.579 7.802 3.852 7.802 3.852s.42-.758 2.198-.758 2.198.758 2.198.758-.766 1.727-1.833 3.211L10 7.56a40.64 40.64 0 0 1-.366-.497z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-back-in-time'> - <path d="M11 1.799c-4.445 0-8.061 3.562-8.169 7.996V10H.459l3.594 3.894L7.547 10H4.875v-.205C4.982 6.492 7.683 3.85 11 3.85c3.386 0 6.131 2.754 6.131 6.15 0 3.396-2.745 6.15-6.131 6.15a6.099 6.099 0 0 1-3.627-1.193l-1.406 1.504A8.13 8.13 0 0 0 11 18.199c4.515 0 8.174-3.67 8.174-8.199S15.515 1.799 11 1.799zM10 5v5a1.01 1.01 0 0 0 .293.707l3.2 3.2c.283-.183.55-.389.787-.628L12 11V5h-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-back'> - <path d="M19 7v6c0 1.103-.896 2-2 2H3v-3h13V8H5v2L1 6.5 5 3v2h12a2 2 0 0 1 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-baidu'> - <path d="M17.412 6.937c-.36-.283-.924-.4-1.463-.365-.416.026-.761.034-1.005.182-1.116.677-1.217 4.353.182 4.934 2.974 1.236 4.057-3.35 2.286-4.751zm-4.479 3.838c-.963-1.119-1.64-2.681-3.563-2.376-1.706.272-1.924 1.67-2.833 2.65-1.08 1.164-3.105 2.018-3.564 3.838-.335 1.329.116 2.892.913 3.473 1.566 1.137 4.474-.125 6.58.09 1.26.13 2.225.573 3.198.55 2.262-.054 4.09-1.67 3.107-4.295-.48-1.286-2.6-2.494-3.838-3.93zm-.274-3.93c1.134.033 2.302-1.264 2.376-2.467.098-1.57-.93-3.143-2.467-2.741-.914.239-1.664 1.41-1.736 2.56-.083 1.331.617 2.615 1.827 2.649zM8.273 6.48C9.45 6.321 9.94 4.908 9.736 3.282 9.566 1.943 8.84.645 7.268 1.089 5.103 1.7 5.448 6.862 8.273 6.48zM4.16 10.592c2.583-.385 1.98-5.938-.822-5.3-2.41.55-2.087 5.735.822 5.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bar-graph'> - <path d="M17 1h-2a1 1 0 0 0-1 1v16.992h4V2a1 1 0 0 0-1-1zm-6 6H9a1 1 0 0 0-1 1v10.992h4V8a1 1 0 0 0-1-1zm-6 6H3a1 1 0 0 0-1 1v4.992h4V14a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-basecamp'> - <path d="M10 2C5.327 2 .7 8.481.7 14.422.7 15.799 5.234 18 10 18s9.3-2.201 9.3-3.578C19.3 8.481 14.673 2 10 2zm.006 13.615c-5.198 0-6.673-2.068-6.673-2.722 0-1.287 2.13-4.485 2.906-4.485.719 0 1.542 1.811 2.314 1.811 1.241 0 2.567-3.954 3.579-3.954s4.601 5.178 4.601 6.749c0 .271-1.084 2.601-6.727 2.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-battery'> - <path d="M15.408 10c0-2.766 1.277-4.32 2.277-4.32H19C18.332 4.621 17.779 4 15.342 4H5.334C1.6 4 0 7.441 0 10s1.6 6 5.334 6h10.008c2.438 0 2.99-.621 3.658-1.68h-1.315c-1 0-2.277-1.554-2.277-4.32zm-2.72 1.795c-.164.25-.676.016-.676.016l-2.957-1.338s-.264.67-.467 1.141c-.205.471-.361 1.004-1.209.408-.849-.598-3.581-3.25-3.581-3.25s-.345-.284-.173-.551c.163-.252.676-.016.676-.016l2.956 1.336s.265-.668.468-1.139c.205-.47.361-1.006 1.209-.408.849.596 3.58 3.25 3.58 3.25s.345.283.174.551zm6.186-3.867h-.749c-.559 0-1.105.754-1.105 1.979 0 1.227.547 1.98 1.105 1.98h.749c.56 0 1.126-.754 1.126-1.98 0-1.225-.566-1.979-1.126-1.979z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-beamed-note'> - <path d="M17 1l-.002 13c0 1.243-1.301 3-3.748 3-1.243 0-2.25-.653-2.25-1.875 0-1.589 1.445-2.55 3-2.55.432 0 .754.059 1 .123V5.364L8 6.637V16h-.002c0 1.243-1.301 3-3.748 3C3.007 19 2 18.347 2 17.125c0-1.589 1.445-2.55 3-2.55.432 0 .754.059 1 .123V3l11-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-behance'> - <path d="M8.072 9.301s1.892-.147 1.892-2.459c0-2.315-1.548-3.441-3.51-3.441H0v12.926h6.454s3.941.129 3.941-3.816c-.001-.001.171-3.21-2.323-3.21zM2.844 5.697h3.61s.878 0 .878 1.344c0 1.346-.516 1.541-1.102 1.541H2.844V5.697zm3.427 8.332H2.844v-3.455h3.61s1.308-.018 1.308 1.775c0 1.512-.977 1.669-1.491 1.68zm9.378-7.341c-4.771 0-4.767 4.967-4.767 4.967s-.326 4.941 4.767 4.941c0 0 4.243.254 4.243-3.437H17.71s.072 1.391-1.988 1.391c0 0-2.184.152-2.184-2.25h6.423c.001-.001.709-5.612-4.312-5.612zm1.941 3.886h-4.074s.266-1.992 2.182-1.992 1.892 1.992 1.892 1.992zm.507-6.414H12.98v1.594h5.117V4.16z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bell'> - <path d="M14.65 8.512c-2.28-4.907-3.466-6.771-7.191-6.693-1.327.027-1.009-.962-2.021-.587-1.01.375-.143.924-1.177 1.773-2.902 2.383-2.635 4.587-1.289 9.84.567 2.213-1.367 2.321-.602 4.465.559 1.564 4.679 2.219 9.025.607 4.347-1.613 7.086-4.814 6.527-6.378-.765-2.145-2.311-.961-3.272-3.027zm-3.726 8.083c-3.882 1.44-7.072.594-7.207.217-.232-.65 1.253-2.816 5.691-4.463 4.438-1.647 6.915-1.036 7.174-.311.153.429-1.775 3.116-5.658 4.557zm-1.248-3.494c-2.029.753-3.439 1.614-4.353 2.389.643.584 1.847.726 3.046.281 1.527-.565 2.466-1.866 2.095-2.904l-.016-.036c-.251.082-.508.171-.772.27z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-blackboard'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M2.539 20H6l1.406-3.698-2.966-1.004L2.539 20zm10.055-3.698L14 20h3.461l-1.901-4.702-2.966 1.004zM18 2h-6.5L11 0H9l-.5 2H2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-block'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zM2.399 10a7.6 7.6 0 0 1 12.417-5.877L4.122 14.817A7.568 7.568 0 0 1 2.399 10zm7.6 7.599a7.56 7.56 0 0 1-4.815-1.722L15.878 5.184a7.6 7.6 0 0 1-5.879 12.415z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-book'> - <path d="M17 5.95v10.351c0 .522-.452.771-1 1.16-.44.313-1-.075-1-.587V6.76c0-.211-.074-.412-.314-.535-.24-.123-7.738-4.065-7.738-4.065-.121-.045-.649-.378-1.353-.016-.669.344-1.033.718-1.126.894l8.18 4.482c.217.114.351.29.351.516v10.802a.67.67 0 0 1-.369.585.746.746 0 0 1-.333.077.736.736 0 0 1-.386-.104c-.215-.131-7.774-4.766-8.273-5.067-.24-.144-.521-.439-.527-.658L3 3.385c0-.198-.023-.547.289-1.032C3.986 1.269 6.418.036 7.649.675l8.999 4.555c.217.112.352.336.352.72z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bookmark'> - <path d="M14 2v17l-4-4-4 4V2c0-.553.585-1.02 1-1h6c.689-.02 1 .447 1 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bookmarks'> - <path d="M15 0h-4a1 1 0 0 0-1 1l.023.222c1.102 0 2 .897 2 2v11.359L13 13.4l3 3.6V1a1 1 0 0 0-1-1zM9.023 3H5a1 1 0 0 0-1 1v16l3-3.6 3 3.6V4c0-.553-.424-1-.977-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bowl'> - <path d="M16.949 7.472c-2.176 2.902-4.095 3.002-7.046 3.152h-.101c-3.591-.002-6.138-1.336-6.138-1.832-.002-.471 2.298-1.697 5.605-1.819l.59-1.473-.057-.002c-4.908 0-7.791 1.562-7.791 3.051v2c0 .918.582 8.949 7.582 8.949s8-8.031 8-8.949v-2c0-.391-.201-.787-.584-1.158l-.06.081zm.64-4.77a1 1 0 0 0-1.399.201l-3.608 4.809 2.336-5.838a1 1 0 1 0-1.857-.742L9.802 9.274c2.882-.147 4.277-.227 6.067-2.611l1.919-2.561a1 1 0 0 0-.199-1.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-box'> - <path d="M18.399 2H1.6c-.332 0-.6.267-.6.6V5h18V2.6a.6.6 0 0 0-.601-.6zM2 16.6c0 .77.629 1.4 1.399 1.4h13.2c.77 0 1.4-.631 1.4-1.4V6H2v10.6zM7 8h6v2H7V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-briefcase'> - <path d="M9 10h2v2h9s-.149-4.459-.2-5.854C19.75 4.82 19.275 4 17.8 4h-3.208l-1.197-2.256C13.064 1.121 12.951 1 12.216 1H7.783c-.735 0-.847.121-1.179.744-.165.311-.7 1.318-1.196 2.256H2.199c-1.476 0-1.945.82-2 2.146C.145 7.473 0 12 0 12h9v-2zM7.649 2.916c.23-.432.308-.516.817-.516h3.067c.509 0 .588.084.816.516L12.924 4h-5.85l.575-1.084zM11 15H9v-2H.5s.124 1.797.199 3.322C.73 16.955.917 18 2.499 18H17.5c1.582 0 1.765-1.047 1.8-1.678.087-1.568.2-3.322.2-3.322H11v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-browser'> - <path d="M18 2H2C.9 2 0 2.9 0 4v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM4.5 3.75a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5zm-2.75.75a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM18 16H2V7h16v9zm0-11H6V4h12.019L18 5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-brush'> - <path d="M2.763 13.563c-1.515 1.488-.235 3.016-2.247 5.279-.908 1.023 3.738.711 6.039-1.551.977-.961.701-2.359-.346-3.389-1.047-1.028-2.47-1.3-3.446-.339zM19.539.659C18.763-.105 10.16 6.788 7.6 9.305c-1.271 1.25-1.695 1.92-2.084 2.42-.17.219.055.285.154.336.504.258.856.496 1.311.943.456.447.699.793.959 1.289.053.098.121.318.342.152.51-.383 1.191-.801 2.462-2.049C13.305 9.88 20.317 1.422 19.539.659z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bucket'> - <path d="M11 1C6.092 1 3.002 2.592 3.21 3.95c.06.389.225 1.945.434 3.273C1.239 8.157.442 9.672.549 10.907c.127 1.461 1.441 3.025 4.328 3.295 1.648.154 3.631-.75 4.916-2.295a1.4 1.4 0 1 1 1.238.691c-1.529 1.973-3.858 3.164-6.064 3.025.051.324.07.947.096 1.113.09.579 2.347 2.26 5.937 2.264 3.59-.004 5.847-1.685 5.938-2.263.088-.577 1.641-11.409 1.852-12.787C18.998 2.592 15.907 1 11 1zm-9.057 9.785c-.055-.643.455-1.498 1.924-2.139l.643 4.074c-1.604-.313-2.498-1.149-2.567-1.935zM11 6.024C7.41 6.022 4.863 4.69 4.863 4.192 4.861 3.698 7.41 2.402 11 2.404c3.59-.002 6.139 1.294 6.137 1.788 0 .498-2.547 1.83-6.137 1.832z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bug'> - <path d="M10 1a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4zm9 9h-3V7.503c0-.028-.007-.053-.008-.08l2.215-2.216a1 1 0 1 0-1.414-1.414l-2.215 2.215c-.028-.001-.053-.008-.08-.008H5.502c-.028 0-.053.007-.08.008L3.206 3.793a1 1 0 1 0-1.414 1.414l2.215 2.215C4.007 7.45 4 7.475 4 7.503V10H1a1 1 0 0 0 0 2h3c0 .78.156 1.52.427 2.204-.044.031-.094.05-.134.089L1.464 17.12a1 1 0 0 0 1.415 1.415l2.601-2.602A5.995 5.995 0 0 0 9 17.91V8h2v9.91a5.995 5.995 0 0 0 3.52-1.976l2.601 2.602a1 1 0 0 0 1.415-1.415l-2.829-2.828c-.04-.04-.09-.058-.134-.09A5.956 5.956 0 0 0 16 12h3a1 1 0 0 0 0-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cake'> - <path d="M9.584 6.036c1.952 0 2.591-1.381 1.839-2.843-.871-1.693 1.895-3.155.521-3.155-1.301 0-3.736 1.418-4.19 3.183-.339 1.324.296 2.815 1.83 2.815zm5.212 8.951l-.444-.383a1.355 1.355 0 0 0-1.735 0l-.442.382a3.326 3.326 0 0 1-2.174.801 3.325 3.325 0 0 1-2.173-.8l-.444-.384a1.353 1.353 0 0 0-1.734.001l-.444.383c-1.193 1.028-2.967 1.056-4.204.1V19a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-3.912c-1.237.954-3.011.929-4.206-.101zM10 7c-7.574 0-9 3.361-9 5v.469l1.164 1.003a1.355 1.355 0 0 0 1.735 0l.444-.383a3.353 3.353 0 0 1 4.345 0l.444.384c.484.417 1.245.42 1.735-.001l.442-.382a3.352 3.352 0 0 1 4.346-.001l.444.383c.487.421 1.25.417 1.735 0L19 12.469V12c0-1.639-1.426-5-9-5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-calculator'> - <path d="M14.6 1H5.398C4.629 1 4 1.629 4 2.4v15.2c0 .77.629 1.4 1.398 1.4H14.6c.769 0 1.4-.631 1.4-1.4V2.4c0-.771-.631-1.4-1.4-1.4zM7 12c.689 0 1.25.447 1.25 1S7.689 14 7 14c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM7 15c.689 0 1.25.447 1.25 1S7.689 17 7 17c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm3-3c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM10 15c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm3-3c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM13 15c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zM5 7V4h10v3H5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-calendar'> - <path d="M17 3h-1v2h-3V3H7v2H4V3H3c-1.101 0-2 .9-2 2v12c0 1.1.899 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 14H3V9h14v8zM6.5 1h-2v3.5h2V1zm9 0h-2v3.5h2V1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-camera'> - <path d="M10 8a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm8-3h-2.4a.888.888 0 0 1-.789-.57l-.621-1.861A.89.89 0 0 0 13.4 2H6.6c-.33 0-.686.256-.789.568L5.189 4.43A.889.889 0 0 1 4.4 5H2C.9 5 0 5.9 0 7v9c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-8 11a5 5 0 0 1-5-5 5 5 0 1 1 10 0 5 5 0 0 1-5 5zm7.5-7.8a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ccw'> - <path d="M.685 10h2.372v-.205c.108-4.434 3.724-7.996 8.169-7.996 4.515 0 8.174 3.672 8.174 8.201s-3.659 8.199-8.174 8.199a8.13 8.13 0 0 1-5.033-1.738l1.406-1.504a6.099 6.099 0 0 0 3.627 1.193c3.386 0 6.131-2.754 6.131-6.15 0-3.396-2.745-6.15-6.131-6.15-3.317 0-6.018 2.643-6.125 5.945V10h2.672l-3.494 3.894L.685 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chat'> - <path d="M5.8 12.2V6H2C.9 6 0 6.9 0 8v6c0 1.1.9 2 2 2h1v3l3-3h5c1.1 0 2-.9 2-2v-1.82a.943.943 0 0 1-.2.021h-7V12.2zM18 1H9c-1.1 0-2 .9-2 2v8h7l3 3v-3h1c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-check'> - <path d="M8.294 16.998c-.435 0-.847-.203-1.111-.553L3.61 11.724a1.392 1.392 0 0 1 .27-1.951 1.392 1.392 0 0 1 1.953.27l2.351 3.104 5.911-9.492a1.396 1.396 0 0 1 1.921-.445c.653.406.854 1.266.446 1.92L9.478 16.34a1.39 1.39 0 0 1-1.12.656c-.022.002-.042.002-.064.002z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-down'> - <path d="M4.516 7.548c.436-.446 1.043-.481 1.576 0L10 11.295l3.908-3.747c.533-.481 1.141-.446 1.574 0 .436.445.408 1.197 0 1.615-.406.418-4.695 4.502-4.695 4.502a1.095 1.095 0 0 1-1.576 0S4.924 9.581 4.516 9.163c-.409-.418-.436-1.17 0-1.615z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-left'> - <path d="M12.452 4.516c.446.436.481 1.043 0 1.576L8.705 10l3.747 3.908c.481.533.446 1.141 0 1.574-.445.436-1.197.408-1.615 0-.418-.406-4.502-4.695-4.502-4.695a1.095 1.095 0 0 1 0-1.576s4.084-4.287 4.502-4.695c.418-.409 1.17-.436 1.615 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-right'> - <path d="M9.163 4.516c.418.408 4.502 4.695 4.502 4.695a1.095 1.095 0 0 1 0 1.576s-4.084 4.289-4.502 4.695c-.418.408-1.17.436-1.615 0-.446-.434-.481-1.041 0-1.574L11.295 10 7.548 6.092c-.481-.533-.446-1.141 0-1.576.445-.436 1.197-.409 1.615 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-down'> - <path d="M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11l3.418-3.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-left'> - <path d="M12.141 13.418a.695.695 0 0 1 0 .978.68.68 0 0 1-.969 0l-3.83-3.908a.697.697 0 0 1 0-.979l3.83-3.908a.68.68 0 0 1 .969 0 .695.695 0 0 1 0 .978L9 10l3.141 3.418z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-right'> - <path d="M11 10L7.859 6.58a.695.695 0 0 1 0-.978.68.68 0 0 1 .969 0l3.83 3.908a.697.697 0 0 1 0 .979l-3.83 3.908a.68.68 0 0 1-.969 0 .695.695 0 0 1 0-.978L11 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-up'> - <path d="M6.582 12.141a.695.695 0 0 1-.978 0 .68.68 0 0 1 0-.969l3.908-3.83a.697.697 0 0 1 .979 0l3.908 3.83a.68.68 0 0 1 0 .969.697.697 0 0 1-.979 0L10 9l-3.418 3.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-down'> - <path d="M17.418 6.109a.697.697 0 0 1 .979 0 .68.68 0 0 1 0 .969l-7.908 7.83a.697.697 0 0 1-.979 0l-7.908-7.83a.68.68 0 0 1 0-.969.697.697 0 0 1 .979 0L10 13.25l7.418-7.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-left'> - <path d="M13.891 17.418a.697.697 0 0 1 0 .979.68.68 0 0 1-.969 0l-7.83-7.908a.697.697 0 0 1 0-.979l7.83-7.908a.68.68 0 0 1 .969 0 .697.697 0 0 1 0 .979L6.75 10l7.141 7.418z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-right'> - <path d="M13.25 10L6.109 2.58a.697.697 0 0 1 0-.979.68.68 0 0 1 .969 0l7.83 7.908a.697.697 0 0 1 0 .979l-7.83 7.908a.68.68 0 0 1-.969 0 .697.697 0 0 1 0-.979L13.25 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-up'> - <path d="M2.582 13.891c-.272.268-.709.268-.979 0s-.271-.701 0-.969l7.908-7.83a.697.697 0 0 1 .979 0l7.908 7.83a.68.68 0 0 1 0 .969.695.695 0 0 1-.978 0L10 6.75l-7.418 7.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-up'> - <path d="M15.484 12.452c-.436.446-1.043.481-1.576 0L10 8.705l-3.908 3.747c-.533.481-1.141.446-1.574 0-.436-.445-.408-1.197 0-1.615.406-.418 4.695-4.502 4.695-4.502a1.095 1.095 0 0 1 1.576 0s4.287 4.084 4.695 4.502c.409.418.436 1.17 0 1.615z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-down'> - <path d="M12.505 8.698L10 11 7.494 8.698a.512.512 0 0 0-.718 0 .5.5 0 0 0 0 .71l2.864 2.807a.51.51 0 0 0 .717 0l2.864-2.807a.498.498 0 0 0 0-.71.51.51 0 0 0-.716 0zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-left'> - <path d="M11.302 6.776a.5.5 0 0 0-.71 0L7.785 9.641a.51.51 0 0 0 0 .717l2.807 2.864a.498.498 0 0 0 .71 0 .51.51 0 0 0 0-.717L9 10l2.302-2.506a.512.512 0 0 0 0-.718zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-right'> - <path d="M11 10L8.698 7.494a.512.512 0 0 1 0-.718.5.5 0 0 1 .71 0l2.807 2.864a.51.51 0 0 1 0 .717l-2.807 2.864a.498.498 0 0 1-.71 0 .51.51 0 0 1 0-.717L11 10zM10 .4a9.6 9.6 0 0 1 9.6 9.6c0 5.303-4.298 9.6-9.6 9.6S.4 15.303.4 10A9.6 9.6 0 0 1 10 .4zm0 17.954a8.354 8.354 0 1 0 0-16.709 8.354 8.354 0 0 0 0 16.709z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-up'> - <path d="M10.359 7.785a.51.51 0 0 0-.717 0l-2.864 2.807a.498.498 0 0 0 0 .71.51.51 0 0 0 .717 0L10 9l2.506 2.302a.512.512 0 0 0 .718 0 .5.5 0 0 0 0-.71l-2.865-2.807zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-cross'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm4.789 11.461L13.06 14.79 10 11.729l-3.061 3.06L5.21 13.06 8.272 10 5.211 6.939 6.94 5.211 10 8.271l3.061-3.061 1.729 1.729L11.728 10l3.061 3.061z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-minus'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm5 9.4H5V9h10v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-plus'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm5 9.4h-4v4H9v-4H5V9h4V5h2v4h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199A7.6 7.6 0 1 1 10 2.4a7.6 7.6 0 1 1 0 15.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circular-graph'> - <path d="M17.584 9.372h2a9.554 9.554 0 0 0-.668-2.984L17.16 7.402c.224.623.371 1.283.424 1.97zm-3.483-8.077a9.492 9.492 0 0 0-3.086-.87v2.021a7.548 7.548 0 0 1 2.084.585l1.002-1.736zm2.141 4.327l1.741-1.005a9.643 9.643 0 0 0-2.172-2.285l-1.006 1.742a7.625 7.625 0 0 1 1.437 1.548zm-6.228 11.949a7.6 7.6 0 0 1-7.6-7.6c0-3.858 2.877-7.036 6.601-7.526V.424C4.182.924.414 5.007.414 9.971a9.6 9.6 0 0 0 9.601 9.601c4.824 0 8.807-3.563 9.486-8.2H17.48c-.658 3.527-3.748 6.199-7.466 6.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clapperboard'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M20 3v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h1l3 3h2.5l-3-3h3l3 3H13l-3-3h3l3 3h2.5l-3-3H19a1 1 0 0 1 1 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-classic-computer'> - <path d="M16 0H4C2.9 0 2 .899 2 2v15a1 1 0 0 0 1 1v2h14v-2a1 1 0 0 0 1-1V2c0-1.101-.899-2-2-2zm-2 15h-4v-1h4v1zm1-4H5V3h10v8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clipboard'> - <path d="M15.6 2l-1.2 3H5.6L4.4 2C3.629 2 3 2.629 3 3.4v15.2c0 .77.629 1.4 1.399 1.4h11.2c.77 0 1.4-.631 1.4-1.4V3.4C17 2.629 16.369 2 15.6 2zm-2 2l.9-2h-2.181L11.6 0H8.4l-.72 2H5.5l.899 2H13.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clock'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM11 9.33V4H9v6.245l-3.546 2.048 1 1.732 4.115-2.377A.955.955 0 0 0 11 10.9v-.168l4.24-4.166a6.584 6.584 0 0 0-.647-.766L11 9.33z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cloud'> - <path d="M20 11.32c0 2.584-2.144 4.68-4.787 4.68H3.617C1.619 16 0 14.416 0 12.463c0-1.951 1.619-3.535 3.617-3.535.146 0 .288.012.429.027a5.076 5.076 0 0 1-.057-.756C3.989 5.328 6.37 3 9.309 3c2.407 0 4.439 1.562 5.096 3.707a5 5 0 0 1 .809-.066C17.856 6.641 20 8.734 20 11.32z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-code'> - <path d="M5.719 14.75a.997.997 0 0 1-.664-.252L-.005 10l5.341-4.748a1 1 0 0 1 1.328 1.495L3.005 10l3.378 3.002a1 1 0 0 1-.664 1.748zm8.945-.002L20.005 10l-5.06-4.498a.999.999 0 1 0-1.328 1.495L16.995 10l-3.659 3.252a1 1 0 0 0 1.328 1.496zm-4.678 1.417l2-12a1 1 0 1 0-1.972-.329l-2 12a1 1 0 1 0 1.972.329z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cog'> - <path d="M16.783 10c0-1.049.646-1.875 1.617-2.443a8.932 8.932 0 0 0-.692-1.672c-1.089.285-1.97-.141-2.711-.883-.741-.74-.968-1.621-.683-2.711a8.732 8.732 0 0 0-1.672-.691c-.568.97-1.595 1.615-2.642 1.615-1.048 0-2.074-.645-2.643-1.615a8.697 8.697 0 0 0-1.671.691c.285 1.09.059 1.971-.684 2.711-.74.742-1.621 1.168-2.711.883A8.797 8.797 0 0 0 1.6 7.557c.97.568 1.615 1.394 1.615 2.443 0 1.047-.645 2.074-1.615 2.643a8.89 8.89 0 0 0 .691 1.672c1.09-.285 1.971-.059 2.711.682.741.742.969 1.623.684 2.711a8.841 8.841 0 0 0 1.672.693c.568-.973 1.595-1.617 2.643-1.617 1.047 0 2.074.645 2.643 1.617a8.963 8.963 0 0 0 1.672-.693c-.285-1.088-.059-1.969.683-2.711.741-.74 1.622-1.166 2.711-.883a8.811 8.811 0 0 0 .692-1.672c-.973-.569-1.619-1.395-1.619-2.442zM10 13.652a3.652 3.652 0 1 1 0-7.306 3.653 3.653 0 0 1 0 7.306z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-colours'> - <path d="M3.179 5.998a1.005 1.005 0 0 0-1.408.132L.494 7.669a1.004 1.004 0 0 0 .131 1.407l7.888 6.542-3.807-8.354-1.527-1.266zm3.834-3.315l-1.82.829a1.005 1.005 0 0 0-.495 1.324l4.25 9.325.213-9.179-.822-1.804c-.23-.5-.826-.723-1.326-.495zm7.198.204a1.003 1.003 0 0 0-.976-1.023l-2-.046a1.003 1.003 0 0 0-1.022.976l-.239 10.243 4.19-8.167.047-1.983zm4.98.95l-1.779-.913a1.005 1.005 0 0 0-1.347.434L9.674 15.814a1.004 1.004 0 0 0 .434 1.347l1.779.913a1.003 1.003 0 0 0 1.346-.433l6.391-12.456a1.005 1.005 0 0 0-.433-1.348zm-6.392 12.456a1 1 0 1 1-1.78-.911 1 1 0 0 1 1.78.911z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-compass'> - <path d="M5.454 14.548s4.568-.627 6.518-2.576 2.576-6.518 2.576-6.518-4.569.627-6.518 2.576-2.576 6.518-2.576 6.518zm3.563-5.533c.818-.818 2.385-1.4 3.729-1.762-.361 1.342-.945 2.92-1.76 3.732a1.39 1.39 0 0 1-1.969 0 1.391 1.391 0 0 1 0-1.97zM10.001.4C4.698.4.4 4.698.4 10a9.6 9.6 0 0 0 9.601 9.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zM10 17.6a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-fast-backward'> - <path d="M17.959 4.571L10.756 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.38 1.041.099 1.041-.626V5.196c0-.727-.469-1.008-1.041-.625zm-9.076 0L1.68 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.381 1.041.1 1.041-.625v-9.61c0-.727-.469-1.008-1.041-.625z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-fast-forward'> - <path d="M9.244 9.52L2.041 4.571C1.469 4.188 1 4.469 1 5.196v9.609c0 .725.469 1.006 1.041.625l7.203-4.951s.279-.199.279-.478c0-.28-.279-.481-.279-.481zm9.356.481c0 .279-.279.478-.279.478l-7.203 4.951c-.572.381-1.041.1-1.041-.625V5.196c0-.727.469-1.008 1.041-.625L18.32 9.52s.28.201.28.481z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-jump-to-start'> - <path d="M14.959 4.571L7.756 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.38 1.041.099 1.041-.626V5.196c0-.727-.469-1.008-1.041-.625zM6 4H5c-.553 0-1 .048-1 .6v10.8c0 .552.447.6 1 .6h1c.553 0 1-.048 1-.6V4.6c0-.552-.447-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-next'> - <path d="M12.244 9.52L5.041 4.571C4.469 4.188 4 4.469 4 5.196v9.609c0 .725.469 1.006 1.041.625l7.203-4.951s.279-.199.279-.478c0-.28-.279-.481-.279-.481zM14 4h1c.553 0 1 .048 1 .6v10.8c0 .552-.447.6-1 .6h-1c-.553 0-1-.048-1-.6V4.6c0-.552.447-.6 1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-paus'> - <path d="M15 3h-2c-.553 0-1 .048-1 .6v12.8c0 .552.447.6 1 .6h2c.553 0 1-.048 1-.6V3.6c0-.552-.447-.6-1-.6zM7 3H5c-.553 0-1 .048-1 .6v12.8c0 .552.447.6 1 .6h2c.553 0 1-.048 1-.6V3.6c0-.552-.447-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-play'> - <path d="M15 10.001c0 .299-.305.514-.305.514l-8.561 5.303C5.51 16.227 5 15.924 5 15.149V4.852c0-.777.51-1.078 1.135-.67l8.561 5.305c-.001 0 .304.215.304.514z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-record'> - <path d="M10 3a7 7 0 1 0 .001 13.999A7 7 0 0 0 10 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-stop'> - <path d="M16 4.995v9.808c0 .661-.536 1.197-1.196 1.197H4.997A.997.997 0 0 1 4 15.003V5.196C4 4.536 4.536 4 5.196 4h9.808c.55 0 .996.446.996.995z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-volume'> - <path d="M19 13.805c0 .657-.538 1.195-1.195 1.195H1.533c-.88 0-.982-.371-.229-.822l16.323-9.055C18.382 4.67 19 5.019 19 5.9v7.905z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-copy'> - <path d="M11 0H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h5v2h2v-2H8.001v-2H10v-2H8v2H4V2h6v4h2V1a1 1 0 0 0-1-1zM8 7v1h2V6H9a1 1 0 0 0-1 1zm4 13h2v-2h-2v2zm0-12h2V6h-2v2zM8 19a1 1 0 0 0 1 1h1v-2H8v1zm9-13h-1v2h2V7a1 1 0 0 0-1-1zm-1 14h1a1 1 0 0 0 1-1v-1h-2v2zm0-8h2v-2h-2v2zm0 4h2v-2h-2v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-cloud'> - <path d="M12.6 3c-1.966 0-3.74.813-5.012 2.119A6 6 0 1 0 6.4 17h6.2a7 7 0 1 0 0-14zM6.4 15.728a4.7 4.7 0 0 1-3.344-1.385C2.164 13.45 1.672 12.262 1.672 11s.492-2.45 1.385-3.343c.893-.893 2.08-1.385 3.343-1.385s2.45.492 3.344 1.385l1.874 1.875a.7.7 0 0 1-.99.99L8.754 8.646c-1.258-1.256-3.449-1.256-4.707 0-.629.63-.975 1.465-.975 2.354s.346 1.724.975 2.354c.785.784 1.933 1.078 2.991.884.324.424.689.815 1.1 1.155a4.723 4.723 0 0 1-1.738.335zm10.289-1.639a5.748 5.748 0 0 1-4.089 1.694 5.749 5.749 0 0 1-4.09-1.694L5.801 11.38a.7.7 0 0 1 .99-.99L9.5 13.099c.828.828 1.929 1.284 3.1 1.284s2.271-.456 3.099-1.284S16.983 11.17 16.983 10s-.456-2.271-1.284-3.099-1.928-1.284-3.099-1.284c-.873 0-1.707.255-2.418.727a6.056 6.056 0 0 0-1.251-.779c1.035-.858 2.309-1.349 3.67-1.349 1.544 0 2.996.602 4.089 1.694 1.093 1.093 1.694 2.545 1.694 4.089s-.602 2.998-1.695 4.09z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-attribution'> - <path d="M12.6 7.6v3.9h-1.1v4.6h-3v-4.6H7.4V7.6c0-.3.3-.6.6-.6h4c.3 0 .6.3.6.6zM10 6.5c.7 0 1.3-.6 1.3-1.3 0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3 0 .7.6 1.3 1.3 1.3zm9.6 3.5c0 2.7-.9 4.9-2.7 6.7-1.9 1.9-4.2 2.9-6.9 2.9-2.6 0-4.9-.9-6.8-2.8C1.3 14.9.4 12.7.4 10c0-2.6.9-4.9 2.8-6.8C5.1 1.3 7.3.4 10 .4s5 .9 6.8 2.8c1.9 1.8 2.8 4.1 2.8 6.8zm-1.7 0c0-2.2-.8-4-2.3-5.6C14 2.9 12.2 2.1 10 2.1c-2.2 0-4 .8-5.5 2.3C2.9 6 2.1 7.9 2.1 10c0 2.1.8 4 2.3 5.5s3.4 2.3 5.6 2.3c2.1 0 4-.8 5.6-2.4 1.5-1.4 2.3-3.2 2.3-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noderivs'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-9-4.7h7v1.7h-7v-1.7zm0-3.1h7v1.7h-7V7.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noncommercial-eu'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-.9.1-1.8.4-2.6L5 8.5h-.1v1.1h.9v.8h-.9v1.1h1c.1.9.5 1.5.9 2.1.9 1.2 2.3 1.8 3.9 1.8 1 0 2-.3 2.5-.6l-.4-1.8c-.3.2-1.1.4-1.8.4-.8 0-1.6-.2-2.1-.8-.2-.3-.4-.6-.5-1.1H12l5 2.2c-.4.7-.9 1.3-1.4 1.8zm-6.3-5zm3.1-.8h.1V8.6H9.8l-1.1-.5.3-.6c.5-.6 1.2-.9 2-.9.7 0 1.4.2 1.8.4l.5-1.8c-.6-.3-1.4-.5-2.4-.5-1.6 0-2.9.6-3.8 1.7-.2.2-.4.5-.5.7L3.4 5.8c.3-.5.7-.9 1.1-1.3C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 .7-.1 1.4-.2 2l-5.3-2.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noncommercial-us'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10s.9 4.9 2.8 6.8c1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7s-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-.9.1-1.8.4-2.6l4.9 2.2c.5.2 1 .4 1.5.7l1.1.5.9.4c.2.1.3.3.3.6 0 .7-.6 1-1.2 1-.9 0-1.5-.3-2.1-.9l-1.3 1.3c.8.7 1.8 1.1 2.9 1.1v1.5h1.1v-1.5c1.3-.1 2.4-.9 2.6-2.1l3.6 1.6c-.2.6-.7 1.2-1.2 1.7zm-2.9-5.6c-.5-.2-1-.4-1.5-.7l-.8-.4-1.3-.5c0-.1-.1-.2-.1-.3 0-.6.7-.7 1.2-.7.6 0 1.2.2 1.6.6l1.3-1.3c-.8-.6-1.7-.8-2.4-.9V4.2H9.6v1.5c-1.2 0-2.2.6-2.5 1.7L3.4 5.7c.3-.5.7-.9 1.1-1.3C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 .7-.1 1.4-.2 2.1l-5-2.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-public-domain'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zM8.1 7.3H5.5v5.3h1.3v-1.7h1c1.8 0 2.2-1.1 2.2-1.8.1-1.1-.4-1.8-1.9-1.8zm-.2 2.6H6.8V8.3h1.1c.6 0 .9.3.9.8 0 .4-.3.8-.9.8zm4.6-2.6h-2.1v5.3h2.1c1.6 0 2.7-.8 2.7-2.7 0-1.8-1.1-2.6-2.7-2.6zm0 4.2h-.8V8.4h.8c1 0 1.4.7 1.4 1.5 0 .9-.4 1.6-1.4 1.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-remix'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm.7-5.3l-1.9-.8V7L8.5 4.6 5.9 5.7v2.7l-2.3 1v2.5L6.1 13l2.5-1h.1l5 2.1h.2l2.3-1 .2-.1v-2.7l-.1-.1zm-2.7 3.1l-4.4-1.8V9.8l4.4 1.8V13.3zm.2-2.2l-1.4-.6 1.6-.6 1.4.6-1.6.6zm2.1 1.5l-1.7.7v-1.7l1.7-.7v1.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-share'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-1.7-8.3h-2.1v-2c0-.3-.2-.5-.5-.5H6.1c-.3 0-.5.3-.5.5v7.1c0 .3.2.5.5.5h2.1v2.1c0 .3.2.5.5.5h5.2c.3 0 .5-.2.5-.5V7.8c.1-.3-.2-.6-.5-.6zm-5.3 0c-.3 0-.5.3-.5.5v3.9H6.6v-6h4.2v1.6H8.6c.1 0 .1 0 0 0zm4.8 7.1H9.2v-6h4.2v6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-sharealike'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10s.9 4.9 2.8 6.8c1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7s-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10s.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-.7-5.4c0 2.9-2 5.1-5 5.1-2.1 0-3.9-1.3-4.2-3.8h2.4c.1 1.3.9 1.7 2.1 1.7 1.4 0 2.3-1.3 2.3-3.2 0-2-.8-3.1-2.2-3.1-1.1 0-2 .4-2.2 1.7h.7l-1.9 1.9L5 8.6h.8c.4-2.4 2.1-3.7 4.2-3.7 3 0 4.9 2.3 4.9 5.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons'> - <path d="M8.8 10.8l1.1.6c-.2.4-.6.8-1 1.1-.4.3-.9.4-1.4.4-.8 0-1.5-.2-2-.8-.5-.5-.7-1.2-.7-2.1 0-.9.3-1.6.8-2.1.4-.5 1.1-.8 1.9-.8 1.1 0 2 .4 2.4 1.3l-1.2.7c-.2-.3-.3-.5-.5-.6s-.4-.1-.5-.1c-.8 0-1.2.5-1.2 1.6 0 .5.1.9.3 1.2.2.3.5.4.9.4.5 0 .9-.2 1.1-.8zm4.2.8c-.4 0-.7-.1-.9-.4-.2-.3-.3-.7-.3-1.2 0-1.1.4-1.6 1.2-1.6.2 0 .4.1.5.2.2.1.4.3.5.6l1.2-.6c-.5-.9-1.3-1.3-2.4-1.3-.8 0-1.4.3-1.9.8s-.8 1.2-.8 2.1c0 .9.2 1.6.7 2.1.5.5 1.2.8 2 .8.5 0 1-.1 1.4-.4.4-.3.8-.6 1-1.1L14 11c-.1.4-.5.6-1 .6zm6.6-1.6c0 2.7-.9 4.9-2.7 6.7-1.9 1.9-4.2 2.9-6.9 2.9-2.6 0-4.9-.9-6.8-2.8C1.3 14.9.4 12.7.4 10c0-2.6.9-4.9 2.8-6.8C5.1 1.3 7.3.4 10 .4s5 .9 6.8 2.8c1.9 1.8 2.8 4.1 2.8 6.8zm-1.7 0c0-2.2-.8-4-2.3-5.6C14 2.9 12.2 2.1 10 2.1c-2.2 0-4 .8-5.5 2.3C2.9 6 2.1 7.9 2.1 10c0 2.1.8 4 2.3 5.5 1.6 1.6 3.4 2.3 5.6 2.3 2.1 0 4-.8 5.6-2.4 1.5-1.4 2.3-3.2 2.3-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-credit-card'> - <path d="M18 3H2C.899 3 0 3.9 0 5v10c0 1.1.899 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H2V9h16v6zm0-9H2V5h16v1zM4 11.1v.6h.6v-.6H4zm3.6 1.199v.601h1.2v-.601h.6v-.6h.6v-.6H8.8v.6h-.601v.6H7.6zm2.4.601v-.601h-.601v.601H10zm-3 0v-.601H5.8v.601H7zm.6-1.201h.6v-.6H7v1.199h.6v-.599zm-2.401.6H5.8v-.6h.6v-.6H5.2v.6h-.6v.6H4v.601h1.199v-.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-credit'> - <path d="M11 16.755V19H9v-2.143c-1.712-.1-3.066-.589-4.241-1.797l1.718-1.74c.859.87 2.023 1.16 3.282 1.16 1.565 0 2.405-.599 2.405-1.702 0-.483-.133-.889-.42-1.16-.267-.251-.572-.387-1.202-.483L8.9 10.903c-1.164-.174-2.022-.541-2.634-1.141-.648-.657-.973-1.546-.973-2.707 0-2.155 1.382-3.743 3.707-4.1V1h2v1.932c1.382.145 2.465.62 3.415 1.551l-1.679 1.682c-.859-.832-1.889-.947-2.787-.947-1.412 0-2.099.792-2.099 1.74 0 .348.115.716.401.986.267.252.706.464 1.26.541l1.602.232c1.241.174 2.023.522 2.596 1.063.726.696 1.05 1.702 1.05 2.92 0 2.25-1.567 3.662-3.759 4.055z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-crop'> - <path d="M6 14V1H4v3H1v2h3v8c0 1.1.899 2 2 2h8v3h2v-3h3v-2H6zm8-1h2V6c0-1.1-.899-2-2-2H7v2h7v7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cross'> - <path d="M14.348 14.849a1.2 1.2 0 0 1-1.697 0L10 11.819l-2.651 3.029a1.2 1.2 0 1 1-1.697-1.697l2.758-3.15-2.759-3.152a1.2 1.2 0 1 1 1.697-1.697L10 8.183l2.651-3.031a1.2 1.2 0 1 1 1.697 1.697l-2.758 3.152 2.758 3.15a1.2 1.2 0 0 1 0 1.698z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cup'> - <path d="M10 1C5.721 1 3.06 2.41 3.205 3.555l1.442 13.467c.058.46 2.221 1.976 5.353 1.978 3.131-.002 5.295-1.518 5.351-1.979l1.442-13.467C16.938 2.41 14.279 1 10 1zm0 4.291c-3.132-.002-5.353-1.117-5.353-1.535C4.646 3.342 6.869 2.225 10 2.227c3.131-.002 5.354 1.115 5.351 1.529 0 .418-2.22 1.533-5.351 1.535z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cw'> - <path d="M19.315 10h-2.372v-.205c-.108-4.434-3.724-7.996-8.169-7.996C4.259 1.799.6 5.471.6 10s3.659 8.199 8.174 8.199a8.13 8.13 0 0 0 5.033-1.738l-1.406-1.504a6.099 6.099 0 0 1-3.627 1.193c-3.386 0-6.131-2.754-6.131-6.15s2.745-6.15 6.131-6.15c3.317 0 6.018 2.643 6.125 5.945V10h-2.672l3.494 3.894L19.315 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cycle'> - <path d="M5.516 14.224c-2.262-2.432-2.222-6.244.128-8.611a6.074 6.074 0 0 1 3.414-1.736L8.989 1.8a8.112 8.112 0 0 0-4.797 2.351c-3.149 3.17-3.187 8.289-.123 11.531l-1.741 1.752 5.51.301-.015-5.834-2.307 2.323zm6.647-11.959l.015 5.834 2.307-2.322c2.262 2.434 2.222 6.246-.128 8.611a6.07 6.07 0 0 1-3.414 1.736l.069 2.076a8.122 8.122 0 0 0 4.798-2.35c3.148-3.172 3.186-8.291.122-11.531l1.741-1.754-5.51-.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-database'> - <path d="M16.726 12.641c-.843 1.363-3.535 2.361-6.726 2.361s-5.883-.998-6.727-2.361c-.178-.29-.273-.135-.273.007v2.002c0 1.94 3.134 3.95 7 3.95s7-2.01 7-3.949v-2.002c0-.143-.096-.298-.274-.008zm.011-5.116c-.83 1.205-3.532 2.09-6.737 2.09s-5.908-.885-6.738-2.09C3.091 7.277 3 7.412 3 7.523V9.88c0 1.762 3.134 3.189 7 3.189s7-1.428 7-3.189V7.523c0-.111-.092-.246-.263.002zM10 1C6.134 1 3 2.18 3 3.633v1.26c0 1.541 3.134 2.791 7 2.791s7-1.25 7-2.791v-1.26C17 2.18 13.866 1 10 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dial-pad'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M6 0H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm5 0h-2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zM6 5H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm5 0h-2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM6 10H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm0 6H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm5-6h-2a1 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"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-direction'> - <path d="M18.06 1.941c-.586-.586-1.144-.033-3.041.879C9.944 5.259 1.1 10.216 1.1 10.216L8.699 11.3l1.085 7.599s4.958-8.843 7.396-13.916c.912-1.898 1.465-2.456.88-3.042zm-1.824 1.955l-5.519 10.247-.561-4.655 6.08-5.592z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-document-landscape'> - <path d="M19 3H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 12H2V5h16v10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-document'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H5V3h10v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-documents'> - <path d="M19.398 7.415l-7.444-1.996L10.651.558c-.109-.406-.545-.642-.973-.529L.602 2.461c-.428.114-.686.538-.577.944l3.23 12.051c.109.406.544.643.971.527l3.613-.967-.492 1.838c-.109.406.149.83.577.943l8.11 2.174c.428.115.862-.121.972-.529l2.97-11.084c.108-.406-.15-.83-.578-.943zM1.633 3.631l7.83-2.096 2.898 10.818-7.83 2.096L1.633 3.631zm14.045 14.832L8.864 16.6l.536-2.002 3.901-1.047c.428-.113.688-.537.578-.943l-1.508-5.627 5.947 1.631-2.64 9.851z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dot-single'> - <path d="M7.8 10a2.2 2.2 0 0 0 4.4 0 2.2 2.2 0 0 0-4.4 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-three-horizontal'> - <path d="M10.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 10 7.8zm-7 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 3 7.8zm14 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 17 7.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-three-vertical'> - <path d="M10.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 10 7.8zm0-2.6A2.2 2.2 0 1 0 9.999.8a2.2 2.2 0 0 0 .002 4.4zm0 9.6a2.2 2.2 0 1 0 0 4.402 2.2 2.2 0 0 0 0-4.402z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-two-horizontal'> - <path d="M14.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 14 7.8zm-8 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 6 7.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-two-vertical'> - <path d="M10.001 8.2a2.2 2.2 0 1 0-.002-4.4 2.2 2.2 0 0 0 .002 4.4zm0 3.6a2.2 2.2 0 1 0 0 4.402 2.2 2.2 0 0 0 0-4.402z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-download'> - <path d="M15 7h-3V1H8v6H5l5 5 5-5zm4.338 6.532c-.21-.224-1.611-1.723-2.011-2.114A1.503 1.503 0 0 0 16.285 11h-1.757l3.064 2.994h-3.544a.274.274 0 0 0-.24.133L12.992 16H7.008l-.816-1.873a.276.276 0 0 0-.24-.133H2.408L5.471 11H3.715c-.397 0-.776.159-1.042.418-.4.392-1.801 1.891-2.011 2.114-.489.521-.758.936-.63 1.449l.561 3.074c.128.514.691.936 1.252.936h16.312c.561 0 1.124-.422 1.252-.936l.561-3.074c.126-.513-.142-.928-.632-1.449z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dribbble-with-circle'> - <path d="M10.26 9.982c.033-.012.068-.021.103-.031a14.738 14.738 0 0 0-.279-.584c-1.88.557-3.68.562-4.001.557-.003.025-.003.051-.003.076 0 .945.34 1.853.958 2.566.206-.332 1.298-1.961 3.222-2.584zm-2.637 3.131a3.913 3.913 0 0 0 3.871.512 16.511 16.511 0 0 0-.822-2.922c-2.121.75-2.922 2.162-3.049 2.41zm4.932-6.086a3.92 3.92 0 0 0-3.405-.853 20.08 20.08 0 0 1 1.421 2.223c1.283-.493 1.863-1.204 1.984-1.37zm-2.85 1.637A23.654 23.654 0 0 0 8.29 6.473a3.938 3.938 0 0 0-2.113 2.658h.017c.406 0 1.849-.033 3.511-.467zm1.809 1.832c.465 1.293.679 2.367.74 2.711a3.933 3.933 0 0 0 1.609-2.543 5.81 5.81 0 0 0-1.592-.221c-.258 0-.513.018-.757.053zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 14.297A4.703 4.703 0 0 1 5.301 10 4.703 4.703 0 0 1 10 5.301 4.704 4.704 0 0 1 14.698 10 4.702 4.702 0 0 1 10 14.697zm.922-5.623c.087.18.168.357.242.531l.071.17c.277-.033.573-.049.882-.049a9.72 9.72 0 0 1 1.801.172 3.93 3.93 0 0 0-.852-2.34c-.16.206-.818.963-2.144 1.516z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dribbble'> - <path d="M9.565 7.421C8.207 5.007 6.754 3.038 6.648 2.893A7.876 7.876 0 0 0 2.311 8.38c.206.004 3.482.043 7.254-.959zm.978 2.64a11 11 0 0 1 .309-.094 26.219 26.219 0 0 0-.637-1.336C6.169 9.843 2.287 9.755 2.15 9.751c-.003.084-.007.166-.007.25 0 2.019.763 3.861 2.016 5.252l-.005-.006s2.15-3.814 6.389-5.186zm-5.372 6.133v-.004c-.058-.045-.12-.086-.178-.135.106.085.178.139.178.139zM8.118 2.372a.546.546 0 0 1-.015.004c.006-.002.014-.002.014-.002l.001-.002zm7.071 1.732A7.83 7.83 0 0 0 10 2.143c-.639 0-1.258.078-1.852.221.12.16 1.595 2.119 2.938 4.584 2.962-1.109 4.081-2.812 4.103-2.844zM10 19.2a9.2 9.2 0 0 1-9.199-9.199A9.199 9.199 0 0 1 10 .8a9.2 9.2 0 0 1 9.2 9.201A9.2 9.2 0 0 1 10 19.2zm1.336-7.914c-4.611 1.607-6.134 4.838-6.165 4.904a7.818 7.818 0 0 0 4.828 1.666 7.83 7.83 0 0 0 3.067-.621c-.116-.689-.573-3.096-1.679-5.967a1.464 1.464 0 0 1-.051.018zm.354-3.166c.184.373.358.754.523 1.139.059.135.114.272.17.406 2.713-.342 5.385.238 5.473.256a7.84 7.84 0 0 0-1.787-4.912c-.018.023-1.279 1.843-4.379 3.111zm1.171 2.785c1.031 2.836 1.449 5.142 1.529 5.611a7.858 7.858 0 0 0 3.367-5.27c-.156-.05-2.356-.747-4.896-.341z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drink'> - <path d="M17.538 2.639C17.932 2.094 18 1 18 1H2s.068 1.094.462 1.639L9 11v6H7c-2 0-2 2-2 2h10s0-2-2-2h-2v-6l6.538-8.361zM9.4 6a1.599 1.599 0 1 1 3.2 0 1.6 1.6 0 0 1-3.2 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drive'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zm-2.1 4.347a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drop'> - <path d="M10.203.561c-.027-.215-.38-.215-.406 0-.883 7.107-5.398 8.572-5.398 13.512 0 3.053 2.564 5.527 5.601 5.527 3.036 0 5.6-2.475 5.6-5.527 0-4.94-4.514-6.405-5.397-13.512zM9.35 8.418c-.059.219-.123.444-.189.678-.401 1.424-.856 3.039-.856 4.906 0 1.012-.598 1.371-1.156 1.371a1.161 1.161 0 0 1-1.156-1.166c0-2.207 1.062-3.649 2-4.92.295-.398.572-.775.797-1.15.103-.172.38-.164.506.006.059.08.079.182.054.275z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dropbox'> - <path d="M6.109.902L.4 4.457l3.911 3.279L10 4.043 6.109.902zm7.343 15.09a.44.44 0 0 1-.285-.102L10 13.262l-3.167 2.629a.447.447 0 0 1-.529.03l-2.346-1.533v.904L10 19.098l6.042-3.807v-.904l-2.346 1.533a.44.44 0 0 1-.244.072zM19.6 4.457L13.89.902 10 4.043l5.688 3.693L19.6 4.457zM10 11.291l3.528 2.928 5.641-3.688-3.481-2.795L10 11.291zm-3.528 2.928L10 11.291 4.311 7.736l-3.48 2.795 5.641 3.688z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-edit'> - <path d="M17.561 2.439c-1.442-1.443-2.525-1.227-2.525-1.227L8.984 7.264 2.21 14.037 1.2 18.799l4.763-1.01 6.774-6.771 6.052-6.052c-.001 0 .216-1.083-1.228-2.527zM5.68 17.217l-1.624.35a3.71 3.71 0 0 0-.69-.932 3.742 3.742 0 0 0-.932-.691l.35-1.623.47-.469s.883.018 1.881 1.016c.997.996 1.016 1.881 1.016 1.881l-.471.468z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-email'> - <path d="M14.608 12.172c0 .84.239 1.175.864 1.175 1.393 0 2.28-1.775 2.28-4.727 0-4.512-3.288-6.672-7.393-6.672-4.223 0-8.064 2.832-8.064 8.184 0 5.112 3.36 7.896 8.52 7.896 1.752 0 2.928-.192 4.727-.792l.386 1.607c-1.776.577-3.674.744-5.137.744-6.768 0-10.393-3.72-10.393-9.456 0-5.784 4.201-9.72 9.985-9.72 6.024 0 9.215 3.6 9.215 8.016 0 3.744-1.175 6.6-4.871 6.6-1.681 0-2.784-.672-2.928-2.161-.432 1.656-1.584 2.161-3.145 2.161-2.088 0-3.84-1.609-3.84-4.848 0-3.264 1.537-5.28 4.297-5.28 1.464 0 2.376.576 2.782 1.488l.697-1.272h2.016v7.057h.002zm-2.951-3.168c0-1.319-.985-1.872-1.801-1.872-.888 0-1.871.719-1.871 2.832 0 1.68.744 2.616 1.871 2.616.792 0 1.801-.504 1.801-1.896v-1.68z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-flirt'> - <path d="M7.5 9.75C8.329 9.75 9 8.967 9 8s-.671-1.75-1.5-1.75S6 7.034 6 8s.672 1.75 1.5 1.75zM10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm4.341-6.263a.756.756 0 0 0-1.008.32c-.034.065-.869 1.593-3.332 1.593-2.451 0-3.291-1.513-3.333-1.592a.75.75 0 0 0-1.339.678c.05.099 1.248 2.414 4.672 2.414 3.425 0 4.621-2.316 4.67-2.415a.745.745 0 0 0-.33-.998zM11.25 8.75h2.5a.75.75 0 0 0 0-1.5h-2.5a.75.75 0 0 0 0 1.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-happy'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199A7.6 7.6 0 1 1 10 2.4a7.6 7.6 0 1 1 0 15.199zM7.501 9.75C8.329 9.75 9 8.967 9 8s-.672-1.75-1.5-1.75S6 7.033 6 8s.672 1.75 1.501 1.75zm4.999 0c.829 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75S11 7.034 11 8s.672 1.75 1.5 1.75zm1.841 1.586a.756.756 0 0 0-1.008.32c-.034.066-.869 1.593-3.332 1.593-2.451 0-3.291-1.513-3.333-1.592a.75.75 0 0 0-1.339.678c.05.099 1.248 2.414 4.672 2.414 3.425 0 4.621-2.316 4.67-2.415a.745.745 0 0 0-.33-.998z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-neutral'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm2.5-11.348c-.828 0-1.5.783-1.5 1.749s.672 1.75 1.5 1.75c.829 0 1.5-.783 1.5-1.75s-.671-1.749-1.5-1.749zM7.501 9.75C8.329 9.75 9 8.967 9 8s-.672-1.75-1.5-1.75S6 7.033 6 8s.672 1.75 1.501 1.75zM13 12.25H7a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-sad'> - <path d="M10.001.4C4.698.4.4 4.698.4 10a9.6 9.6 0 0 0 9.601 9.601c5.301 0 9.6-4.298 9.6-9.601-.001-5.302-4.3-9.6-9.6-9.6zM10 17.599a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm2.501-7.849c.828 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75-1.5.783-1.5 1.75.671 1.75 1.5 1.75zm-5 0c.828 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75-1.5.783-1.5 1.75.671 1.75 1.5 1.75zm2.501 1.5c-3.424 0-4.622 2.315-4.672 2.414a.75.75 0 0 0 1.342.672c.008-.017.822-1.586 3.33-1.586 2.463 0 3.298 1.527 3.328 1.585a.75.75 0 1 0 1.342-.67c-.049-.099-1.246-2.415-4.67-2.415z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-erase'> - <path d="M18 3H8.446c-.44 0-1.071.236-1.402.525L.248 9.473a.682.682 0 0 0 0 1.053l6.796 5.947c.331.289.962.527 1.402.527H18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2.809 11l-2.557-2.557L10.078 14l-1.443-1.443L11.191 10 8.635 7.443 10.078 6l2.557 2.555L15.19 6l1.444 1.443L14.078 10l2.557 2.555L15.191 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eraser'> - <path d="M16.998 4.18l-3.154-2.425a2.01 2.01 0 0 0-2.807.365l-8.4 10.897a2.003 2.003 0 0 0 .365 2.803l3.153 2.425a2.01 2.01 0 0 0 2.807-.365l8.401-10.897a2.003 2.003 0 0 0-.365-2.803zm-8.45 12.287l-.537.681a.8.8 0 0 1-.639.31.793.793 0 0 1-.485-.164l-3.153-2.425a.792.792 0 0 1-.303-.53.788.788 0 0 1 .157-.589l.537-.681a.801.801 0 0 1 .64-.311c.124 0 .309.029.485.164l3.154 2.425a.802.802 0 0 1 .144 1.12z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-evernote'> - <path d="M17.3 4.3c0-1.2-1.7-1.3-1.7-1.3l-4.1-.3s-.1-1.1-.9-1.5C9.8.9 8.9 1 8.3 1c-.7 0-.8.9-.8 1.6v2.2c0 1-.4 1.4-1.6 1.4H3.6c-.6 0-1.1.1-1.1.6s.8 5 1.8 6c.6.6 4.3 1 5.1 1s.5-2.3.7-2.3.5 1.3 1.7 1.6c1.2.3 2.9.2 3 1.1.1 1.2.2 2.6-.5 2.7l-1.7.1c-1.2-.1-.9-1.4-.3-1.4h.8l.1-1.4s-2.7-.3-2.8 1.5c-.1 1.7.2 2.4.4 2.6.2.2.6.5 3.9.5 4.3.2 2.6-13.3 2.6-14.5zm-1.9 6c-.1.2-.8-.3-1.4-.3-.6 0-1.3.3-1.5.1-.2-.2.1-2 1.3-2s1.8 2 1.6 2.2zM5.3 4.6H2.4l3.5-3.4s-.1 2.8-.1 3c0 .2-.1.4-.5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-export'> - <path d="M15 15H2V6h2.595s.689-.896 2.17-2H1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-3.746l-2 1.645V15zm-1.639-6.95v3.551L20 6.4l-6.639-4.999v3.131C5.3 4.532 5.3 12.5 5.3 12.5c2.282-3.748 3.686-4.45 8.061-4.45z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eye-with-line'> - <path d="M18.521 1.478a1 1 0 0 0-1.414 0L1.48 17.107a1 1 0 1 0 1.414 1.414L18.52 2.892a1 1 0 0 0 0-1.414zM3.108 13.498l2.56-2.56A4.18 4.18 0 0 1 5.555 10c0-2.379 1.99-4.309 4.445-4.309.286 0 .564.032.835.082l1.203-1.202A12.645 12.645 0 0 0 10 4.401C3.44 4.4 0 9.231 0 10c0 .423 1.057 2.09 3.108 3.497zm13.787-6.993l-2.562 2.56c.069.302.111.613.111.935 0 2.379-1.989 4.307-4.444 4.307-.284 0-.56-.032-.829-.081l-1.204 1.203c.642.104 1.316.17 2.033.17 6.56 0 10-4.833 10-5.599 0-.424-1.056-2.09-3.105-3.495z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eye'> - <path d="M10 4.4C3.439 4.4 0 9.232 0 10c0 .766 3.439 5.6 10 5.6 6.56 0 10-4.834 10-5.6 0-.768-3.44-5.6-10-5.6zm0 9.907c-2.455 0-4.445-1.928-4.445-4.307 0-2.379 1.99-4.309 4.445-4.309s4.444 1.93 4.444 4.309c0 2.379-1.989 4.307-4.444 4.307zM10 10c-.407-.447.663-2.154 0-2.154-1.228 0-2.223.965-2.223 2.154s.995 2.154 2.223 2.154c1.227 0 2.223-.965 2.223-2.154 0-.547-1.877.379-2.223 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-facebook-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.274 6.634h-1.443c-.171 0-.361.225-.361.524V8.6h1.805l-.273 1.486H10.47v4.461H8.767v-4.461H7.222V8.6h1.545v-.874c0-1.254.87-2.273 2.064-2.273h1.443v1.581z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-facebook'> - <path d="M17 1H3c-1.1 0-2 .9-2 2v14c0 1.101.9 2 2 2h7v-7H8V9.525h2v-2.05c0-2.164 1.212-3.684 3.766-3.684l1.803.002v2.605h-1.197c-.994 0-1.372.746-1.372 1.438v1.69h2.568L15 12h-2v7h4c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-feather'> - <path d="M4.254 19.567c.307-.982.77-2.364 1.391-4.362 2.707-.429 3.827.341 5.546-2.729-1.395.427-3.077-.792-2.987-1.321.091-.528 3.913.381 6.416-3.173-3.155.696-4.164-.836-3.757-1.067.939-.534 3.726-.222 5.212-1.669.766-.745 1.125-2.556.813-3.202-.374-.781-2.656-1.946-3.914-1.836-1.258.109-3.231 4.79-3.817 4.754-.584-.037-.703-2.098.319-4.013-1.077.477-3.051 1.959-3.67 3.226-1.153 2.357.108 7.766-.296 7.958-.405.193-1.766-2.481-2.172-3.694-.555 1.859-.568 3.721 1.053 6.194-.611 1.623-.945 3.491-.996 4.441-.024.759.724.922.859.493z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-fingerprint'> - <path d="M9.68 7.85c-.374.094-.607.497-.52.9.717 3.328.873 6.815.452 10.086-.053.41.212.79.592.846a.655.655 0 0 0 .097.007c.341 0 .639-.271.688-.646.444-3.452.28-7.128-.475-10.632-.087-.405-.46-.653-.834-.56zm-1.611 4.223c-.382.038-.663.404-.628.816.17 1.968.125 3.91-.132 5.772-.056.41.206.791.585.852a.612.612 0 0 0 .103.008c.339 0 .636-.267.687-.64.273-1.98.32-4.043.141-6.13-.035-.413-.386-.72-.756-.678zm1.09-6.659c-.784.197-1.45.712-1.876 1.449a3.445 3.445 0 0 0-.379 2.454c.088.41.168.82.237 1.229.068.408.44.677.809.603.378-.075.627-.466.558-.873a30.238 30.238 0 0 0-.25-1.299 1.853 1.853 0 0 1 .205-1.32c.23-.398.589-.676 1.01-.781.872-.22 1.741.37 1.943 1.309.746 3.461.942 6.93.58 10.309-.043.411.23.783.612.83a.647.647 0 0 0 .08.006c.349 0 .649-.282.69-.664.379-3.551.174-7.192-.608-10.82-.375-1.743-1.991-2.834-3.612-2.432zm-2.411.533a.79.79 0 0 0-.114-1.054.661.661 0 0 0-.976.123 5.744 5.744 0 0 0-.34.524 6.095 6.095 0 0 0-.67 4.343c.594 2.757.733 5.588.401 8.19-.052.41.214.788.594.845a.714.714 0 0 0 .096.006c.342 0 .64-.272.688-.647.353-2.78.207-5.8-.425-8.733a4.51 4.51 0 0 1 .746-3.597zm8.362 6.872c-.383.02-.68.372-.66.786a34.322 34.322 0 0 1-.059 4.131c-.032.414.253.775.636.81a.742.742 0 0 0 .057.002c.359 0 .663-.297.692-.69.107-1.422.128-2.878.062-4.327-.019-.414-.354-.723-.728-.712zm-.17-1.035a.649.649 0 0 0 .087-.006c.381-.05.65-.425.604-.836a37.924 37.924 0 0 0-.606-3.663c-.552-2.574-2.75-4.443-5.223-4.443-.391 0-.782.047-1.164.142-.316.08-.625.19-.921.327-.352.165-.514.607-.362.987.153.38.563.555.914.39.219-.102.45-.184.682-.242.278-.07.564-.104.85-.104 1.835 0 3.462 1.38 3.87 3.283.25 1.158.446 2.338.58 3.508.044.38.344.657.69.657zm2.342-5.068a8.344 8.344 0 0 0-2.02-3.913.66.66 0 0 0-.983 0 .8.8 0 0 0-.002 1.067 6.86 6.86 0 0 1 1.651 3.208c.647 3.003.937 6.085.861 9.098-.01.414.292.824.676.824h.019c.375 0 .684-.375.695-.782a40.575 40.575 0 0 0-.897-9.502zM3.39 12.855a.664.664 0 0 0 .102-.008c.38-.06.642-.442.587-.851a25.027 25.027 0 0 0-.332-1.887 7.148 7.148 0 0 1 .785-5.098c.883-1.53 2.267-2.598 3.894-3.006a5.846 5.846 0 0 1 4.193.558c.342.187.76.037.933-.333.173-.37.035-.821-.308-1.007a7.153 7.153 0 0 0-5.13-.68c-1.99.5-3.682 1.805-4.762 3.674a8.742 8.742 0 0 0-.96 6.232c.128.594.233 1.187.311 1.765.05.373.348.64.687.64zM3.597 14h-.023c-.384 0-.684.25-.672.663.027.848.004 1.58-.07 2.39-.037.412.242.778.624.818a.647.647 0 0 0 .069.003.671.671 0 0 0 .69-.625c.08-.875.106-1.723.077-2.637C4.28 14.207 3.97 14 3.597 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flag'> - <path d="M18.926 5.584c-9.339 13.568-6.142-.26-14.037 6.357L6.684 19H4.665L1 4.59l1.85-.664c8.849-6.471 4.228 5.82 15.637 1.254.364-.147.655.09.439.404z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flash'> - <path d="M6.803 18.998c-.194-.127 3.153-7.16 3.038-7.469-.116-.309-3.665-1.436-3.838-1.979-.174-.543 7.007-8.707 7.196-8.549.188.158-3.129 7.238-3.039 7.469.091.23 3.728 1.404 3.838 1.979.111.575-7.002 8.676-7.195 8.549z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flashlight'> - <path d="M17.115 2.884c-1.676-1.676-3.779-2.288-4.449-1.618L9.97 3.962c-.409.41-.766 1.779-.602 3.164l-8.161 8.161c-.484.484-.092 1.66.876 2.629.968.969 2.146 1.359 2.629.877l8.161-8.162c1.386.164 2.755-.193 3.164-.601l2.696-2.697c.67-.67.058-2.774-1.618-4.449zm-8.974 8.155c-.373-.372-.251-1.096.269-1.617.521-.521 1.246-.643 1.618-.27.372.371.251 1.097-.27 1.617-.521.522-1.245.643-1.617.27zm6.75-5.931c-1.298-1.297-1.623-3.01-1.508-3.125.115-.116 1.76.277 3.059 1.575 1.298 1.298 1.688 2.946 1.575 3.059-.112.112-1.829-.21-3.126-1.509z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flat-brush'> - <path d="M1.844 14.889c.498.376 1.594-1.178 1.942-.915.348.263-.82 1.762-.528 1.982.292.22 1.513-1.239 1.852-.984.338.255-.803 1.774-.437 2.051.367.277 1.562-1.202 1.852-.983.29.219-.773 1.797-.437 2.05.336.254 1.481-1.263 1.76-1.052.28.211-.844 1.743-.346 2.119.498.375 5.37-8.964 5.37-8.964L8.996 7.254s-7.65 7.26-7.152 7.635zM13.023.831L9.661 5.987l4.121 3.109 4.396-4.246c-.527-1.503-3.44-3.843-5.155-4.019z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flattr'> - <path d="M5.598 8.541c0-1.637.434-2.678 1.889-2.912.508-.1 1.566-.064 2.239-.064v2.5c0 .024.003.064.009.084a.236.236 0 0 0 .228.175c.061 0 .118-.031.178-.09L16.377 2H7.548C3.874 2 2 4.115 2 8.066v8.287l3.598-3.602v-4.21zM14.4 7.248v4.209c0 1.637-.434 2.68-1.889 2.912-.508.1-1.566.065-2.238.065v-2.5a.48.48 0 0 0-.009-.084.242.242 0 0 0-.228-.176c-.062 0-.118.033-.179.092l-6.235 6.232L7.809 18h4.643C16.125 18 18 15.885 18 11.934V3.647l-3.6 3.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flickr-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM7.436 12a1.99 1.99 0 0 1-1.982-2c0-1.105.887-2 1.982-2 1.094 0 1.982.895 1.982 2s-.889 2-1.982 2zm5.129 0a1.991 1.991 0 0 1-1.983-2c0-1.105.888-2 1.983-2a1.99 1.99 0 0 1 1.982 2c0 1.105-.887 2-1.982 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flickr'> - <path d="M5 14c-2.188 0-3.96-1.789-3.96-4 0-2.211 1.772-4 3.96-4 2.187 0 3.96 1.789 3.96 4 0 2.211-1.773 4-3.96 4zM15 14c-2.188 0-3.96-1.789-3.96-4 0-2.211 1.772-4 3.96-4 2.187 0 3.96 1.789 3.96 4 0 2.211-1.773 4-3.96 4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-branch'> - <path d="M16.4 4a2.4 2.4 0 1 0-4.8 0c0 .961.568 1.784 1.384 2.167-.082 1.584-1.27 2.122-3.335 2.896-.87.327-1.829.689-2.649 1.234V6.176A2.396 2.396 0 0 0 6 1.6a2.397 2.397 0 1 0-1 4.576v7.649A2.393 2.393 0 0 0 3.6 16a2.4 2.4 0 1 0 4.8 0c0-.961-.568-1.784-1.384-2.167.082-1.583 1.271-2.122 3.335-2.896 2.03-.762 4.541-1.711 4.64-4.756A2.398 2.398 0 0 0 16.4 4zM6 2.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm0 14.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm8-12a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-cascade'> - <path d="M14 14.6c-.967 0-1.796.576-2.176 1.4H8.5A1.5 1.5 0 0 1 7 14.5v-3.85c.456.218.961.35 1.5.35h3.324a2.396 2.396 0 0 0 4.576-1 2.397 2.397 0 1 0-4.576-1H8.5A1.5 1.5 0 0 1 7 7.5V5.176A2.396 2.396 0 0 0 6 .6a2.397 2.397 0 1 0-1 4.576V14.5A3.5 3.5 0 0 0 8.5 18h3.324a2.396 2.396 0 0 0 4.576-1 2.4 2.4 0 0 0-2.4-2.4zm0-5.985a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm-8-7a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm8 16.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-line'> - <path d="M11 13.824V6.176A2.395 2.395 0 0 0 12.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649A2.393 2.393 0 0 0 7.6 16a2.4 2.4 0 1 0 4.8 0c0-.967-.575-1.796-1.4-2.176zM10 2.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm0 14.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-parallel'> - <path d="M8.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649A2.393 2.393 0 0 0 3.6 16a2.4 2.4 0 1 0 4.8 0c0-.967-.576-1.796-1.4-2.176V6.176A2.396 2.396 0 0 0 8.4 4zM7.384 16a1.385 1.385 0 1 1-2.77 0 1.385 1.385 0 0 1 2.77 0zM6 5.385a1.385 1.385 0 1 1 .001-2.77A1.385 1.385 0 0 1 6 5.386zm9 8.439V6.176A2.395 2.395 0 0 0 16.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649a2.395 2.395 0 0 0-1.4 2.176 2.4 2.4 0 1 0 4.8 0c0-.968-.575-1.797-1.4-2.177zM12.616 4a1.384 1.384 0 1 1 2.769 0 1.385 1.385 0 0 1-2.769 0zM14 17.385a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-tree'> - <path d="M18 14.824V12.5A3.5 3.5 0 0 0 14.5 9h-2A1.5 1.5 0 0 1 11 7.5V5.176A2.395 2.395 0 0 0 12.4 3a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176V7.5A1.5 1.5 0 0 1 7.5 9h-2A3.5 3.5 0 0 0 2 12.5v2.324A2.396 2.396 0 0 0 3 19.4a2.397 2.397 0 1 0 1-4.576V12.5A1.5 1.5 0 0 1 5.5 11h2c.539 0 1.044-.132 1.5-.35v4.174a2.396 2.396 0 0 0 1 4.576 2.397 2.397 0 1 0 1-4.576V10.65c.456.218.961.35 1.5.35h2a1.5 1.5 0 0 1 1.5 1.5v2.324A2.395 2.395 0 0 0 14.6 17a2.4 2.4 0 1 0 4.8 0c0-.967-.575-1.796-1.4-2.176zM10 1.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm-7 16.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm7 0a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm7 0a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flower'> - <path d="M12.66 8.76c.439-1.087-.364-2.509-1.21-3.406.328-1.19.371-2.822-.526-3.575-.897-.754-2.497-.43-3.613.098-1.03-.68-2.568-1.226-3.563-.606-.994.62-1.18 2.243-1.023 3.467-.964.769-1.959 2.064-1.676 3.201s1.768 1.816 2.98 2.044c.434 1.155 1.358 2.501 2.527 2.584.828.058 1.62-.531 2.224-1.263 1.22 1.52 2.082 3.127 2.555 4.706C10.612 14.93 9.115 14 6 14c0 4.155 3.042 5.003 5 5.003l3.2.002c0-2.723-.986-5.91-3.29-8.901.783-.247 1.479-.677 1.75-1.344zm-4.377-.22a2.447 2.447 0 1 1-2.591-4.153 2.447 2.447 0 0 1 2.59 4.153zm5.737 3.708c1.083 2.17 1.669 4.453 1.678 6.705C18.996 16.582 19 12.206 19 8.003c0 0-3.67 1.034-4.98 4.245z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-images'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zm-6.974 3.375a.938.938 0 1 1 0 1.876.938.938 0 0 1 0-1.876zM5.5 14l2.486-5.714 2.827 4.576 2.424-1.204L14.5 14h-9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-music'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zm-7.47 7.521c-.128.265-.258.279-.202 0 .146-.721.047-2.269-1.043-2.441v3.294c0 .674-.311 1.262-1.136 1.528-.802.256-1.699-.011-1.908-.586-.21-.576.261-1.276 1.052-1.564.442-.161.954-.203 1.299-.07V8h.694c-.001 1.633 2.818 1.275 1.244 4.521z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-video'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zM8 14V9l4.383 2.5L8 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder'> - <path d="M18.405 4.799c-.111-.44-.655-.799-1.21-.799h-6.814c-.554 0-1.33-.318-1.722-.707l-.596-.588C7.671 2.316 6.896 2 6.342 2H3.087c-.555 0-1.059.447-1.12.994L1.675 6h16.931l-.201-1.201zM19.412 7H.588a.58.58 0 0 0-.577.635l.923 9.669A.77.77 0 0 0 1.7 18h16.6a.77.77 0 0 0 .766-.696l.923-9.669A.58.58 0 0 0 19.412 7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-forward'> - <path d="M12 11.874v4.357l7-6.69-7-6.572v3.983c-8.775 0-11 9.732-11 9.732 2.484-4.388 6.237-4.81 11-4.81z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-foursquare'> - <path d="M4.92 1a.92.92 0 0 0-.92.92v16.516c0 .625.765.926 1.192.47l4.471-4.79A.357.357 0 0 1 9.927 14h3.237c.486 0 .905-.343 1.001-.82l2.111-10.514A1.392 1.392 0 0 0 14.911 1H4.92zm3.918 11.19L6 15.527V3.343C6 3.154 6.154 3 6.343 3h7.14a.54.54 0 0 1 .53.648L13.6 5.703a.369.369 0 0 1-.362.297h-3.71A.527.527 0 0 0 9 6.528v1.22c0 .139.113.252.253.252h3.294c.306 0 .536.28.476.581l-.614 3.058a.452.452 0 0 1-.442.361H9.25a.54.54 0 0 0-.412.19z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-funnel'> - <path d="M10 1C5.092 1 2 2.512 2 4.001v2c0 .918 6 6 6 6v6c-.001.684 1 1 2 1s2.001-.316 2-1v-6s6-5.082 6-6v-2C18 2.512 14.908 1 10 1zm0 5.123C6.409 6.122 3.862 4.79 3.862 4.292 3.86 3.797 6.41 2.461 10 2.463c3.59-.002 6.14 1.334 6.138 1.828 0 .499-2.547 1.831-6.138 1.832z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-game-controller'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M19.444 9.361c-.882-4.926-2.854-6.379-3.903-6.379-1.637 0-2.057 1.217-5.541 1.258-3.484-.041-3.904-1.258-5.541-1.258-1.049 0-3.022 1.453-3.904 6.379-.503 2.812-1.049 7.01.252 7.514 1.619.627 2.168-.941 3.946-2.266C6.558 13.266 7.424 12.95 10 12.95s3.442.316 5.247 1.659c1.778 1.324 2.327 2.893 3.946 2.266 1.301-.504.755-4.701.251-7.514zM6 10a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm7 0a1 1 0 1 1 0-2 1 1 0 1 1 0 2zm2-2a1 1 0 1 1 0-2 1 1 0 1 1 0 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-gauge'> - <path d="M8.127 13.6c-.689 1.197-.225 2.18.732 2.732.956.553 2.041.465 2.732-.732.689-1.195 5.047-11.865 4.668-12.084-.379-.219-7.442 8.888-8.132 10.084zM10 6c.438 0 .864.037 1.281.109.438-.549.928-1.154 1.405-1.728A9.664 9.664 0 0 0 10 4C4.393 4 0 8.729 0 14.766c0 .371.016.742.049 1.103.049.551.54.955 1.084.908.551-.051.957-.535.908-1.086A10.462 10.462 0 0 1 2 14.766C2 9.85 5.514 6 10 6zm7.219 1.25c-.279.75-.574 1.514-.834 2.174C17.4 10.894 18 12.738 18 14.766c0 .316-.015.635-.043.943a1.001 1.001 0 0 0 1.992.182c.033-.37.051-.748.051-1.125 0-2.954-1.053-5.59-2.781-7.516z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-github-with-circle'> - <path d="M10.015 9.949h-.03c-1.191 0-2.24-.303-2.861.268a1.57 1.57 0 0 0-.527 1.197c0 1.852 1.483 2.08 3.389 2.08h.029c1.905 0 3.389-.229 3.389-2.08 0-.443-.156-.856-.527-1.197-.622-.571-1.671-.268-2.862-.268zM8.393 12.48c-.363 0-.656-.408-.656-.91s.293-.908.656-.908c.363 0 .657.406.657.908.001.502-.293.91-.657.91zm3.213 0c-.363 0-.657-.408-.657-.91s.294-.908.657-.908c.362 0 .656.406.656.908.001.502-.293.91-.656.91zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm.876 13.539c-.172 0-.514 0-.876.002-.362-.002-.704-.002-.876-.002-.76 0-3.772-.059-3.772-3.689 0-.834.286-1.445.755-1.955-.074-.184-.078-1.232.32-2.236 0 0 .916.1 2.301 1.051.289-.081.781-.122 1.272-.122s.982.041 1.273.121c1.385-.951 2.301-1.051 2.301-1.051.398 1.004.395 2.053.32 2.236.469.51.755 1.121.755 1.955-.001 3.632-3.013 3.69-3.773 3.69z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-github'> - <path d="M13.18 11.309c-.718 0-1.3.807-1.3 1.799 0 .994.582 1.801 1.3 1.801s1.3-.807 1.3-1.801c-.001-.992-.582-1.799-1.3-1.799zm4.526-4.683c.149-.365.155-2.439-.635-4.426 0 0-1.811.199-4.551 2.08-.575-.16-1.548-.238-2.519-.238-.973 0-1.945.078-2.52.238C4.74 2.399 2.929 2.2 2.929 2.2c-.789 1.987-.781 4.061-.634 4.426C1.367 7.634.8 8.845.8 10.497c0 7.186 5.963 7.301 7.467 7.301l1.734.002 1.732-.002c1.506 0 7.467-.115 7.467-7.301 0-1.652-.566-2.863-1.494-3.871zm-7.678 10.289h-.056c-3.771 0-6.709-.449-6.709-4.115 0-.879.31-1.693 1.047-2.369C5.537 9.304 7.615 9.9 9.972 9.9h.056c2.357 0 4.436-.596 5.664.531.735.676 1.045 1.49 1.045 2.369 0 3.666-2.937 4.115-6.709 4.115zm-3.207-5.606c-.718 0-1.3.807-1.3 1.799 0 .994.582 1.801 1.3 1.801.719 0 1.301-.807 1.301-1.801 0-.992-.582-1.799-1.301-1.799z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-globe'> - <path d="M10 .4C4.705.4.399 4.707.399 10c0 5.293 4.306 9.6 9.601 9.6 5.293 0 9.6-4.307 9.6-9.6 0-5.293-4.307-9.6-9.6-9.6zm8.188 9.6c0 1.873-.636 3.6-1.696 4.98-.3-.234-.619-.867-.319-1.523.303-.66.382-2.188.312-2.783-.066-.594-.375-2.025-1.214-2.039-.838-.012-1.413-.289-1.911-1.283-1.033-2.068 1.939-2.465.906-3.609-.289-.322-1.783 1.322-2.002-.869-.014-.157.135-.392.336-.636 3.244 1.09 5.588 4.157 5.588 7.762zM8.875 1.893c-.196.382-.713.537-1.027.824-.684.619-.978.533-1.346 1.127-.371.594-1.567 1.449-1.567 1.879s.604.936.906.838c.302-.1 1.099-.094 1.567.07.469.166 3.914.332 2.816 3.244-.348.926-1.873.77-2.279 2.303-.061.225-.272 1.186-.285 1.5-.025.486.344 2.318-.125 2.318-.471 0-1.738-1.639-1.738-1.936 0-.297-.328-1.338-.328-2.23 0-.891-1.518-.877-1.518-2.062 0-1.068.823-1.6.638-2.113-.181-.51-1.627-.527-2.23-.59a8.213 8.213 0 0 1 6.516-5.172zM7.424 17.77c.492-.26.542-.596.988-.613.51-.023.925-.199 1.5-.326.51-.111 1.423-.629 2.226-.695.678-.055 2.015.035 2.375.689a8.159 8.159 0 0 1-7.089.945z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google+-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm-.553 13.721c-.603.293-1.252.324-1.503.324h-.075-.054c-.392 0-2.343-.09-2.343-1.867 0-1.746 2.125-1.883 2.776-1.883h.017c-.376-.502-.298-1.008-.298-1.008a2.34 2.34 0 0 1-.14.004c-.245 0-.718-.039-1.124-.301-.498-.32-.75-.865-.75-1.619 0-2.131 2.327-2.217 2.35-2.219h2.324v.051c0 .26-.467.311-.785.354-.108.016-.325.037-.386.068.589.315.684.809.684 1.545 0 .838-.328 1.281-.676 1.592-.216.193-.385.344-.385.547 0 .199.232.402.502.639.441.389 1.046.918 1.046 1.811 0 .923-.397 1.583-1.18 1.962zM14.5 10H13v1.5h-1V10h-1.5V9H12V7.5h1V9h1.5v1zm-6.277 1.15a2.08 2.08 0 0 0-.157.006 1.918 1.918 0 0 0-1.15.469c-.294.266-.444.602-.423.941.045.711.808 1.127 1.735 1.061.912-.066 1.52-.592 1.476-1.303-.042-.668-.623-1.174-1.481-1.174zm.874-3.865c-.242-.85-.632-1.102-1.238-1.102a.75.75 0 0 0-.194.027c-.263.075-.472.294-.588.62-.119.33-.126.674-.024 1.066.185.701.683 1.209 1.185 1.209a.664.664 0 0 0 .194-.027c.549-.154.893-.992.665-1.793z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google+'> - <path d="M1.989 5.589c0 1.494.499 2.572 1.482 3.205.806.52 1.74.598 2.226.598.118 0 .213-.006.279-.01 0 0-.154 1.004.59 1.996h-.034c-1.289 0-5.493.269-5.493 3.727 0 3.516 3.861 3.695 4.636 3.695.061 0 .097-.002.097-.002.008 0 .063.002.158.002.497 0 1.782-.062 2.975-.643 1.548-.75 2.333-2.059 2.333-3.885 0-1.764-1.196-2.814-2.069-3.582-.533-.469-.994-.873-.994-1.266 0-.4.337-.701.762-1.082.689-.615 1.339-1.492 1.339-3.15 0-1.457-.189-2.436-1.354-3.057.121-.062.551-.107.763-.137.631-.086 1.554-.184 1.554-.699V1.2H6.64c-.046.002-4.651.172-4.651 4.389zm7.424 9.013c.088 1.406-1.115 2.443-2.922 2.574-1.835.135-3.345-.691-3.433-2.096-.043-.676.254-1.336.835-1.863.589-.533 1.398-.863 2.278-.928.104-.006.207-.012.31-.012 1.699.001 2.849.999 2.932 2.325zM8.212 4.626c.451 1.588-.23 3.246-1.316 3.553a1.417 1.417 0 0 1-.384.052c-.994 0-1.979-1.006-2.345-2.393-.204-.776-.187-1.458.047-2.112.229-.645.643-1.078 1.163-1.225.125-.035.254-.053.385-.053 1.2 0 1.972.498 2.45 2.178zM16 8V5h-2v3h-3v2h3v3h2v-3h3V8h-3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-drive'> - <path d="M8.175 13l-3.324 6h11.824L20 13H8.175zM5.865 2.299L0 12.914l3.372 6.084L9.238 8.383 5.865 2.299zM19.445 12L13.349 1H6.604l6.088 11h6.753z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-hangouts'> - <path d="M10 0C5.25 0 1.4 3.806 1.4 8.5S5.25 17 10 17v3c3.368-1.672 8.6-5.305 8.6-11.5C18.6 3.806 14.75 0 10 0zM9 9.741a2.552 2.552 0 0 1-2.32 2.538.211.211 0 0 1-.228-.211v-.852c0-.106.079-.194.184-.21A1.265 1.265 0 0 0 7.683 10H5.732A.732.732 0 0 1 5 9.268V6.732C5 6.328 5.328 6 5.732 6h2.536c.404 0 .732.328.732.732v3.009zm6 0a2.552 2.552 0 0 1-2.32 2.538.211.211 0 0 1-.228-.211v-.852c0-.106.079-.194.184-.21A1.266 1.266 0 0 0 13.683 10h-1.951A.732.732 0 0 1 11 9.268V6.732c0-.404.328-.732.732-.732h2.536c.404 0 .732.328.732.732v3.009z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-play'> - <path d="M4.943 18.05l7.666-4.327-1.646-1.823-6.02 6.15zm-2.8-15.927c-.089.158-.143.34-.143.542V17.79c0 .28.105.52.263.71L9.89 10.71 2.142 2.123zM17.48 9.482l-2.673-1.509-2.722 2.781 1.951 2.163 3.444-1.943a.946.946 0 0 0 .52-.746.946.946 0 0 0-.52-.746zm-4.115-2.323l-9.22-5.204 6.866 7.61 2.354-2.406z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-graduation-cap'> - <path d="M3.302 12.238c.464 1.879 1.054 2.701 3.022 3.562 1.969.86 2.904 1.8 3.676 1.8.771 0 1.648-.822 3.616-1.684 1.969-.861 1.443-1.123 1.907-3.002L10 15.6l-6.698-3.362zm16.209-4.902l-8.325-4.662c-.652-.365-1.72-.365-2.372 0L.488 7.336c-.652.365-.652.963 0 1.328l8.325 4.662c.652.365 1.72.365 2.372 0l5.382-3.014-5.836-1.367a3.09 3.09 0 0 1-.731.086c-1.052 0-1.904-.506-1.904-1.131 0-.627.853-1.133 1.904-1.133.816 0 1.51.307 1.78.734l6.182 2.029 1.549-.867c.651-.364.651-.962 0-1.327zm-2.544 8.834c-.065.385 1.283 1.018 1.411-.107.579-5.072-.416-6.531-.416-6.531l-1.395.781c0-.001 1.183 1.125.4 5.857z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-grid'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M8 4H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm7 0h-3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm-7 7H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zm7 0h-3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-grooveshark'> - <path d="M10 1.199a8.801 8.801 0 1 0 .002 17.602A8.801 8.801 0 0 0 10 1.199zm3.538 9.139a26.815 26.815 0 0 0-1.497-1.939 15.769 15.769 0 0 0-1.614-1.645c-.578-.504-1.208-.982-1.9-1.316a9.018 9.018 0 0 0-1.439-.536c-.056-.015-.208-.084-.252-.015-.028.043-.006.123-.002.17l.039.308c.148 1.228.204 2.525-.178 3.719A3.9 3.9 0 0 1 5.62 10.77c-.413.379-1.002.76-1.587.732a1.141 1.141 0 0 1-.324-.059c-.626-.211-.663-.886-.667-1.443a6.992 6.992 0 0 1 .216-1.775 7.033 7.033 0 0 1 4.419-4.834A6.954 6.954 0 0 1 10 2.994a7.011 7.011 0 0 1 5.817 3.137c.32.488.577 1.016.766 1.566h-.003c.061.174.117.35.163.527.146.58.22 1.178.216 1.775-.008 1.125-.37 2.367-1.783 1.771-.667-.282-1.224-.852-1.638-1.432z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hair-cross'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm1 17.125V13H9v4.525A7.589 7.589 0 0 1 2.473 11H7V9H2.473A7.589 7.589 0 0 1 9 2.475V7h2V2.475A7.59 7.59 0 0 1 17.525 9H13v2h4.525A7.592 7.592 0 0 1 11 17.525z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hand'> - <path d="M17.924 17.315c-.057.174-.193.367-.416.432-.161.047-5.488 1.59-5.652 1.633-.469.125-.795.033-1.009-.156-.326-.287-4.093-2.85-8.845-3.092-.508-.025-.259-1.951 1.193-1.951.995 0 3.904.723 4.255.371.271-.272.394-1.879-.737-4.683L4.438 4.232a1.045 1.045 0 0 1 1.937-.781L8.361 8.37c.193.48.431.662.69.562.231-.088.279-.242.139-.709L7.144 2.195A1.043 1.043 0 0 1 7.796.871a1.042 1.042 0 0 1 1.325.652l1.946 5.732c.172.504.354.768.642.646.173-.073.161-.338.115-.569l-1.366-5.471a1.045 1.045 0 1 1 2.027-.506l1.26 5.042c.184.741.353 1.008.646.935.299-.073.285-.319.244-.522l-.872-4.328a.95.95 0 0 1 1.86-.375l.948 4.711.001.001v.001l.568 2.825c.124.533.266 1.035.45 1.527 1.085 2.889.519 5.564.334 6.143z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-heart-outlined'> - <path d="M17.19 4.156c-1.672-1.535-4.383-1.535-6.055 0L10 5.197 8.864 4.156c-1.672-1.535-4.382-1.535-6.054 0-1.881 1.726-1.881 4.519 0 6.245L10 17l7.19-6.599c1.88-1.726 1.88-4.52 0-6.245zm-1.066 5.219L10 15.09 3.875 9.375c-.617-.567-.856-1.307-.856-2.094s.138-1.433.756-1.999c.545-.501 1.278-.777 2.063-.777.784 0 1.517.476 2.062.978L10 7.308l2.099-1.826c.546-.502 1.278-.978 2.063-.978s1.518.276 2.063.777c.618.566.755 1.212.755 1.999s-.238 1.528-.856 2.095z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-heart'> - <path d="M17.19 4.155c-1.672-1.534-4.383-1.534-6.055 0L10 5.197 8.864 4.155c-1.672-1.534-4.382-1.534-6.054 0-1.881 1.727-1.881 4.52 0 6.246L10 17l7.19-6.599c1.88-1.726 1.88-4.52 0-6.246z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-help-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm-.151 15.199h-.051c-.782-.023-1.334-.6-1.311-1.371.022-.758.587-1.309 1.343-1.309l.046.002c.804.023 1.35.594 1.327 1.387-.023.76-.578 1.291-1.354 1.291zm3.291-6.531c-.184.26-.588.586-1.098.983l-.562.387c-.308.24-.494.467-.563.688-.056.174-.082.221-.087.576v.09H8.685l.006-.182c.027-.744.045-1.184.354-1.547.485-.568 1.555-1.258 1.6-1.287a1.65 1.65 0 0 0 .379-.387c.225-.311.324-.555.324-.793 0-.334-.098-.643-.293-.916-.188-.266-.545-.398-1.061-.398-.512 0-.863.162-1.072.496-.216.341-.325.7-.325 1.067v.092H6.386l.004-.096c.057-1.353.541-2.328 1.435-2.897.563-.361 1.264-.544 2.081-.544 1.068 0 1.972.26 2.682.772.721.519 1.086 1.297 1.086 2.311-.001.567-.18 1.1-.534 1.585z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-help'> - <path d="M14.09 2.233C12.95 1.411 11.518 1 9.794 1c-1.311 0-2.418.289-3.317.868C5.05 2.774 4.292 4.313 4.2 6.483h3.307c0-.633.185-1.24.553-1.828.369-.586.995-.879 1.878-.879.898 0 1.517.238 1.854.713.339.477.508 1.004.508 1.582 0 .504-.252.965-.557 1.383a2.88 2.88 0 0 1-.661.674s-1.793 1.15-2.58 2.074c-.456.535-.497 1.338-.538 2.488-.002.082.029.252.315.252h2.571c.256 0 .309-.189.312-.274.018-.418.064-.633.141-.875.144-.457.538-.855.979-1.199l.91-.627c.822-.641 1.477-1.166 1.767-1.578.494-.676.842-1.51.842-2.5-.001-1.615-.571-2.832-1.711-3.656zM9.741 14.924c-1.139-.035-2.079.754-2.115 1.99-.035 1.234.858 2.051 1.998 2.084 1.189.035 2.104-.727 2.141-1.963.034-1.236-.834-2.076-2.024-2.111z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-home'> - <path d="M18.672 11H17v6c0 .445-.194 1-1 1h-4v-6H8v6H4c-.806 0-1-.555-1-1v-6H1.328c-.598 0-.47-.324-.06-.748L9.292 2.22c.195-.202.451-.302.708-.312.257.01.513.109.708.312l8.023 8.031c.411.425.539.749-.059.749z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hour-glass'> - <path d="M15.6 4.576V2.228C15.6 1.439 13.092 0 10 0 6.907 0 4.4 1.439 4.4 2.228v2.348C4.4 6.717 8.277 8.484 8.277 10c0 1.514-3.877 3.281-3.877 5.422v2.35C4.4 18.56 6.907 20 10 20c3.092 0 5.6-1.44 5.6-2.229v-2.35c0-2.141-3.877-3.908-3.877-5.422 0-1.515 3.877-3.282 3.877-5.423zM5.941 2.328c.696-.439 2-1.082 4.114-1.082 2.113 0 4.006 1.082 4.006 1.082.142.086.698.383.317.609-.838.497-2.478 1.02-4.378 1.02s-3.484-.576-4.324-1.074c-.381-.225.265-.555.265-.555zM10.501 10c0 1.193.996 1.961 2.051 2.986.771.748 1.826 1.773 1.826 2.435v1.328c-.97-.483-3.872-.955-3.872-2.504 0-.783-1.013-.783-1.013 0 0 1.549-2.902 2.021-3.872 2.504v-1.328c0-.662 1.056-1.688 1.826-2.435C8.502 11.961 9.498 11.193 9.498 10c0-1.193-.996-1.961-2.051-2.986-.771-.75-1.826-1.775-1.826-2.438l-.046-.998C6.601 4.131 8.227 4.656 10 4.656c1.772 0 3.406-.525 4.433-1.078l-.055.998c0 .662-1.056 1.688-1.826 2.438-1.054 1.025-2.051 1.793-2.051 2.986z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-houzz'> - <path d="M4 10l6 3-6 3v-6zm6-3l6 3V4l-6 3zm0 13l6-3v-7l-6 3v7zm0-20L4 3v7l6-3V0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-icloud'> - <path d="M10.909 5c1.884 0 3.417 1.598 3.417 3.561 0 .136-.012.29-.037.484l-.206 1.594c-.043.332.186.65.528.653l1.65.01c.958.006 1.739.835 1.739 1.848 0 1.02-.785 1.85-1.75 1.85H4.167C2.972 15 2 13.978 2 12.722c0-.913.519-1.735 1.323-2.095l.651-.291c.23-.103.508-.431.516-.775l.016-.714c.012-.535.421-.97.91-.97.032 0 .094.006.207.035l1.039.264c.265.067.606-.066.73-.309l.503-.981C8.493 5.723 9.648 5 10.909 5m0-2C8.828 3 7.023 4.207 6.116 5.974a2.834 2.834 0 0 0-.699-.096c-1.587 0-2.873 1.304-2.91 2.924A4.28 4.28 0 0 0 0 12.722C0 15.085 1.865 17 4.167 17H16.25c2.071 0 3.75-1.724 3.75-3.85 0-2.118-1.667-3.835-3.728-3.848.031-.243.053-.489.053-.741C16.326 5.49 13.901 3 10.909 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-image-inverted'> - <path d="M18 3H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-4.75 3.5a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5zM4 14l3.314-7.619 3.769 6.102 3.231-1.605L16 14H4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-image'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M19 2H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 14H2V4h16v12zm-3.685-5.123l-3.231 1.605-3.77-6.101L4 14h12l-1.685-3.123zM13.25 9a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-images'> - <path d="M17.125 6.17L15.079.535c-.151-.416-.595-.637-.989-.492L.492 5.006c-.394.144-.593.597-.441 1.013l2.156 5.941V8.777c0-1.438 1.148-2.607 2.56-2.607H8.36l4.285-3.008 2.479 3.008h2.001zM19.238 8H4.767a.761.761 0 0 0-.762.777v9.42c.001.444.343.803.762.803h14.471c.42 0 .762-.359.762-.803v-9.42A.761.761 0 0 0 19.238 8zM18 17H6v-2l1.984-4.018 2.768 3.436 2.598-2.662 3.338-1.205L18 14v3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-inbox'> - <path d="M19.253 9.542c-.388-.416-2.265-2.271-3.122-3.118A1.49 1.49 0 0 0 15.098 6H4.902c-.394 0-.77.165-1.033.424-.858.847-2.734 2.701-3.122 3.118-.485.521-.723.902-.624 1.449s.466 2.654.556 3.074c.088.419.684.935 1.24.935h16.162c.556 0 1.152-.516 1.241-.935.089-.42.457-2.527.556-3.074s-.139-.929-.625-1.449zm-5.239.461a.271.271 0 0 0-.238.133L12.966 12H7.034l-.809-1.864a.271.271 0 0 0-.238-.133H2.473L4.495 8h11.01l2.023 2.003h-3.514z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-infinity'> - <path d="M15.902 5.6c-2.079 0-4.358 1.158-5.902 2.916C8.455 6.758 6.175 5.6 4.096 5.6 2.116 5.6 0 6.756 0 10c0 3.244 2.116 4.398 4.096 4.4 2.079 0 4.358-1.158 5.903-2.916 1.544 1.758 3.823 2.916 5.902 2.916C17.882 14.4 20 13.244 20 10c0-3.244-2.118-4.4-4.098-4.4zM4.096 12.641C2.584 12.641 1.8 11.752 1.8 10s.784-2.641 2.296-2.641c1.673 0 3.614 1.086 4.807 2.641-1.193 1.555-3.134 2.641-4.807 2.641zm11.806 0c-1.673 0-3.614-1.086-4.807-2.641 1.192-1.555 3.135-2.641 4.807-2.641 1.512 0 2.298.889 2.298 2.641s-.786 2.641-2.298 2.641z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-info-with-circle'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm.896 3.466c.936 0 1.211.543 1.211 1.164 0 .775-.62 1.492-1.679 1.492-.886 0-1.308-.445-1.282-1.182 0-.621.519-1.474 1.75-1.474zM8.498 15.75c-.64 0-1.107-.389-.66-2.094l.733-3.025c.127-.484.148-.678 0-.678-.191 0-1.022.334-1.512.664l-.319-.523c1.555-1.299 3.343-2.061 4.108-2.061.64 0 .746.756.427 1.92l-.84 3.18c-.149.562-.085.756.064.756.192 0 .82-.232 1.438-.719l.362.486c-1.513 1.512-3.162 2.094-3.801 2.094z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-info'> - <path d="M12.432 0c1.34 0 2.01.912 2.01 1.957 0 1.305-1.164 2.512-2.679 2.512-1.269 0-2.009-.75-1.974-1.99C9.789 1.436 10.67 0 12.432 0zM8.309 20c-1.058 0-1.833-.652-1.093-3.524l1.214-5.092c.211-.814.246-1.141 0-1.141-.317 0-1.689.562-2.502 1.117l-.528-.88c2.572-2.186 5.531-3.467 6.801-3.467 1.057 0 1.233 1.273.705 3.23l-1.391 5.352c-.246.945-.141 1.271.106 1.271.317 0 1.357-.392 2.379-1.207l.6.814C12.098 19.02 9.365 20 8.309 20z"></path> - </symbol><symbol viewBox='0 0 19.19995 19.19995' id='entypo-instagram-with-circle'> - <title>instagram-with-circle</title><path d="M13.498 6.651a1.656 1.656 0 0 0-.95-.949 2.766 2.766 0 0 0-.928-.172c-.527-.024-.685-.03-2.02-.03s-1.493.006-2.02.03a2.766 2.766 0 0 0-.929.172 1.656 1.656 0 0 0-.949.95 2.766 2.766 0 0 0-.172.928c-.024.527-.03.685-.03 2.02s.006 1.493.03 2.02a2.766 2.766 0 0 0 .172.929 1.656 1.656 0 0 0 .95.949 2.766 2.766 0 0 0 .928.172c.527.024.685.029 2.02.029s1.493-.005 2.02-.03a2.766 2.766 0 0 0 .929-.171 1.656 1.656 0 0 0 .949-.95 2.766 2.766 0 0 0 .172-.928c.024-.527.029-.685.029-2.02s-.005-1.493-.03-2.02a2.766 2.766 0 0 0-.171-.929zM9.6 12.168A2.568 2.568 0 1 1 12.168 9.6 2.568 2.568 0 0 1 9.6 12.168zm2.669-4.637a.6.6 0 1 1 .6-.6.6.6 0 0 1-.6.6z"></path><circle cx="9.6" cy="9.6" r="1.667"></circle><path d="M9.6 0a9.6 9.6 0 1 0 9.6 9.6A9.6 9.6 0 0 0 9.6 0zm4.97 11.661a3.67 3.67 0 0 1-.233 1.214 2.556 2.556 0 0 1-1.462 1.462 3.67 3.67 0 0 1-1.213.233c-.534.024-.704.03-2.062.03s-1.528-.006-2.062-.03a3.67 3.67 0 0 1-1.213-.233 2.556 2.556 0 0 1-1.462-1.462 3.67 3.67 0 0 1-.233-1.213c-.024-.534-.03-.704-.03-2.062s.006-1.528.03-2.062a3.67 3.67 0 0 1 .232-1.213 2.556 2.556 0 0 1 1.463-1.463 3.67 3.67 0 0 1 1.213-.232c.534-.024.704-.03 2.062-.03s1.528.006 2.062.03a3.67 3.67 0 0 1 1.213.232 2.556 2.556 0 0 1 1.462 1.463 3.67 3.67 0 0 1 .233 1.213c.024.534.03.704.03 2.062s-.006 1.528-.03 2.062z"></path> - </symbol><symbol viewBox='0 0 18 18' id='entypo-instagram'> - <title>instagram</title><path d="M17.946 5.29a6.606 6.606 0 0 0-.418-2.185 4.412 4.412 0 0 0-1.039-1.594A4.412 4.412 0 0 0 14.895.472a6.606 6.606 0 0 0-2.184-.418C11.75.01 11.444 0 9 0S6.25.01 5.29.054a6.606 6.606 0 0 0-2.185.418A4.412 4.412 0 0 0 1.51 1.511 4.412 4.412 0 0 0 .472 3.105a6.606 6.606 0 0 0-.418 2.184C.01 6.25 0 6.556 0 9s.01 2.75.054 3.71a6.606 6.606 0 0 0 .418 2.185 4.412 4.412 0 0 0 1.039 1.594 4.411 4.411 0 0 0 1.594 1.039 6.606 6.606 0 0 0 2.184.418C6.25 17.99 6.556 18 9 18s2.75-.01 3.71-.054a6.606 6.606 0 0 0 2.185-.418 4.602 4.602 0 0 0 2.633-2.633 6.606 6.606 0 0 0 .418-2.184C17.99 11.75 18 11.444 18 9s-.01-2.75-.054-3.71zm-1.62 7.347a4.978 4.978 0 0 1-.31 1.67 2.98 2.98 0 0 1-1.708 1.709 4.979 4.979 0 0 1-1.671.31c-.95.043-1.234.052-3.637.052s-2.688-.009-3.637-.052a4.979 4.979 0 0 1-1.67-.31 2.788 2.788 0 0 1-1.036-.673 2.788 2.788 0 0 1-.673-1.035 4.978 4.978 0 0 1-.31-1.671c-.043-.95-.052-1.234-.052-3.637s.009-2.688.052-3.637a4.979 4.979 0 0 1 .31-1.67 2.788 2.788 0 0 1 .673-1.036 2.788 2.788 0 0 1 1.035-.673 4.979 4.979 0 0 1 1.671-.31c.95-.043 1.234-.052 3.637-.052s2.688.009 3.637.052a4.979 4.979 0 0 1 1.67.31 2.788 2.788 0 0 1 1.036.673 2.788 2.788 0 0 1 .673 1.035 4.979 4.979 0 0 1 .31 1.671c.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637zM9 4.378A4.622 4.622 0 1 0 13.622 9 4.622 4.622 0 0 0 9 4.378zM9 12a3 3 0 1 1 3-3 3 3 0 0 1-3 3zm5.884-7.804a1.08 1.08 0 1 1-1.08-1.08 1.08 1.08 0 0 1 1.08 1.08z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-install'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H12.02l.38 4.065h2.7L10 10.293 4.9 6.065h2.7L7.98 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zm-2.1 4.347a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-key'> - <path d="M17.691 4.725c-.503-2.977-3.22-4.967-6.069-4.441C8.772.809 6.366 3.1 6.869 6.079c.107.641.408 1.644.763 2.365l-5.175 7.723c-.191.285-.299.799-.242 1.141l.333 1.971a.612.612 0 0 0 .7.514l1.516-.281c.328-.059.744-.348.924-.639l2.047-3.311.018-.022 1.386-.256 2.39-3.879c.785.139 1.912.092 2.578-.031 2.848-.526 4.087-3.67 3.584-6.649zm-2.525 1.527c-.784 1.17-1.584.346-2.703-.475-1.119-.818-2.135-1.322-1.352-2.492.784-1.17 2.326-1.455 3.447-.635 1.12.819 1.391 2.432.608 3.602z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-keyboard'> - <path d="M18.6 4H1.4C.629 4 0 4.629 0 5.4v9.2c0 .769.629 1.4 1.399 1.4h17.2c.77 0 1.4-.631 1.4-1.4V5.4C20 4.629 19.369 4 18.6 4zM11 6h2v2h-2V6zm3 3v2h-2V9h2zM8 6h2v2H8V6zm3 3v2H9V9h2zM5 6h2v2H5V6zm3 3v2H6V9h2zM2 6h2v2H2V6zm3 3v2H3V9h2zm-1 5H2v-2h2v2zm11 0H5v-2h10v2zm3 0h-2v-2h2v2zm-3-3V9h2v2h-2zm3-3h-4V6h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lab-flask'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16.432 15C14.387 9.893 12 8.547 12 6V3h.5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5H8v3c0 2.547-2.387 3.893-4.432 9-.651 1.625-2.323 4 6.432 4s7.083-2.375 6.432-4zm-1.617 1.751c-.702.21-2.099.449-4.815.449s-4.113-.239-4.815-.449c-.249-.074-.346-.363-.258-.628.22-.67.635-1.828 1.411-3.121 1.896-3.159 3.863.497 5.5.497s1.188-1.561 1.824-.497a15.353 15.353 0 0 1 1.411 3.121c.088.265-.009.553-.258.628z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-landline'> - <path d="M4.902.25C3.498-.027 2.115.875 1.833 2.273c-1.105 5.455-1.105 9.997 0 15.454C2.08 18.952 3.17 19.8 4.388 19.8c.17 0 .342-.016.515-.05 1.412-.279 2.329-1.638 2.046-3.036-.978-4.832-.978-8.598 0-13.43C7.231 1.888 6.314.529 4.902.25zM17 2H8.436a4.08 4.08 0 0 1-.017 1.44c-.936 4.72-.936 8.398 0 13.12.098.49.09.973.017 1.44H17c1.1 0 2-.9 2-2V4c0-1.1-.899-2-2-2zm-5 12.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 12 14.5zM17 9h-7V5h7v4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-language'> - <path d="M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 0 1 1.229-.799l.082 4.277c-.385.131-.799.185-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 0 0-.196-.145h-1.95a.194.194 0 0 0-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-laptop'> - <path d="M19.754 15.631L18 13V4c0-1.102-.9-2-2-2H4c-1.101 0-2 .898-2 2v9L.246 15.631C0 16 0 16.213 0 16.5v.5c0 .5.5 1 .999 1h18.002c.499 0 .999-.5.999-1v-.5c0-.287 0-.5-.246-.869zM7 16l.6-1h4.8l.6 1H7zm9-4H4V4h12v8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lastfm-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.644 12.43c-2.002 0-2.697-.91-3.066-2.043l-.371-1.166c-.277-.851-.501-1.467-1.519-1.467-.706 0-1.626.463-1.626 1.898 0 1.119.77 1.82 1.568 1.82.677 0 1.084-.381 1.296-.572l.354 1.012c-.241.174-.734.517-1.707.517-1.346 0-2.625-.957-2.625-2.73 0-1.844 1.333-2.93 2.705-2.93 1.54 0 2.113.56 2.6 2.078l.382 1.166c.278.852.865 1.471 2.034 1.471.787 0 1.204-.176 1.204-.607 0-.338-.197-.584-.787-.723l-.787-.188c-.961-.232-1.343-.734-1.343-1.529 0-1.271 1.018-1.668 2.061-1.668 1.181 0 1.898.432 1.99 1.482l-1.157.139c-.046-.5-.347-.711-.903-.711-.509 0-.821.234-.821.631 0 .35.15.559.66.676l.74.164c.995.233 1.528.723 1.528 1.668-.001 1.169-.974 1.612-2.41 1.612z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lastfm'> - <path d="M8.574 14.576c-.477.348-1.455 1.024-3.381 1.024C2.532 15.6 0 13.707 0 10.195 0 6.547 2.637 4.4 5.354 4.4c3.047 0 4.183 1.108 5.144 4.109l.756 2.309c.551 1.688 1.713 2.91 4.026 2.91 1.558 0 2.382-.346 2.382-1.199 0-.67-.389-1.156-1.557-1.434l-1.559-.369c-1.9-.461-2.656-1.455-2.656-3.025 0-2.516 2.016-3.301 4.077-3.301 2.337 0 3.757.854 3.94 2.932l-2.291.277c-.092-.992-.688-1.408-1.787-1.408-1.008 0-1.627.461-1.627 1.246 0 .693.299 1.109 1.307 1.34l1.466.324c1.97.461 3.025 1.432 3.025 3.303 0 2.309-1.924 3.186-4.766 3.186-3.963 0-5.338-1.801-6.07-4.041L8.43 9.25c-.549-1.687-.99-2.902-3.006-2.902-1.398 0-3.219.916-3.219 3.756 0 2.217 1.523 3.604 3.104 3.604 1.34 0 2.146-.754 2.564-1.131l.701 1.999z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-layers'> - <path d="M9.248 11.601c.45.313 1.05.313 1.5 0l9.088-5.281a.375.375 0 0 0-.048-.646l-9.205-3.537a1.315 1.315 0 0 0-1.17 0L.208 5.674a.375.375 0 0 0-.048.646l9.088 5.281zm10.54-.79l-2.486-1.233-5.725 3.327c-.469.309-1.014.471-1.579.471s-1.11-.163-1.579-.471L2.698 9.576.208 10.81a.375.375 0 0 0-.048.646l9.088 6.309c.45.313 1.05.313 1.5 0l9.088-6.309a.374.374 0 0 0-.048-.645z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-leaf'> - <path d="M19.025 3.587c-4.356 2.556-4.044 7.806-7.096 10.175-2.297 1.783-5.538.88-7.412.113 0 0-1.27 1.603-2.181 3.74-.305.717-1.644-.073-1.409-.68C3.905 9.25 14.037 5.416 14.037 5.416s-7.149-.303-11.927 5.94c-.128-1.426-.34-5.284 3.36-7.65 5.016-3.211 14.572-.715 13.555-.119z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-level-down'> - <path d="M1 12V5h3v6h10V8l5 4.5-5 4.5v-3H3a2 2 0 0 1-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-level-up'> - <path d="M19 9v7h-3v-6H6v3L1 8.5 6 4v3h11c1.104 0 2 .897 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lifebuoy'> - <path d="M16.788 3.212c-3.749-3.749-9.827-3.749-13.575 0-3.75 3.75-3.75 9.828-.002 13.576A9.6 9.6 0 1 0 16.788 3.212zm-10.04 10.04a4.598 4.598 0 0 1 0-6.505 4.6 4.6 0 1 1 0 6.505zm8.599-.373a6.07 6.07 0 0 0 0-5.759l1.783-.96a8.111 8.111 0 0 1 .002 7.678l-1.785-.959zm-1.508-10.01l-.961 1.784a6.073 6.073 0 0 0-5.756 0L6.161 2.87a8.114 8.114 0 0 1 7.678-.001zM2.87 6.16l1.784.961a6.07 6.07 0 0 0-.001 5.756l-1.784.961A8.111 8.111 0 0 1 2.87 6.16zm3.289 10.969l.961-1.783a6.068 6.068 0 0 0 5.759 0l.961 1.785a8.117 8.117 0 0 1-7.681-.002z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-bulb'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M7.186 19.172c.789.51 1.701.855 2.814.828 1.111.027 2.025-.318 2.814-.828L12.797 17H7.203l-.017 2.172zM12.697 16c0-4.357 4.63-5.848 4.283-10.188-.218-2.738-2.073-5.81-6.98-5.81S3.238 3.074 3.019 5.813C2.672 10.152 7.303 11.643 7.303 16h5.394zM5 6c.207-2.598 2.113-4 5-4 2.886 0 4.654 1.371 4.861 3.969.113 1.424-.705 2.373-1.809 3.926C12.238 11.041 11.449 12.238 11 14H9c-.449-1.762-1.238-2.959-2.053-4.106C5.844 8.342 4.886 7.424 5 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-down'> - <path d="M10 6.797a3.191 3.191 0 0 0-3.2 3.201 3.19 3.19 0 0 0 3.2 3.199 3.19 3.19 0 0 0 3.199-3.199A3.19 3.19 0 0 0 10 6.797zm0 5.25a2.049 2.049 0 1 1 0-4.1 2.05 2.05 0 0 1 0 4.1zM15 5c-.312-.312-.883-.248-1.273.142-.39.391-.453.959-.141 1.272s.882.25 1.273-.141c.39-.39.453-.961.141-1.273zm-9.858 8.729c-.391.39-.454.959-.142 1.271s.882.25 1.273-.141c.391-.391.454-.961.142-1.273s-.883-.248-1.273.143zM5 5c-.312.312-.249.883.141 1.273.391.391.961.453 1.273.141s.249-.883-.142-1.273C5.883 4.752 5.312 4.688 5 5zm8.727 9.857c.39.391.96.455 1.273.143s.249-.883-.142-1.274-.96-.453-1.273-.141-.248.882.142 1.272zM10 4.998c.441 0 .8-.447.8-1C10.799 3.445 10.441 3 10 3c-.442 0-.801.445-.801.998 0 .553.358 1 .801 1zM10 17c.441 0 .8-.447.8-1 0-.553-.358-.998-.799-.998-.442 0-.801.445-.801.998-.001.553.357 1 .8 1zm-5-7c0-.441-.45-.8-1.003-.8-.553 0-.997.359-.997.8 0 .442.444.8.997.8C4.55 10.8 5 10.442 5 10zm12 0c0-.441-.448-.8-1.001-.8-.553 0-.999.359-.999.8 0 .442.446.8.999.8.553 0 1.001-.358 1.001-.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-up'> - <path d="M19 9.199h-.98c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799H19c.552 0 1-.357 1-.799 0-.441-.449-.801-1-.801zM10 4.5A5.483 5.483 0 0 0 4.5 10c0 3.051 2.449 5.5 5.5 5.5 3.05 0 5.5-2.449 5.5-5.5S13.049 4.5 10 4.5zm0 9.5c-2.211 0-4-1.791-4-4 0-2.211 1.789-4 4-4a4 4 0 0 1 0 8zm-7-4c0-.441-.449-.801-1-.801H1c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799h1c.551 0 1-.358 1-.799zm7-7c.441 0 .799-.447.799-1V1c0-.553-.358-1-.799-1-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1zm0 14c-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1 .441 0 .799-.447.799-1v-1c0-.553-.358-1-.799-1zm7.365-13.234c.391-.391.454-.961.142-1.273s-.883-.248-1.272.143l-.7.699c-.391.391-.454.961-.142 1.273s.883.248 1.273-.143l.699-.699zM3.334 15.533l-.7.701c-.391.391-.454.959-.142 1.271s.883.25 1.272-.141l.7-.699c.391-.391.454-.961.142-1.274s-.883-.247-1.272.142zm.431-12.898c-.39-.391-.961-.455-1.273-.143s-.248.883.141 1.274l.7.699c.391.391.96.455 1.272.143s.249-.883-.141-1.273l-.699-.7zm11.769 14.031l.7.699c.391.391.96.453 1.272.143.312-.312.249-.883-.142-1.273l-.699-.699c-.391-.391-.961-.455-1.274-.143s-.248.882.143 1.273z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-line-graph'> - <path d="M.69 11.331l1.363.338 1.026-1.611-1.95-.482a.904.904 0 1 0-.439 1.755zm17.791.261l-4.463 4.016-5.247-4.061a.905.905 0 0 0-.338-.162l-.698-.174-1.027 1.611 1.1.273 5.697 4.408a.915.915 0 0 0 1.168-.043l5.028-4.527a.9.9 0 0 0 .064-1.277.912.912 0 0 0-1.284-.064zM8.684 7.18l4.887 3.129a.913.913 0 0 0 1.24-.246l5.027-7.242a.902.902 0 0 0-.231-1.26.91.91 0 0 0-1.265.23l-4.528 6.521-4.916-3.147a.915.915 0 0 0-.688-.123.914.914 0 0 0-.571.4L.142 17.209A.903.903 0 0 0 .908 18.6a.908.908 0 0 0 .768-.42l7.008-11z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-link'> - <path d="M7.859 14.691l-.81.805a1.814 1.814 0 0 1-2.545 0 1.762 1.762 0 0 1 0-2.504l2.98-2.955c.617-.613 1.779-1.515 2.626-.675a.992.992 0 1 0 1.397-1.407c-1.438-1.428-3.566-1.164-5.419.675l-2.98 2.956A3.719 3.719 0 0 0 2 14.244a3.72 3.72 0 0 0 1.108 2.658 3.779 3.779 0 0 0 2.669 1.096c.967 0 1.934-.365 2.669-1.096l.811-.805a.988.988 0 0 0 .005-1.4.995.995 0 0 0-1.403-.006zm9.032-11.484c-1.547-1.534-3.709-1.617-5.139-.197l-1.009 1.002a.99.99 0 1 0 1.396 1.406l1.01-1.001c.74-.736 1.711-.431 2.346.197.336.335.522.779.522 1.252s-.186.917-.522 1.251l-3.18 3.154c-1.454 1.441-2.136.766-2.427.477a.99.99 0 1 0-1.396 1.406c.668.662 1.43.99 2.228.99.977 0 2.01-.492 2.993-1.467l3.18-3.153A3.732 3.732 0 0 0 18 5.866a3.726 3.726 0 0 0-1.109-2.659z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-linkedin-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM7.65 13.979H5.706V7.723H7.65v6.256zm-.984-7.024c-.614 0-1.011-.435-1.011-.973 0-.549.409-.971 1.036-.971s1.011.422 1.023.971c0 .538-.396.973-1.048.973zm8.084 7.024h-1.944v-3.467c0-.807-.282-1.355-.985-1.355-.537 0-.856.371-.997.728-.052.127-.065.307-.065.486v3.607H8.814v-4.26c0-.781-.025-1.434-.051-1.996h1.689l.089.869h.039c.256-.408.883-1.01 1.932-1.01 1.279 0 2.238.857 2.238 2.699v3.699z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-linkedin'> - <path d="M5 3c0 1.1-.7 2-2 2-1.2 0-2-.9-2-1.9C1 2 1.8 1 3 1s2 .9 2 2zM1 19h4V6H1v13zM14.6 6.2c-2.1 0-3.3 1.2-3.8 2h-.1l-.2-1.7H6.9c0 1.1.1 2.4.1 3.9V19h4v-7.1c0-.4 0-.7.1-1 .3-.7.8-1.6 1.9-1.6 1.4 0 2 1.2 2 2.8V19h4v-7.4c0-3.7-1.9-5.4-4.4-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-list'> - <path d="M14.4 9H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1h5.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm2 5H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1h7.8c.552 0 .6-.447.6-1s-.048-1-.6-1zM8.6 6h7.8c.552 0 .6-.447.6-1s-.048-1-.6-1H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1zM5.4 9H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm0 5H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm0-10H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-location-pin'> - <path d="M10 2.009c-2.762 0-5 2.229-5 4.99 0 4.774 5 11 5 11s5-6.227 5-11c0-2.76-2.238-4.99-5-4.99zm0 7.751a2.7 2.7 0 1 1 0-5.4 2.7 2.7 0 0 1 0 5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-location'> - <path d="M19.367 18.102L18 14h-1.5l.833 4H2.667l.833-4H2L.632 18.102C.285 19.146.9 20 2 20h16c1.1 0 1.715-.854 1.367-1.898zM15 5A5 5 0 1 0 5 5c0 4.775 5 10 5 10s5-5.225 5-10zm-7.7.06c0-1.491 1.208-2.699 2.7-2.699a2.699 2.699 0 1 1 0 5.399 2.7 2.7 0 0 1-2.7-2.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lock-open'> - <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387A7.731 7.731 0 0 0 7.1 19h5.8a7.68 7.68 0 0 0 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lock'> - <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387A7.731 7.731 0 0 0 7.1 19h5.8a7.68 7.68 0 0 0 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-log-out'> - <path d="M19 10l-6-5v3H6v4h7v3l6-5zM3 3h8V1H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H3V3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-login'> - <path d="M14 10L8 5v3H1v4h7v3l6-5zm3 7H9v2h8c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2H9v2h8v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-loop'> - <path d="M20 7v7c0 1.103-.896 2-2 2H2c-1.104 0-2-.897-2-2V7a2 2 0 0 1 2-2h7V3l4 3.5L9 10V8H3v5h14V8h-3V5h4a2 2 0 0 1 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-magnet'> - <path d="M12.165 17.86c-.028.309.217.584.545.611l3.985.326c.329.027.621-.203.65-.512l.311-3.287-5.18-.426-.311 3.288zm-9.821-2.861l.312 3.287c.028.309.321.539.65.512l3.985-.326c.328-.027.573-.303.546-.611l-.312-3.287-5.181.425zm-.513-5.416l.321 3.391 5.181-.426-.322-3.387A2.949 2.949 0 0 1 7 8.911c0-1.555 1.346-2.82 3-2.82s3 1.266 3 2.82c0 .084-.004.168-.012.25l-.321 3.387 5.181.426.321-3.391c.021-.225.03-.449.03-.672C18.2 4.659 14.522 1.2 10 1.2S1.8 4.659 1.8 8.911c0 .223.011.447.031.672z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-magnifying-glass'> - <path d="M17.545 15.467l-3.779-3.779a6.15 6.15 0 0 0 .898-3.21c0-3.417-2.961-6.377-6.378-6.377A6.185 6.185 0 0 0 2.1 8.287c0 3.416 2.961 6.377 6.377 6.377a6.15 6.15 0 0 0 3.115-.844l3.799 3.801a.953.953 0 0 0 1.346 0l.943-.943c.371-.371.236-.84-.135-1.211zM4.004 8.287a4.282 4.282 0 0 1 4.282-4.283c2.366 0 4.474 2.107 4.474 4.474a4.284 4.284 0 0 1-4.283 4.283c-2.366-.001-4.473-2.109-4.473-4.474z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mail-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM6.231 7h7.52c.399 0 .193.512-.024.643-.217.13-3.22 1.947-3.333 2.014s-.257.1-.403.1a.793.793 0 0 1-.402-.1L6.255 7.643C6.038 7.512 5.833 7 6.231 7zM14 12.5c0 .21-.252.5-.444.5H6.444C6.252 13 6 12.71 6 12.5V8.853c0-.092-.002-.211.172-.11l3.417 2.015a.69.69 0 0 0 .402.1c.146 0 .252-.011.403-.1l3.434-2.014c.174-.102.172.018.172.11V12.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mail'> - <path d="M1.574 5.286l7.5 4.029c.252.135.578.199.906.199.328 0 .654-.064.906-.199l7.5-4.029c.489-.263.951-1.286.054-1.286H1.521c-.897 0-.435 1.023.053 1.286zm17.039 2.203l-7.727 4.027c-.34.178-.578.199-.906.199s-.566-.021-.906-.199-7.133-3.739-7.688-4.028C.996 7.284 1 7.523 1 7.707V15c0 .42.566 1 1 1h16c.434 0 1-.58 1-1V7.708c0-.184.004-.423-.387-.219z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-man'> - <path d="M10 4a2 2 0 1 0-.001-4.001A2 2 0 0 0 10 4zm5.978 7.583c-.385-1.775-1.058-4.688-2.042-5.894-.957-1.173-2.885-1.222-3.936-1.222-1.051 0-2.979.049-3.936 1.222-.984 1.206-1.657 4.119-2.042 5.894-.213.983 1.154 1.344 1.511.355.531-1.473.941-2.71 1.839-3.736C7.844 11.109 6.102 16.168 6 19a1 1 0 0 0 1.934.358C8.391 17.771 10 13.355 10 13.355s1.609 4.416 2.066 6.003A1 1 0 0 0 14 19c-.102-2.832-1.844-7.891-1.372-10.797.898 1.026 1.308 2.263 1.839 3.736.356.988 1.724.627 1.511-.356z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-map'> - <path d="M19.447 3.718l-6-3a1 1 0 0 0-.895 0l-5.63 2.815-5.606-1.869A1 1 0 0 0 0 2.613v13.001c0 .379.214.725.553.894l6 3a1.006 1.006 0 0 0 .894 0l5.63-2.814 5.606 1.869a.999.999 0 0 0 1.316-.949V4.612a.996.996 0 0 0-.552-.894zM8 5.231l4-2v11.763l-4 2V5.231zM2 4l4 1.333v11.661l-4-2V4zm16 12.227l-4-1.334V3.231l4 2v10.996z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mask'> - <path d="M19.581 5.84a.802.802 0 0 0-.92-.73C16.919 5.388 12.835 7 10 7S3.081 5.388 1.339 5.11a.801.801 0 0 0-.92.729C.277 7.371 0 11.45 0 12.068c0 .83 3.472 2.732 6 2.732 2.452 0 2.95-2.732 4-2.732s1.548 2.732 4 2.732c2.528 0 6-1.902 6-2.732 0-.618-.277-4.697-.419-6.228zM7.66 10.72c-.353.318-1.335 1.07-2.531.835-1.196-.235-1.919-1.323-2.166-1.758a.259.259 0 0 1 .044-.317c.353-.318 1.335-1.07 2.532-.835 1.196.235 1.919 1.323 2.166 1.758a.26.26 0 0 1-.045.317zm9.377-.923c-.246.436-.969 1.523-2.166 1.758-1.196.235-2.179-.517-2.531-.835a.26.26 0 0 1-.045-.317c.246-.436.969-1.523 2.166-1.758 1.196-.235 2.179.517 2.531.835a.258.258 0 0 1 .045.317z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medal'> - <path d="M10 10c.528 0 1.026.104 1.504.256L5.427 1.141A.316.316 0 0 0 5.164 1H1.608a.147.147 0 0 0-.122.229l6.231 9.347A4.94 4.94 0 0 1 10 10zm8.392-9h-3.556a.316.316 0 0 0-.263.141L10.75 6.875l2 3 5.764-8.646A.147.147 0 0 0 18.392 1zM10 11a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm2.112 4.117a.132.132 0 0 1-.022.208.172.172 0 0 0-.049.229c.047.076.018.165-.065.199s-.125.13-.095.214-.017.165-.104.181-.149.101-.137.189-.051.158-.14.155c-.089-.003-.167.068-.174.156s-.083.144-.169.123-.178.031-.203.117-.111.124-.191.085c-.08-.039-.18-.006-.222.072s-.134.098-.205.043-.175-.044-.232.024-.151.068-.209 0-.162-.079-.232-.024-.162.035-.205-.043-.142-.111-.222-.072c-.08.039-.166 0-.191-.085s-.116-.138-.203-.117-.163-.034-.169-.123-.084-.159-.173-.157c-.089.003-.152-.067-.14-.155s-.05-.173-.137-.189-.135-.097-.104-.181-.013-.18-.095-.214-.111-.123-.065-.199a.17.17 0 0 0-.049-.229.133.133 0 0 1-.022-.208c.062-.064.062-.169 0-.234s-.052-.158.022-.208.095-.153.049-.229c-.047-.076-.018-.165.065-.199s.125-.13.095-.214.017-.165.104-.181.149-.101.137-.189.051-.158.14-.155c.089.003.167-.068.174-.156s.083-.144.169-.123.178-.031.203-.117.111-.124.191-.085c.08.039.18.006.222-.072s.134-.098.205-.043.175.044.232-.024.151-.068.209 0 .162.079.232.024.162-.035.205.043.142.111.222.072c.08-.039.166 0 .191.085s.116.138.203.117.163.034.169.123.085.159.174.156c.089-.003.152.067.14.155s.05.173.137.189.135.097.104.181.013.18.095.214.111.123.065.199c-.047.076-.025.179.049.229s.083.144.022.208-.063.171-.001.235z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medium-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.2 7.267h-.117s-.35 0-.35.35v3.966s0 .35.35.35h.117v.934h-2.8v-.934h.467v-4.34h-.047l-1.43 5.274H9.13L7.713 7.993h-.046v4.34h.466v.934H5.8v-.934h.117s.35 0 .35-.35V8.016s0-.35-.35-.35H5.8v-.933h3.096l1.086 4.041h.036l1.095-4.04H14.2v.933z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medium'> - <path d="M18.75 5S18 5 18 5.75v8.5s0 .75.75.75H19v2h-6v-2h1V5.7h-.1L10.835 17H8.137L5.1 5.7H5V15h1v2H1v-2h.25S2 15 2 14.25v-8.5S2 5 1.25 5H1V3h6.634l2.327 8.66h.077L12.386 3H19v2h-.25z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-megaphone'> - <path d="M17.223 7.03c-1.584-3.686-4.132-6.49-5.421-5.967-2.189.891 1.304 5.164-9.447 9.533-.929.379-1.164 1.888-.775 2.792.388.902 1.658 1.801 2.587 1.424.161-.066.751-.256.751-.256.663.891 1.357.363 1.604.928l1.158 2.66c.219.502.715.967 1.075.83l2.05-.779c.468-.178.579-.596.436-.924-.154-.355-.786-.459-.967-.873-.18-.412-.769-1.738-.938-2.156-.23-.568.259-1.031.97-1.104 4.894-.512 5.809 2.512 7.475 1.834 1.287-.525 1.025-4.259-.558-7.942zm-.551 5.976c-.287.115-2.213-1.402-3.443-4.267-1.231-2.863-1.076-5.48-.79-5.597.286-.115 2.165 1.717 3.395 4.58 1.231 2.863 1.124 5.167.838 5.284z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-menu'> - <path d="M16.4 9H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1zm0 4H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1zM3.6 7h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-merge'> - <path d="M17.89 17.707L16.892 20c-3.137-1.366-5.496-3.152-6.892-5.275-1.396 2.123-3.755 3.91-6.892 5.275l-.998-2.293C5.14 16.389 8.55 14.102 8.55 10V7H5.5L10 0l4.5 7h-3.05v3c0 4.102 3.41 6.389 6.44 7.707z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-message'> - <path d="M18 6v7c0 1.1-.9 2-2 2h-4v3l-4-3H4c-1.101 0-2-.9-2-2V6c0-1.1.899-2 2-2h12c1.1 0 2 .9 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mic'> - <path d="M16.399 7.643V10.4c0 2.236-1.643 4.629-5.399 4.959V18h2.6c.22 0 .4.18.4.4v1.2c0 .221-.181.4-.4.4H6.4c-.22 0-.4-.18-.4-.4v-1.2c0-.22.18-.4.399-.4H9v-2.641c-3.758-.33-5.4-2.723-5.4-4.959V7.643a.4.4 0 0 1 .4-.4h.6c.22 0 .4.18.4.4V10.4c0 1.336 1.053 3.6 5 3.6 3.946 0 5-2.264 5-3.6V7.643a.4.4 0 0 1 .399-.4H16a.399.399 0 0 1 .399.4zM10 12c2.346 0 3-.965 3-1.6V7.242H7V10.4c0 .635.652 1.6 3 1.6zm3-10.4c0-.637-.654-1.6-3-1.6-2.348 0-3 .963-3 1.6v4.242h6V1.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-minus'> - <path d="M16 10c0 .553-.048 1-.601 1H4.601C4.049 11 4 10.553 4 10c0-.553.049-1 .601-1H15.4c.552 0 .6.447.6 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mixi'> - <path d="M9.546 17.258h.955v2.143c6.51-.684 9.982-7.143 9.421-11.691C19.358 3.16 14.471.018 8.978.69 3.486 1.364-.49 5.598.072 10.149c.513 4.138 4.602 7.113 9.474 7.109zm6.148-4.398h-1.831V7.907a2.78 2.78 0 0 0-.053-.557.926.926 0 0 0-.164-.381.808.808 0 0 0-.33-.244c-.152-.066-.363-.1-.623-.1-.537 0-.957.141-1.251.416-.291.273-.433.633-.433 1.1v4.719h-1.83V7.907c0-.205-.019-.395-.059-.564a1.006 1.006 0 0 0-.173-.387.757.757 0 0 0-.314-.237 1.5 1.5 0 0 0-.58-.094c-.312 0-.58.059-.795.174-.223.117-.405.26-.541.422a1.627 1.627 0 0 0-.299.506c-.062.172-.092.31-.092.414v4.719H4.494V5.164h1.758v.6c.574-.508 1.306-.766 2.181-.766.51 0 .981.103 1.399.305.306.147.554.365.738.652.231-.248.504-.451.814-.609a3.271 3.271 0 0 1 1.499-.348c.402 0 .773.043 1.102.127.343.086.644.225.895.412.258.193.46.445.602.75.141.301.212.66.212 1.07v5.503z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mobile'> - <path d="M14.004 0H5.996A1.996 1.996 0 0 0 4 1.996v16.007C4 19.106 4.894 20 5.996 20h8.007A1.997 1.997 0 0 0 16 18.004V1.996A1.996 1.996 0 0 0 14.004 0zM10 19c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1 1.25.447 1.25 1-.56 1-1.25 1zm4-3H6V2h8v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-modern-mic'> - <path d="M1.228 10.891a.528.528 0 0 0-.159.69l1.296 2.244c.133.23.438.325.677.208L7 12.116V19h2v-7.854l4.071-1.973-2.62-4.54-9.223 6.258zm17.229-7.854a4.061 4.061 0 0 0-5.546-1.484c-.91.525-1.508 1.359-1.801 2.289l2.976 5.156c.951.212 1.973.11 2.885-.415a4.06 4.06 0 0 0 1.486-5.546z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-moon'> - <path d="M13.719 1.8A8.759 8.759 0 1 1 1.8 13.719c3.335 1.867 7.633 1.387 10.469-1.449 2.837-2.837 3.318-7.134 1.45-10.47z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mouse-pointer'> - <path d="M10.86 11.995l2.525 6.08L11.17 19l-2.525-6.05L5 16.625V1.1l10.946 10.888-5.086.006z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mouse'> - <path d="M15.402 14.402l-2.627-7.535c-.722-2.073-2.966-3.22-5.092-2.653L5.707.379a.687.687 0 0 0-.938-.296.719.719 0 0 0-.289.961l1.929 3.742C4.872 5.806 4.073 7.74 4.58 9.56l2.139 7.696c.602 2.162 3.08 3.264 5.571 2.502 2.459-.863 3.85-3.237 3.112-5.356zM8.899 8.923a1.38 1.38 0 0 1-1.745-.921c-.235-.748.168-1.548.897-1.788.73-.24 1.512.172 1.746.92s-.168 1.549-.898 1.789z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-music'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-3.205 10.519c-.185.382-.373.402-.291 0C12.715 10.48 12.572 8.248 11 8v4.75c0 .973-.448 1.82-1.639 2.203-1.156.369-2.449-.016-2.752-.846-.303-.83.377-1.84 1.518-2.256.637-.232 1.375-.292 1.873-.101V5h1c0 2.355 4.065 1.839 1.795 6.519z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-network'> - <path d="M5.274 6.915c.2 0 .394.029.576.086a15.774 15.774 0 0 1 2.283-2.1 1.954 1.954 0 0 1 .048-1.076A14.407 14.407 0 0 0 5.17 2.171a9.25 9.25 0 0 0-2.582 2.381c.519.92 1.136 1.777 1.838 2.557.256-.124.543-.194.848-.194zM3.316 8.872c0-.275.058-.537.159-.773A15.91 15.91 0 0 1 1.78 5.87a9.165 9.165 0 0 0-.98 4.131 9.16 9.16 0 0 0 1.295 4.705 15.614 15.614 0 0 1 1.62-4.652 1.947 1.947 0 0 1-.399-1.182zm6.72-6.383c.517 0 .985.201 1.336.529a15.578 15.578 0 0 1 3.215-.992A9.154 9.154 0 0 0 10 .8a9.167 9.167 0 0 0-3.236.588 15.76 15.76 0 0 1 2.277 1.375c.292-.174.631-.274.995-.274zm2.926 9.219a1.94 1.94 0 0 1 .509-.656 14.336 14.336 0 0 0-2.672-4.803 1.956 1.956 0 0 1-1.901-.211 14.343 14.343 0 0 0-1.964 1.803 1.93 1.93 0 0 1 .207 1.617 14.252 14.252 0 0 0 5.821 2.25zm2.539 2.643a15.872 15.872 0 0 1-.081 3.082 9.216 9.216 0 0 0 3.347-4.639 15.39 15.39 0 0 1-2.181.365 1.958 1.958 0 0 1-1.085 1.192zm-2.997-1.327a15.643 15.643 0 0 1-6.21-2.484 1.953 1.953 0 0 1-1.423.248 14.219 14.219 0 0 0-1.599 5.484 9.203 9.203 0 0 0 3.145 2.205 15.662 15.662 0 0 1 6.087-5.453zm3.672-9.843a14.296 14.296 0 0 0-4.193 1.068 1.946 1.946 0 0 1-.191 1.056 15.68 15.68 0 0 1 2.969 5.291 1.961 1.961 0 0 1 1.77 1.195c.886-.09 1.748-.26 2.578-.504a9.178 9.178 0 0 0-2.933-8.106zm-2.687 10.888a14.291 14.291 0 0 0-5.723 4.856A9.187 9.187 0 0 0 10 19.2a9.165 9.165 0 0 0 3.882-.859c.19-.928.29-1.887.29-2.869 0-.355-.016-.707-.043-1.055a1.923 1.923 0 0 1-.64-.348z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-new-message'> - <path d="M18.174 1.826c-1.102-1.102-2.082-.777-2.082-.777L7.453 9.681 6 14l4.317-1.454 8.634-8.638s.324-.98-.777-2.082zm-7.569 9.779l-.471.47-1.473.5a2.216 2.216 0 0 0-.498-.74 2.226 2.226 0 0 0-.74-.498l.5-1.473.471-.47s.776-.089 1.537.673c.762.761.674 1.538.674 1.538zM16 17H3V4h5l2-2H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2v-7l-2 2v5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-new'> - <path d="M18.69 12.344l-1.727-1.538c-.5-.445-.5-1.174 0-1.619l1.727-1.539c.5-.445.367-.859-.296-.924l-2.29-.217c-.662-.062-1.02-.633-.791-1.266l1.215-3.383c.228-.635-.051-.865-.619-.514l-2.701 1.67a1.158 1.158 0 0 1-1.631-.426L10.599.842C10.27.254 9.727.252 9.392.834l-.909 1.58c-.337.585-1.108.833-1.713.556l-1.6-.734c-.608-.28-1.073.042-1.037.716l.086 1.615c.037.674-.461 1.367-1.104 1.541l-1.545.414c-.642.174-.76.68-.26 1.125l1.727 1.539c.5.445.5 1.174 0 1.619L1.31 12.344c-.5.445-.368.877.293.957l2.095.254c.661.08 1.029.67.818 1.311l-1.074 3.258c-.211.641.09.889.668.555l2.463-1.426a1.321 1.321 0 0 1 1.729.408L9.324 19.2c.372.559.931.529 1.24-.068l.899-1.733a1.243 1.243 0 0 1 1.648-.543l1.734.867c.598.297 1.057-.01 1.021-.682l-.087-1.617c-.035-.674.461-1.365 1.106-1.539l1.543-.416c.644-.174.762-.68.262-1.125zM11 14H9v-2h2v2zm0-3H9V6h2v5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-news'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M14 5h-4v2h4V5zm0 3h-4v1h4V8zM9 5H6v4h3V5zm0 6h5v-1H9v1zm3 2h2v-1h-2v1zm2 1H6v1h8v-1zm-3-2H6v1h5v-1zm-3-2H6v1h2v-1zm9-9H3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H4V3h12v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-newsletter'> - <path d="M18 3H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM4 10h6v1H4v-1zm8 4H4v-1h8v1zm5-6h-3V5h3v3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-note'> - <path d="M14.971 9.438c-.422.656-.646.375-.52 0 .336-.993.348-4.528-2.451-4.969L11.998 16c0 1.657-1.735 4-4.998 4-1.657 0-3-.871-3-2.5 0-2.119 1.927-3.4 4-3.4 1.328 0 2 .4 2 .4V0h2c0 2.676 5.986 4.744 2.971 9.438z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-notification'> - <path d="M15 8.38V17H3V5h8.62c-.073-.322-.12-.655-.12-1s.047-.678.12-1H3c-1.102 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8.38c-.322.073-.655.12-1 .12s-.678-.047-1-.12zM16 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-notifications-off'> - <path d="M18.8 17.4c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L1.2 2.6c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0l16.2 16.2zM16 7c1.7 0 3-1.3 3-3s-1.3-3-3-3-3 1.3-3 3 1.3 3 3 3zm-1 1.4v3.8l2 2V8.4c-.3.1-.7.1-1 .1s-.7 0-1-.1zM11.6 5c-.1-.3-.1-.7-.1-1 0-.3 0-.7.1-1H5.8l2 2h3.8zM5 15V7.8l-2-2V15c0 1.1.9 2 2 2h9.2l-2-2H5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-old-mobile'> - <path d="M13.6 3H7V0H5v18.6c0 .77.629 1.4 1.398 1.4H13.6c.769 0 1.4-.631 1.4-1.4V4.401C15 3.629 14.369 3 13.6 3zM8 15c-.691 0-1.25-.447-1.25-1s.559-1 1.25-1 1.25.447 1.25 1-.559 1-1.25 1zm1.25 2c0 .553-.559 1-1.25 1s-1.25-.447-1.25-1 .559-1 1.25-1 1.25.447 1.25 1zM7 11V5h6v6H7zm5 4c-.691 0-1.25-.447-1.25-1s.559-1 1.25-1 1.25.447 1.25 1-.559 1-1.25 1zm1.25 2c0 .553-.559 1-1.25 1s-1.25-.447-1.25-1 .559-1 1.25-1 1.25.447 1.25 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-old-phone'> - <path d="M17.256 12.253c-.096-.667-.611-1.187-1.274-1.342-2.577-.604-3.223-2.088-3.332-3.734C12.193 7.092 11.38 7 10 7s-2.193.092-2.65.177c-.109 1.646-.755 3.13-3.332 3.734-.663.156-1.178.675-1.274 1.342l-.497 3.442C2.072 16.907 2.962 18 4.2 18h11.6c1.237 0 2.128-1.093 1.953-2.305l-.497-3.442zM10 15.492c-1.395 0-2.526-1.12-2.526-2.5s1.131-2.5 2.526-2.5 2.526 1.12 2.526 2.5-1.132 2.5-2.526 2.5zM19.95 6c-.024-1.5-3.842-3.999-9.95-4C3.891 2.001.073 4.5.05 6s.021 3.452 2.535 3.127c2.941-.381 2.76-1.408 2.76-2.876C5.345 5.227 7.737 4.98 10 4.98s4.654.247 4.655 1.271c0 1.468-.181 2.495 2.76 2.876C19.928 9.452 19.973 7.5 19.95 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-onedrive'> - <path d="M6.429 9.847a4.47 4.47 0 0 1 7.573-2.012 4.186 4.186 0 0 1 1.136-.21v-.13c0-2.482-1.845-4.495-4.12-4.495-1.626 0-3.02 1.038-3.69 2.531a3.01 3.01 0 0 0-1.694-.535c-1.785 0-3.231 1.577-3.231 3.523 0 .21.024.414.057.613-1.377.136-2.455 1.544-2.455 3.08 0 .016.004.029.004.045-.001.014-.009.028-.009.042 0 .615.214 1.177.561 1.631A2.638 2.638 0 0 0 2.701 15h1.261a3.574 3.574 0 0 1-.398-1.615 3.62 3.62 0 0 1 2.865-3.538zm11.46 1.93c-.025 0-.05.007-.075.008.007-.074.022-.146.022-.222a2.664 2.664 0 0 0-2.665-2.664 2.64 2.64 0 0 0-1.564.516 3.22 3.22 0 0 0-2.838-1.712 3.237 3.237 0 0 0-3.237 3.237c0 .023.006.043.007.066a2.36 2.36 0 0 0-.359-.036 2.414 2.414 0 0 0-2.366 2.902A2.612 2.612 0 0 0 7.38 16h10.706v-.019a2.106 2.106 0 0 0-.197-4.204z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-open-book'> - <path d="M10.595 5.196l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.25 5.25 0 0 0-1.459.741zm.927 2.855l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.21 5.21 0 0 0-1.459.741zm.928 2.854l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.21 5.21 0 0 0-1.459.741zm-7.062 2.172l.43 1.323a8.745 8.745 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203l-.446-1.371a5.25 5.25 0 0 0-1.615.257 9.406 9.406 0 0 0-1.494.63zM3.533 7.368l.43 1.323a8.825 8.825 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203L6.643 6.48a5.263 5.263 0 0 0-1.616.258 9.406 9.406 0 0 0-1.494.63zm.927 2.855l.43 1.323a8.745 8.745 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203L7.57 9.335a5.25 5.25 0 0 0-1.615.257 9.417 9.417 0 0 0-1.495.631zm6.604-8.813a5.26 5.26 0 0 0-3.053 2.559 5.257 5.257 0 0 0-3.973-.275C1.515 4.514.069 6.321.069 6.321l4.095 12.587c.126.387.646.477.878.143.499-.719 1.46-1.658 3.257-2.242 1.718-.558 2.969.054 3.655.578.272.208.662.06.762-.268.252-.827.907-2.04 2.61-2.593 1.799-.585 3.129-.389 3.956-.1.385.134.75-.242.625-.629L15.819 1.203s-2.232-.612-4.755.207zm-.113 13.846a5.208 5.208 0 0 0-3.141.044c-1.251.406-2.127.949-2.699 1.404L1.866 6.722c.358-.358 1.187-1.042 2.662-1.521 1.389-.451 2.528-.065 3.279.378l3.144 9.677zm6.894-2.689c-.731-.032-1.759.044-3.01.451a5.205 5.205 0 0 0-2.567 1.81L9.124 5.151c.346-.8 1.04-1.782 2.43-2.233 1.474-.479 2.547-.413 3.047-.334l3.244 9.983z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-palette'> - <path d="M15.74 2.608c-3.528-1.186-7.066-.961-10.72 1.274C2.167 5.625.302 9.958.917 13.064c.728 3.671 4.351 5.995 9.243 4.651 5.275-1.449 6.549-4.546 6.379-5.334-.17-.788-2.665-1.652-1.718-3.498 1.188-2.313 3.129-1.149 3.982-1.622.855-.472.539-3.442-3.063-4.653zm-3.646 10.706a1.504 1.504 0 0 1-1.843-1.059 1.5 1.5 0 0 1 1.046-1.849 1.503 1.503 0 0 1 1.843 1.059 1.501 1.501 0 0 1-1.046 1.849z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-paper-plane'> - <path d="M18.64 2.634L.984 8.856c-.284.1-.347.345-.01.479l3.796 1.521 2.25.901 10.984-8.066c.148-.108.318.095.211.211l-7.871 8.513v.002l-.452.503.599.322 4.982 2.682c.291.156.668.027.752-.334l2.906-12.525c.079-.343-.148-.552-.491-.431zM7 17.162c0 .246.139.315.331.141.251-.229 2.85-2.561 2.85-2.561L7 13.098v4.064z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-paypal'> - <path d="M7.914 10.677h1.659c3.604 0 5.649-1.623 6.3-4.96.021-.11.04-.216.056-.322.036-.226.054-.429.062-.624.006-.134.01-.213.009-.287a2.643 2.643 0 0 0-.216-1.039c-.129-.296-.324-.587-.613-.918C14.318 1.557 12.832 1 11.057 1H5.404a.81.81 0 0 0-.799.683l-1.02 6.571-1.269 8.185a.486.486 0 0 0 .48.561h2.772l.849-5.043a1.51 1.51 0 0 1 1.497-1.28zm9.103-4.587c-.792 3.771-3.357 5.772-7.445 5.772H7.914a.331.331 0 0 0-.328.282L6.481 19h2.907a.707.707 0 0 0 .699-.597l.029-.15.555-3.514.036-.194a.707.707 0 0 1 .699-.597h.44c2.85 0 5.081-1.158 5.733-4.506.268-1.38.132-2.534-.562-3.352z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pencil'> - <path d="M14.69 2.661c-1.894-1.379-3.242-1.349-3.754-1.266a.538.538 0 0 0-.35.223l-4.62 6.374-2.263 3.123a2.447 2.447 0 0 0-.462 1.307l-.296 5.624a.56.56 0 0 0 .76.553l5.256-2.01c.443-.17.828-.465 1.106-.849l1.844-2.545 5.036-6.949a.56.56 0 0 0 .1-.423c-.084-.526-.487-1.802-2.357-3.162zM8.977 15.465l-2.043.789a.19.19 0 0 1-.221-.062 5.145 5.145 0 0 0-1.075-1.03 5.217 5.217 0 0 0-1.31-.706.192.192 0 0 1-.126-.192l.122-2.186.549-.755s1.229-.169 2.833.998c1.602 1.166 1.821 2.388 1.821 2.388l-.55.756z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-phone'> - <path d="M11.229 11.229c-1.583 1.582-3.417 3.096-4.142 2.371-1.037-1.037-1.677-1.941-3.965-.102-2.287 1.838-.53 3.064.475 4.068 1.16 1.16 5.484.062 9.758-4.211 4.273-4.274 5.368-8.598 4.207-9.758-1.005-1.006-2.225-2.762-4.063-.475-1.839 2.287-.936 2.927.103 3.965.722.725-.791 2.559-2.373 4.142z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-picasa'> - <path d="M5.808 1.823A9.175 9.175 0 0 0 .8 10.021c0 .633.08 1.275.221 1.918L8.97 4.7 5.808 1.823zm7.985-.197A9.117 9.117 0 0 0 9.999.8c-.934 0-1.855.156-2.749.441l6.543 5.951V1.626zm1.399.812v10.617h3.485a9.192 9.192 0 0 0 .522-3.035c.001-3.033-1.522-5.872-4.007-7.582zM1.463 13.429a9.227 9.227 0 0 0 3.368 4.184v-7.25l-2.045 1.861c-.698.634-1.28 1.166-1.323 1.205zm4.767 4.996a9.105 9.105 0 0 0 2.92.775h1.689c3.019-.281 5.727-2.068 7.199-4.744H6.23v3.969z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pie-chart'> - <path d="M11 .958v9.039C11 10.551 10.551 11 9.997 11H.958A9.1 9.1 0 1 0 11 .958zm-2 0A9.098 9.098 0 0 0 .958 9H9V.958z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pin'> - <path d="M4.774 15.287l-2.105 3.25.224 1.063 1.06-.227 2.104-3.248a8.352 8.352 0 0 1-1.283-.838zm8.912-1.135c.014-.029.023-.061.036-.092.053-.117.1-.234.138-.357.006-.022.009-.044.016-.064a4.48 4.48 0 0 0 .098-.408v-.021c.195-1.169-.145-2.473-.923-3.651l1.11-1.714c1.279.163 2.385-.159 2.917-.982.923-1.423-.2-3.792-2.505-5.293C12.266.068 9.65.005 8.729 1.426c-.534.824-.378 1.967.293 3.073L7.91 6.213c-1.389-.233-2.716-.016-3.703.64-.006.002-.013.004-.017.008a3.735 3.735 0 0 0-.332.254c-.017.014-.037.027-.051.041a3.024 3.024 0 0 0-.271.272c-.02.024-.048.045-.067.07a3.102 3.102 0 0 0-.29.385c-1.384 2.133-.203 5.361 2.633 7.209 2.838 1.848 6.26 1.614 7.641-.519.087-.135.167-.276.233-.421zm-.815-9.958c-.887-.577-1.32-1.487-.965-2.036.354-.547 1.361-.522 2.246.055.889.577 1.318 1.489.965 2.036-.353.547-1.358.522-2.246-.055z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pinterest-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm.657 11.875c-.616-.047-.874-.352-1.356-.644-.265 1.391-.589 2.725-1.549 3.422-.297-2.104.434-3.682.774-5.359-.579-.975.069-2.936 1.291-2.454 1.503.596-1.302 3.625.581 4.004 1.966.394 2.769-3.412 1.55-4.648-1.762-1.787-5.127-.041-4.713 2.517.1.625.747.815.258 1.678-1.127-.25-1.464-1.139-1.42-2.324.069-1.94 1.743-3.299 3.421-3.486 2.123-.236 4.115.779 4.391 2.777.309 2.254-.959 4.693-3.228 4.517z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pinterest'> - <path d="M8.617 13.227C8.091 15.981 7.45 18.621 5.549 20c-.586-4.162.861-7.287 1.534-10.605-1.147-1.93.138-5.812 2.555-4.855 2.975 1.176-2.576 7.172 1.15 7.922 3.891.781 5.479-6.75 3.066-9.199C10.369-.275 3.708 3.18 4.528 8.245c.199 1.238 1.478 1.613.511 3.322-2.231-.494-2.897-2.254-2.811-4.6.138-3.84 3.449-6.527 6.771-6.9 4.201-.471 8.144 1.543 8.689 5.494.613 4.461-1.896 9.293-6.389 8.945-1.218-.095-1.728-.699-2.682-1.279z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-plus'> - <path d="M16 10c0 .553-.048 1-.601 1H11v4.399c0 .552-.447.601-1 .601-.553 0-1-.049-1-.601V11H4.601C4.049 11 4 10.553 4 10c0-.553.049-1 .601-1H9V4.601C9 4.048 9.447 4 10 4c.553 0 1 .048 1 .601V9h4.399c.553 0 .601.447.601 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-popup'> - <path d="M16 2H7.979C6.88 2 6 2.88 6 3.98V12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 10H8V4h8v8zM4 10H2v6c0 1.1.9 2 2 2h6v-2H4v-6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-power-plug'> - <path d="M0 14v1.498c0 .277.225.502.502.502h.997A.502.502 0 0 0 2 15.498V14c0-.959.801-2.273 2-2.779V9.116C1.684 9.652 0 11.97 0 14zm12.065-9.299l-2.53 1.898c-.347.26-.769.401-1.203.401H6.005C5.45 7 5 7.45 5 8.005v3.991C5 12.55 5.45 13 6.005 13h2.327c.434 0 .856.141 1.203.401l2.531 1.898a3.502 3.502 0 0 0 2.102.701H16V4h-1.832c-.758 0-1.496.246-2.103.701zM17 6v2h3V6h-3zm0 8h3v-2h-3v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-price-ribbon'> - <path d="M12.825 10.653c.118-.258.445-.497.727-.529s.539-.29.571-.572c.034-.28.272-.608.529-.727a.69.69 0 0 0 .369-.72c-.058-.278.068-.663.276-.854a.689.689 0 0 0 .127-.801 1.017 1.017 0 0 1 0-.897.688.688 0 0 0-.127-.801c-.208-.193-.333-.577-.276-.854a.691.691 0 0 0-.369-.722 1.03 1.03 0 0 1-.529-.727.689.689 0 0 0-.571-.572 1.024 1.024 0 0 1-.727-.528.686.686 0 0 0-.722-.366 1.024 1.024 0 0 1-.854-.278c-.193-.21-.553-.266-.8-.127s-.652.139-.898 0a.684.684 0 0 0-.801.125 1.022 1.022 0 0 1-.854.278.685.685 0 0 0-.72.367c-.119.256-.446.495-.728.527a.69.69 0 0 0-.572.573 1.023 1.023 0 0 1-.529.726.69.69 0 0 0-.366.722c.055.277-.07.662-.278.854s-.266.552-.127.801c.139.246.139.651 0 .897a.69.69 0 0 0 .127.802c.209.19.333.575.278.854a.687.687 0 0 0 .366.72c.258.119.495.447.528.727.034.282.29.54.572.572s.609.272.728.529a.688.688 0 0 0 .72.366c.278-.055.663.069.854.278a.69.69 0 0 0 .801.127c.246-.139.651-.139.898 0s.607.081.8-.127c.193-.21.576-.333.854-.278a.69.69 0 0 0 .723-.365zM10 9.399a3.4 3.4 0 1 1 0-6.8 3.4 3.4 0 0 1 0 6.8zm-4.025 2.01l-1.243 7.049 3.128-.464 2.781 1.506 1.238-7.021a6.707 6.707 0 0 1-5.904-1.07zm7.986.048a6.741 6.741 0 0 1-.99.597l-.748 4.236 3.369-1.828-1.631-3.005z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-price-tag'> - <path d="M19.388.405a.605.605 0 0 0-1.141.399c.929 2.67-.915 4.664-2.321 5.732l-.568-.814c-.191-.273-.618-.5-.95-.504l-3.188.014a2.162 2.162 0 0 0-1.097.338L.729 12.157a1.01 1.01 0 0 0-.247 1.404l4.269 6.108c.32.455.831.4 1.287.082l9.394-6.588c.27-.191.582-.603.692-.918l.998-3.145c.11-.314.043-.793-.148-1.066l-.346-.496c1.888-1.447 3.848-4.004 2.76-7.133zm-4.371 9.358a1.608 1.608 0 0 1-2.24-.396 1.614 1.614 0 0 1 .395-2.246 1.607 1.607 0 0 1 1.868.017c-.272.164-.459.26-.494.275a.606.606 0 0 0 .259 1.153c.086 0 .174-.02.257-.059.194-.092.402-.201.619-.33a1.615 1.615 0 0 1-.664 1.586z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-print'> - <path d="M1.501 6h17c.57 0 .477-.608.193-.707C18.409 5.194 15.251 4 14.7 4H14V1H6v3h-.699c-.55 0-3.709 1.194-3.993 1.293-.284.099-.377.707.193.707zM19 7H1c-.55 0-1 .45-1 1v5c0 .551.45 1 1 1h2.283l-.882 5H17.6l-.883-5H19c.551 0 1-.449 1-1V8c0-.55-.449-1-1-1zM4.603 17l1.198-7.003H14.2L15.399 17H4.603z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-empty'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-full'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8zm5 0H8v4h4V8zm5 0h-4v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-one'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-two'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8zm5 0H8v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-publish'> - <path d="M9.967 8.193L5 13h3v6h4v-6h3L9.967 8.193zM18 1H2C.9 1 0 1.9 0 3v12c0 1.1.9 2 2 2h4v-2H2V6h16v9h-4v2h4c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zM2.5 4.25a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zm2 0a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM18 4H6V3h12.019L18 4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-qq-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.008 11.92c-.184.096-.47-.122-.737-.52-.105.435-.369.828-.743 1.144.394.144.65.38.65.65 0 .442-.695.799-1.553.799-.773 0-1.415-.291-1.533-.672h-.184c-.12.38-.76.672-1.533.672-.857 0-1.552-.357-1.552-.8 0-.268.256-.505.65-.65-.375-.315-.638-.708-.745-1.143-.267.398-.553.616-.735.52-.265-.136-.213-.88.117-1.654.26-.61.612-1.06.879-1.158a1.18 1.18 0 0 1 .172-.748l-.002-.041c0-.11.026-.21.07-.298.068-1.586 1.1-2.845 2.771-2.845 1.67 0 2.703 1.259 2.771 2.845.044.088.07.188.07.298 0 .012 0 .027-.003.041a1.169 1.169 0 0 1 .173.748c.267.098.62.547.878 1.158.331.775.383 1.518.119 1.655z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-qq'> - <path d="M17.005 13.018c-.779-.547-1.751-.51-2.304.277-.553.785-4.418 5.633-10.751 3.619.239.209.49.406.755.592 4.153 2.926 9.892 1.928 12.816-2.225.555-.787.263-1.714-.516-2.263zm-12.22-.617c-.404-.871-2.669-6.643 2.24-11.121a9.2 9.2 0 0 0-5.371 12.57c.403.871 1.353 1.084 2.218.684.864-.401 1.316-1.262.913-2.133zM10.826.823c-.956-.086-1.614.629-1.7 1.578-.085.949.435 1.771 1.391 1.857.956.086 7.087 1.01 8.51 7.502.062-.311.106-.627.136-.949.455-5.061-3.277-9.533-8.337-9.988zM6.891 10.53c-.264.619-.306 1.213-.094 1.322.146.076.374-.098.588-.416.085.347.295.662.595.914-.314.115-.52.305-.52.519 0 .354.556.639 1.241.639.618 0 1.13-.232 1.225-.537h.147c.095.305.607.537 1.226.537.686 0 1.241-.285 1.241-.639 0-.215-.205-.404-.52-.519.299-.252.51-.566.594-.914.214.318.442.492.589.416.211-.109.17-.703-.095-1.322-.207-.488-.488-.848-.702-.926.004-.031.004-.063.004-.094a.933.933 0 0 0-.142-.504c.002-.012.002-.023.002-.033a.528.528 0 0 0-.056-.238C12.16 7.467 11.335 6.461 10 6.461c-1.336 0-2.161 1.006-2.215 2.273a.529.529 0 0 0-.057.238l.002.033a.958.958 0 0 0-.137.599c-.213.078-.495.437-.702.926z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-quote'> - <path d="M5.315 3.401c-1.61 0-2.916 1.343-2.916 3 0 1.656 1.306 3 2.916 3 2.915 0 .972 5.799-2.916 5.799v1.4c6.939.001 9.658-13.199 2.916-13.199zm8.4 0c-1.609 0-2.915 1.343-2.915 3 0 1.656 1.306 3 2.915 3 2.916 0 .973 5.799-2.915 5.799v1.4c6.938.001 9.657-13.199 2.915-13.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-radio'> - <path d="M17 8H5.021l8.974-5.265L13 1 1.736 7.571A1.482 1.482 0 0 0 1 8.852V17a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zm-1.5 9a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 15.5 17zm1.5-5H3v-2h14v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-raft-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.215 13.793c-.28.267-.664.42-1.055.42-.48 0-.867-.18-1.153-.532-.198-.244-.308-.496-.466-.936l-.078-.219c-.183-.498-.344-.75-.577-.879-.07.271-.149.525-.234.756-.445 1.216-1.077 1.832-1.88 1.832-.45 0-.848-.185-1.12-.522-.331-.413-.438-.996-.299-1.642l.03-.14 1.016.223-.03.138c-.072.332-.043.6.082.755a.393.393 0 0 0 .322.143c.4 0 .795-.639 1.094-1.76a2.932 2.932 0 0 1-.896-.49l-.11-.088.648-.818.11.089c.142.113.3.206.471.276.087-.498.156-1.046.207-1.63l.013-.142 1.035.091-.012.141a20.837 20.837 0 0 1-.212 1.683 2.28 2.28 0 0 0 1.727-1.087c.593-.999.357-2.25-.56-2.974-.393-.31-.97-.486-1.507-.459-.672.028-1.238.33-1.682.91-.536.695-.592 1.738-.135 2.478l.075.12-.883.553-.075-.12c-.689-1.116-.609-2.627.196-3.672.631-.822 1.482-1.273 2.46-1.314.8-.031 1.603.217 2.192.68a3.315 3.315 0 0 1 .811 4.334 3.276 3.276 0 0 1-1.669 1.393c.13.198.24.434.367.78l.081.226c.256.714.373.778.641.778a.512.512 0 0 0 .338-.132c.161-.154.208-.45.141-.882l-.022-.14 1.027-.162.022.14c.122.78-.035 1.402-.451 1.801z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-raft'> - <path d="M5.673 19c-.877 0-1.65-.36-2.176-1.014-.645-.803-.851-1.936-.581-3.19l.058-.27 1.973.43-.058.27c-.14.645-.083 1.165.158 1.465.148.184.36.278.626.278.776 0 1.545-1.24 2.126-3.418a5.699 5.699 0 0 1-1.74-.952l-.214-.171 1.258-1.59.215.173c.274.22.58.4.914.537.169-.969.304-2.032.403-3.169l.024-.274 2.011.177-.024.275a40.469 40.469 0 0 1-.41 3.268c1.387-.14 2.65-.927 3.354-2.111 1.152-1.941.694-4.37-1.09-5.778-.761-.602-1.88-.943-2.926-.891-1.304.054-2.404.642-3.268 1.766-1.04 1.351-1.15 3.377-.26 4.816l.144.234-1.715 1.073-.145-.235c-1.339-2.167-1.183-5.101.38-7.132C5.935 1.97 7.588 1.095 9.49 1.015c1.552-.06 3.114.42 4.257 1.322 2.594 2.047 3.257 5.587 1.577 8.418a6.365 6.365 0 0 1-3.243 2.707c.252.384.466.843.712 1.514l.158.44c.497 1.387.724 1.51 1.245 1.51.236 0 .494-.1.657-.256.313-.3.405-.875.274-1.712l-.043-.273 1.995-.315.043.273c.236 1.513-.068 2.723-.877 3.499a2.989 2.989 0 0 1-2.049.815c-.93 0-1.684-.348-2.24-1.033-.384-.474-.598-.964-.904-1.818l-.153-.426c-.355-.968-.668-1.457-1.12-1.707a16.26 16.26 0 0 1-.454 1.468C8.46 17.803 7.232 19 5.673 19z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rainbow'> - <path d="M10 5C4.477 5 0 9.477 0 15h1.5a8.5 8.5 0 0 1 17 0H20c0-5.523-4.477-10-10-10zm0 6a4 4 0 0 0-4 4h1.5a2.5 2.5 0 1 1 5 0H14a4 4 0 0 0-4-4zm0-3a7 7 0 0 0-7 7h1.5a5.5 5.5 0 1 1 11 0H17a7 7 0 0 0-7-7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rdio-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.403 9.082c.022.17.034.342.034.518 0 2.176-1.742 3.941-3.892 3.941-2.148 0-3.891-1.766-3.891-3.941 0-2.178 1.742-3.942 3.891-3.942.309 0 .608.039.896.107V8.41c-.454-.166-1.015-.142-1.541.111-.952.461-1.435 1.494-1.079 2.311.357.816 1.418 1.106 2.371.645.656-.316 1.234-1.078 1.234-2.035V6.549c.082.045.162.096.24.146.739.465 1.838 1.086 3.121 1.152.501.026-.197 1.284-1.384 1.635z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rdio'> - <path d="M16.203 10.001c0 4.307-3.448 7.799-7.701 7.799S.8 14.308.8 10.001C.8 5.692 4.248 2.2 8.501 2.2c.611 0 1.204.076 1.774.213v4.441c-.902-.33-2.01-.281-3.053.223-1.885.91-2.841 2.957-2.135 4.57.705 1.615 2.807 2.188 4.691 1.277 1.299-.627 2.443-2.137 2.443-4.029V3.171c.162.09.32.188.475.289 1.464.92 3.638 2.152 6.178 2.281.99.049-.389 2.541-2.738 3.236.044.334.067.676.067 1.024z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-remove-user'> - <path d="M15.989 19.129c0-2.246-2.187-3.389-4.317-4.307-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.011-.234-.011-.871zm.011-9.09l-2.299-2.398-1.061 1.061L15.039 11l-2.398 2.298 1.061 1.061L16 11.961l2.298 2.398 1.061-1.061L16.961 11l2.397-2.298-1.061-1.061L16 10.039z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-renren'> - <path d="M8.468.865C4.117 1.594.8 5.377.8 9.936c0 2.266.82 4.338 2.179 5.941 3.221-1.559 5.472-5.086 5.489-9.191V.865zm1.534 11.393c-.573 2.373-2.285 4.4-4.418 5.748A9.154 9.154 0 0 0 10 19.135c1.602 0 3.108-.41 4.418-1.129-2.133-1.348-3.844-3.375-4.416-5.748zm1.533-5.615c0 4.123 2.256 7.668 5.487 9.234A9.16 9.16 0 0 0 19.2 9.936c0-4.559-3.315-8.34-7.665-9.07v5.777z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-reply-all'> - <path d="M7.225 5.767V3.086L0 9.542l7.225 6.691v-2.777L3 9.542l4.225-3.775zm5 1.186V3.086L5 9.542l7.225 6.691v-4.357c3.292 0 5.291.422 7.775 4.81 0-.001-.368-9.733-7.775-9.733z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-reply'> - <path d="M19 16.685S16.775 6.953 8 6.953V2.969L1 9.542l7 6.69v-4.357c4.763-.001 8.516.421 11 4.81z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-resize-100%'> - <path d="M4.1 14.1L1 17l2 2 2.9-3.1L8 18v-6H2l2.1 2.1zM19 3l-2-2-2.9 3.1L12 2v6h6l-2.1-2.1L19 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-resize-full-screen'> - <path d="M6.987 10.987l-2.931 3.031L2 11.589V18h6.387l-2.43-2.081 3.03-2.932-2-2zM11.613 2l2.43 2.081-3.03 2.932 2 2 2.931-3.031L18 8.411V2h-6.387z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-retweet'> - <path d="M5 13V8h2L3.5 4 0 8h2v6a2 2 0 0 0 2 2h9.482l-2.638-3H5zm4.156-6L6.518 4H16c1.104 0 2 .897 2 2v6h2l-3.5 4-3.5-4h2V7H9.156z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rocket'> - <path d="M11.933 13.069s7.059-5.094 6.276-10.924a.465.465 0 0 0-.112-.268.436.436 0 0 0-.263-.115C12.137.961 7.16 8.184 7.16 8.184c-4.318-.517-4.004.344-5.974 5.076-.377.902.234 1.213.904.959l2.148-.811 2.59 2.648-.793 2.199c-.248.686.055 1.311.938.926 4.624-2.016 5.466-1.694 4.96-6.112zm1.009-5.916a1.594 1.594 0 0 1 0-2.217 1.509 1.509 0 0 1 2.166 0 1.594 1.594 0 0 1 0 2.217 1.509 1.509 0 0 1-2.166 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-round-brush'> - <path d="M12.135 9.304c-2.558-1.879-6.7 1.17-7.632 5.284-.718 3.17-4.043 3.04-3.996 3.464.046.424 7.473 1.103 10.156-1.123 2.506-2.08 4.277-5.564 1.472-7.625zm2.203-7.796l-3.363 5.156c1.102.179 3.635 1.885 4.121 3.109l4.396-4.246c-.526-1.503-3.438-3.844-5.154-4.019z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rss'> - <path d="M2.4 2.4v2.367c7.086 0 12.83 5.746 12.83 12.832h2.369C17.599 9.205 10.794 2.4 2.4 2.4zm0 4.737v2.369a8.093 8.093 0 0 1 8.093 8.094h2.368c0-5.778-4.684-10.463-10.461-10.463zm2.269 5.922a2.271 2.271 0 0 0 0 4.541c1.254 0 2.269-1.016 2.269-2.27s-1.015-2.271-2.269-2.271z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ruler'> - <path d="M14.249.438L.438 14.251a1.505 1.505 0 0 0 .002 2.124l3.185 3.187a1.506 1.506 0 0 0 2.124.002L19.562 5.751a1.508 1.508 0 0 0 0-2.125L16.376.438a1.51 1.51 0 0 0-2.127 0zM3.929 15.312l-.759.759-1.896-1.897.759-.759 1.896 1.897zm3.036 0l-.759.759-3.415-3.415.759-.76 3.415 3.416zm0-3.036l-.759.759-1.898-1.896.76-.76 1.897 1.897zm1.518-1.518l-.759.759-1.896-1.896.759-.76 1.896 1.897zm3.035 0l-.759.759-3.414-3.414.759-.759 3.414 3.414zm0-3.035l-.759.759-1.896-1.896.759-.759 1.896 1.896zm1.518-1.517l-.759.759-1.897-1.897.759-.759 1.897 1.897zm3.036 0l-.76.759-3.414-3.415.759-.76 3.415 3.416zm-.001-3.035l-.759.759-1.896-1.898.759-.758 1.896 1.897z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-save'> - <path d="M15.173 2H4c-1.101 0-2 .9-2 2v12c0 1.1.899 2 2 2h12c1.101 0 2-.9 2-2V5.127L15.173 2zM14 8c0 .549-.45 1-1 1H7c-.55 0-1-.451-1-1V3h8v5zm-1-4h-2v4h2V4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-scissors'> - <path d="M8.38 5.59a3.69 3.69 0 1 0-3.69 3.69 3.67 3.67 0 0 0 2.483-.976L9 9.991l.012.009-.004.003-1.836 1.693a3.665 3.665 0 0 0-2.482-.976 3.69 3.69 0 1 0 3.69 3.69c0-.297-.044-.582-.111-.858l2.844-1.991 4.127 3.065c2.212 1.549 3.76-.663 3.76-.663L8.269 6.448c.066-.276.111-.561.111-.858zm-3.69 1.8a1.8 1.8 0 1 1 0-3.6 1.8 1.8 0 0 1 0 3.6zm0 8.82a1.8 1.8 0 1 1 0-3.6 1.8 1.8 0 0 1 0 3.6zM19 6.038s-1.548-2.212-3.76-.663L12.035 7.61l2.354 1.648L19 6.038z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-scribd'> - <path d="M4.643 18.284c0 .224-.072.492-.148.716h5.737c.328-.377.513-.831.513-1.342 0-1.385-1.644-2.154-5.241-3.842l-.506-.236C3.225 12.737 1.912 11.995 1 11.111v4.398a4.07 4.07 0 0 1 .558-.042c3.001.001 3.085 2.789 3.085 2.817zM17 1h-3.738c1.748 1.178 2.467 2.842 2.467 4.142 0 2.194-1.836 2.905-2.727 2.905l-.271.002c-2.046 0-3.09-1.247-3.104-3.707-.121-.096-.688-.453-2.347-.453-1.96 0-2.773 1.543-2.773 2.369 0 .973.543 2.055 4.484 3.382 6.736 2.254 6.736 5.255 6.736 7.903v.026c0 .437-.031.924-.117 1.431H17c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-select-arrows'> - <path d="M10 1L5 8h10l-5-7zm0 18l5-7H5l5 7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-share-alternative'> - <path d="M9 13h2V4h2l-3-4-3 4h2v9zm8-6h-3v2h2v9H4V9h2V7H3a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-share'> - <path d="M15 13.442c-.633 0-1.204.246-1.637.642l-5.938-3.463c.046-.188.075-.384.075-.584s-.029-.395-.075-.583L13.3 6.025A2.48 2.48 0 0 0 15 6.7c1.379 0 2.5-1.121 2.5-2.5S16.379 1.7 15 1.7s-2.5 1.121-2.5 2.5c0 .2.029.396.075.583L6.7 8.212A2.485 2.485 0 0 0 5 7.537c-1.379 0-2.5 1.121-2.5 2.5s1.121 2.5 2.5 2.5a2.48 2.48 0 0 0 1.7-.675l5.938 3.463a2.339 2.339 0 0 0-.067.546A2.428 2.428 0 1 0 15 13.442z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shareable'> - <path d="M6.8 10a3.2 3.2 0 1 0 6.401 0A3.2 3.2 0 0 0 6.8 10zM4.529 8.8a5.6 5.6 0 0 1 9.43-2.76 1.2 1.2 0 1 0 1.697-1.697A8.002 8.002 0 0 0 2.367 7.601H0V10h3.199c.999 0 1.245-.813 1.33-1.2zM16.8 10c-.999 0-1.245.814-1.329 1.199a5.6 5.6 0 0 1-9.43 2.759 1.2 1.2 0 0 0-1.698 1.697A7.972 7.972 0 0 0 10 18a8.005 8.005 0 0 0 7.633-5.6H20V10h-3.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shield'> - <path d="M17.604 3.332C12.99 4 12.075 2.833 10 1 7.925 2.833 7.01 4 2.396 3.332-.063 15.58 10 19 10 19s10.063-3.42 7.604-15.668zm-5.131 9.977L10 12.009l-2.472 1.3L8 10.556l-2-1.95 2.764-.401L10 5.7l1.236 2.505L14 8.606l-2 1.949.473 2.754z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shop'> - <path d="M6.123 7.25L6.914 2H2.8L1.081 6.5C1.028 6.66 1 6.826 1 7c0 1.104 1.15 2 2.571 2 1.31 0 2.393-.764 2.552-1.75zM10 9c1.42 0 2.571-.896 2.571-2 0-.041-.003-.082-.005-.121L12.057 2H7.943l-.51 4.875c-.002.041-.004.082-.004.125 0 1.104 1.151 2 2.571 2zm5 1.046V14H5v-3.948c-.438.158-.92.248-1.429.248-.195 0-.384-.023-.571-.049V16.6c0 .77.629 1.4 1.398 1.4H15.6c.77 0 1.4-.631 1.4-1.4v-6.348a4.297 4.297 0 0 1-.571.049A4.155 4.155 0 0 1 15 10.046zM18.92 6.5L17.199 2h-4.113l.79 5.242C14.03 8.232 15.113 9 16.429 9 17.849 9 19 8.104 19 7c0-.174-.028-.34-.08-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-bag'> - <path d="M18.121 3.271c-.295-.256-1.906-1.731-2.207-1.991-.299-.259-.756-.28-1.102-.28H5.188c-.345 0-.802.021-1.102.28-.301.26-1.912 1.736-2.207 1.991-.297.256-.543.643-.464 1.192.079.551 1.89 13.661 1.937 13.973A.67.67 0 0 0 4 19h12a.67.67 0 0 0 .648-.565c.047-.311 1.858-13.422 1.938-13.973.078-.548-.168-.935-.465-1.191zM10 11.973c-3.248 0-3.943-4.596-4.087-5.543H7.75c.276 1.381.904 3.744 2.25 3.744s1.975-2.363 2.25-3.744h1.838c-.145.947-.84 5.543-4.088 5.543zM3.17 4.006L5 2h10l1.83 2.006H3.17z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-basket'> - <path d="M18.399 7h-5.007L11.58 8.812a2.384 2.384 0 0 1-1.696.702c-.642 0-1.244-.25-1.698-.703a2.387 2.387 0 0 1-.703-1.695c0-.039.01-.077.011-.116H1.6a.6.6 0 0 0-.6.6V10h18V7.6a.6.6 0 0 0-.601-.6zm-7.631.999l5.055-5.055a.6.6 0 0 0 .002-.849l-.92-.92a.603.603 0 0 0-.85 0L9 6.231a1.25 1.25 0 0 0 1.768 1.768zm-6.945 9.272c.097.401.515.729.927.729h10.5c.412 0 .83-.328.927-.729L17.7 11H2.3l1.523 6.271z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-cart'> - <path d="M13 17a2 2 0 1 0 3.999.001A2 2 0 0 0 13 17zM3 17a2 2 0 1 0 4 0 2 2 0 0 0-4 0zm3.547-4.828L17.615 9.01A.564.564 0 0 0 18 8.5V3H4V1.4c0-.22-.181-.4-.399-.4H.399A.401.401 0 0 0 0 1.4V3h2l1.91 8.957.09.943v1.649c0 .219.18.4.4.4h13.2c.22 0 .4-.182.4-.4V13H6.752c-1.15 0-1.174-.551-.205-.828z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shuffle'> - <path d="M15.093 6.694h.92v2.862L20 5.532l-3.988-4.025v2.387h-.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.08 4.049-5.386 4.049H0v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.08-4.048 5.386-4.048zM5.41 8.458c.158-.203.316-.412.477-.623a47.33 47.33 0 0 1 1.252-1.596C5.817 5.005 4.224 4.095 2.093 4.095H0v2.799h2.093c1.327 0 2.362.623 3.317 1.564zm10.602 4.836h-.92c-1.407 0-2.487-.701-3.491-1.738l-.303.397c-.441.58-.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h.92v2.398L20 14.468l-3.988-4.025v2.851z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-signal'> - <path d="M10 14a1.99 1.99 0 0 0-1.981 2c0 1.104.887 2 1.981 2a1.99 1.99 0 0 0 1.98-2c0-1.105-.886-2-1.98-2zm-4.2-2.242l1.4 1.414a3.933 3.933 0 0 1 5.601 0l1.399-1.414a5.898 5.898 0 0 0-8.4 0zM3 8.928l1.4 1.414a7.864 7.864 0 0 1 11.199 0L17 8.928a9.831 9.831 0 0 0-14 0zM.199 6.1l1.4 1.414a11.797 11.797 0 0 1 16.801 0L19.8 6.1a13.763 13.763 0 0 0-19.601 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sina-weibo'> - <path d="M14.688 10.068c-.274-.084-.463-.142-.319-.508.311-.797.344-1.484.007-1.975-.633-.92-2.364-.871-4.348-.025 0-.002-.623.277-.464-.227.306-.997.259-1.833-.216-2.315-1.076-1.098-3.937.041-6.392 2.539C1.117 9.428.05 11.41.05 13.125c0 3.281 4.132 5.475 8.175 5.475 5.299 0 8.825-3.334 8.825-5.822 0-1.505-1.244-2.358-2.362-2.71zm-6.452 7.061c-3.225.32-6.011-1.147-6.22-3.275-.209-2.129 2.236-4.115 5.462-4.438 3.226-.32 6.011 1.146 6.22 3.275.209 2.131-2.236 4.118-5.462 4.438zM19.95 7.397a5.998 5.998 0 0 0-6-5.996.698.698 0 1 0 0 1.398 4.602 4.602 0 0 1 4.601 4.602.699.699 0 1 0 1.399-.001v-.003zm-2.781-.102a4.006 4.006 0 0 0-3.113-3.113.7.7 0 1 0-.281 1.371 2.603 2.603 0 0 1 2.024 2.023.701.701 0 0 0 .826.545.701.701 0 0 0 .544-.826zM6.582 11.502c-1.3.262-2.177 1.352-1.959 2.434.218 1.084 1.447 1.75 2.747 1.488 1.299-.262 2.176-1.352 1.959-2.434-.218-1.082-1.449-1.75-2.747-1.488z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-skype-with-circle'> - <path d="M12.164 9.852a3.477 3.477 0 0 0-.841-.395 11.065 11.065 0 0 0-1.087-.293 16.093 16.093 0 0 1-.679-.172 2.031 2.031 0 0 1-.396-.158.89.89 0 0 1-.293-.229.46.46 0 0 1-.098-.295c0-.188.1-.346.305-.484.212-.143.499-.215.851-.215.38 0 .656.064.821.193.17.133.318.322.44.562.106.188.201.318.294.4.099.09.241.137.423.137.201 0 .37-.072.505-.217a.698.698 0 0 0 .202-.488c0-.188-.053-.383-.154-.576a1.812 1.812 0 0 0-.477-.553 2.486 2.486 0 0 0-.811-.416 3.77 3.77 0 0 0-1.147-.156c-.55 0-1.035.078-1.443.234-.413.158-.734.388-.954.683a1.67 1.67 0 0 0-.334 1.023c0 .4.107.74.318 1.012.207.268.492.482.844.637.346.15.778.283 1.289.396.374.08.678.158.901.23.214.068.391.168.525.297a.632.632 0 0 1 .189.481c0 .252-.119.457-.363.631-.251.176-.584.264-.99.264-.296 0-.535-.043-.714-.131a1.097 1.097 0 0 1-.412-.326 2.564 2.564 0 0 1-.282-.516 1.163 1.163 0 0 0-.289-.434.63.63 0 0 0-.432-.154.716.716 0 0 0-.514.195.648.648 0 0 0-.205.479c0 .295.106.604.315.912.207.309.479.557.81.74.462.252 1.054.379 1.76.379.588 0 1.104-.094 1.536-.277.435-.186.771-.449.998-.779a1.96 1.96 0 0 0 .344-1.129c0-.348-.067-.648-.2-.891a1.716 1.716 0 0 0-.555-.601zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.301 14.975c-.487 0-.946-.125-1.348-.348a4.68 4.68 0 0 1-.9.086c-2.713 0-4.914-2.266-4.914-5.057 0-.35.035-.69.1-1.018a2.967 2.967 0 0 1-.392-1.481c0-1.619 1.276-2.934 2.851-2.934.557 0 1.076.166 1.516.451.272-.049.554-.074.839-.074 2.715 0 4.915 2.264 4.915 5.057 0 .371-.039.734-.113 1.084.189.393.296.834.296 1.303-.001 1.618-1.276 2.931-2.85 2.931z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-skype'> - <path d="M18.671 12.037a9.347 9.347 0 0 0 .203-1.938c0-4.986-3.93-9.029-8.777-9.029-.511 0-1.012.047-1.5.133A4.962 4.962 0 0 0 5.89.4C3.079.4.8 2.744.8 5.637c0 .965.256 1.871.699 2.648a9.348 9.348 0 0 0-.178 1.815c0 4.986 3.93 9.029 8.775 9.029.551 0 1.087-.051 1.607-.15a4.956 4.956 0 0 0 2.406.621c2.811 0 5.09-2.344 5.09-5.236a5.328 5.328 0 0 0-.528-2.327zm-4.072 2.379c-.406.59-1.006 1.059-1.783 1.391-.769.33-1.692.496-2.742.496-1.26 0-2.317-.227-3.143-.678a4.161 4.161 0 0 1-1.445-1.318c-.372-.555-.561-1.104-.561-1.633 0-.33.123-.617.365-.852.24-.232.549-.352.916-.352.301 0 .562.094.773.277.202.176.375.438.514.773.156.367.326.676.505.92.172.234.42.432.735.586.318.154.748.232 1.275.232.725 0 1.32-.158 1.768-.473.438-.309.65-.676.65-1.127 0-.357-.111-.637-.34-.857a2.409 2.409 0 0 0-.936-.531 18.034 18.034 0 0 0-1.611-.41c-.91-.201-1.683-.439-2.299-.707-.63-.275-1.137-.658-1.508-1.137-.375-.483-.567-1.092-.567-1.807 0-.682.2-1.297.596-1.828.393-.525.965-.935 1.703-1.217.728-.277 1.596-.418 2.576-.418.783 0 1.473.094 2.047.277.578.186 1.066.436 1.449.744.387.311.674.643.854.986.182.35.275.695.275 1.031 0 .322-.121.615-.361.871-.24.258-.543.387-.9.387-.324 0-.58-.082-.756-.242-.164-.148-.336-.383-.524-.717-.219-.428-.484-.766-.788-1.002-.295-.232-.788-.35-1.466-.35-.629 0-1.141.131-1.519.387-.368.249-.545.532-.545.866 0 .207.058.379.176.525.125.158.301.295.523.41.23.12.467.214.705.282.244.07.654.172 1.215.307.711.156 1.363.332 1.939.521a6.22 6.22 0 0 1 1.502.705c.42.283.754.645.989 1.076.237.434.357.969.357 1.59a3.49 3.49 0 0 1-.613 2.016z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-slideshare'> - <path d="M13 7.08a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm5.845-1.137C15.265 8.498 13.616 8.051 12 8c-1.118-.057-1.5.298-1.5 1.08l.001 6c0 5 8.421 3.43 5.165-4.949 1.671-.959 3.076-2.434 3.876-3.412.411-.608-.028-1.245-.697-.776zM7 2.08a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM8 8c-1.616.051-3.265.498-6.845-2.057-.669-.469-1.108.168-.697.775.8.979 2.205 2.453 3.876 3.412-3.256 8.379 5.165 9.949 5.165 4.949l.001-6C9.5 8.298 9.118 7.943 8 8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-smashing'> - <path d="M10.023 16.032c-2.508 0-4.253-1.555-4.253-1.555L4.287 17.84c1.023.547 2.092.936 2.709 1.141l-1.592.381a1.391 1.391 0 0 1-1.675-1.029L.639 5.405a1.39 1.39 0 0 1 1.028-1.676l3.716-.889c-.91 1.029-1.263 2.252-1.174 3.65.139 2.193 2.237 3.879 4.734 4.822 4.701 1.776 3.586 4.72 1.08 4.72zm9.338-1.438L16.27 1.666A1.388 1.388 0 0 0 14.595.639l-2.663.637c.679.105 2.024.4 3.505 1.178l-1.159 3.213s-.965-1.078-3.553-1.209c-2.46-.125-3.828 2.537.969 4.105 3.674 1.201 4.848 3.516 4.787 5.658a5.123 5.123 0 0 1-.872 2.701l2.725-.652a1.39 1.39 0 0 0 1.027-1.676z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound-mix'> - <path d="M5 1.6c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V10h2V1.6zM3 18.4c0 .551.447.6 1 .6.552 0 1-.049 1-.6V15H3v3.4zM6.399 11h-4.8C1.046 11 1 11.448 1 12v1c0 .553.046 1 .599 1H6.4c.55 0 .6-.447.6-1v-1c0-.552-.05-1-.601-1zm12 1h-4.801c-.552 0-.598.448-.598 1v1c0 .553.046 1 .599 1H18.4c.55 0 .6-.447.6-1v-1c0-.552-.05-1-.601-1zM13 7c0-.552-.05-1-.601-1h-4.8C7.046 6 7 6.448 7 7v1c0 .553.046 1 .599 1H12.4c.55 0 .6-.447.6-1V7zm-2-5.4c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V5h2V1.6zM9 18.4c0 .551.447.6 1 .6.552 0 1-.049 1-.6V10H9v8.4zm8-16.8c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V11h2V1.6zm-2 16.8c0 .551.447.6 1 .6.552 0 1-.049 1-.6V16h-2v2.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound-mute'> - <path d="M14.201 9.194c1.389 1.883 1.818 3.517 1.559 3.777-.26.258-1.893-.17-3.778-1.559l-5.526 5.527c4.186 1.838 9.627-2.018 10.605-2.996.925-.922.097-3.309-1.856-5.754l-1.004 1.005zM8.667 7.941c-1.099-1.658-1.431-3.023-1.194-3.26.233-.234 1.6.096 3.257 1.197l1.023-1.025C9.489 3.179 7.358 2.519 6.496 3.384c-.928.926-4.448 5.877-3.231 9.957l5.402-5.4zm9.854-6.463a.999.999 0 0 0-1.414 0L1.478 17.108a.999.999 0 1 0 1.414 1.414l15.629-15.63a.999.999 0 0 0 0-1.414z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound'> - <path d="M5.312 4.566C4.19 5.685-.715 12.681 3.523 16.918c4.236 4.238 11.23-.668 12.354-1.789 1.121-1.119-.335-4.395-3.252-7.312-2.919-2.919-6.191-4.376-7.313-3.251zm9.264 9.59c-.332.328-2.895-.457-5.364-2.928-2.467-2.469-3.256-5.033-2.924-5.363.328-.332 2.894.457 5.36 2.926 2.471 2.467 3.258 5.033 2.928 5.365zm.858-8.174l1.904-1.906a.999.999 0 1 0-1.414-1.414L14.02 4.568a.999.999 0 1 0 1.414 1.414zM11.124 3.8a1 1 0 0 0 1.36-.388l1.087-1.926a1 1 0 0 0-1.748-.972L10.736 2.44a1 1 0 0 0 .388 1.36zm8.748 3.016a.999.999 0 0 0-1.36-.388l-1.94 1.061a1 1 0 1 0 .972 1.748l1.94-1.061a1 1 0 0 0 .388-1.36z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-soundcloud'> - <path d="M.672 13.055L1 11.654l-.328-1.447c-.009-.043-.092-.076-.191-.076-.102 0-.184.033-.191.076L0 11.654l.289 1.4c.008.045.09.076.191.076.1.001.183-.03.192-.075zm2.051.777L3 11.668 2.723 8.32c-.009-.084-.114-.152-.239-.152-.127 0-.233.068-.238.152L2 11.668l.246 2.164c.006.086.111.152.238.152.125 0 .23-.066.239-.152zm2.045-.035L5 11.67l-.232-4.457c-.006-.106-.129-.188-.282-.188-.152 0-.275.082-.281.188L4 11.67l.205 2.129c.006.103.129.186.281.186.153-.001.276-.083.282-.188zm2.042-.031L7 11.67l-.19-4.49c-.005-.123-.146-.221-.32-.221-.176 0-.316.098-.321.221L6 11.67l.17 2.096c.004.123.145.221.32.221.174-.001.315-.096.32-.221zm2.04-.028L9 11.672l-.15-5.149c-.004-.142-.164-.255-.358-.255-.194 0-.354.115-.357.256L8 11.67l.135 2.068c.003.141.163.256.357.256.194 0 .354-.113.358-.256zm1.427.258l7.145.004C18.846 14 20 12.883 20 11.506c0-1.377-1.154-2.492-2.578-2.492-.353 0-.689.07-.996.193-.205-2.246-2.153-4.008-4.529-4.008a4.77 4.77 0 0 0-1.648.297c-.196.074-.247.148-.249.295v7.91a.306.306 0 0 0 .277.295z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sports-club'> - <path d="M6 13.5l4 2.5 4-2.5V5H6v8.5zM4.5 10a2 2 0 1 0-4 0 2 2 0 0 0 4 0zm13-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM4.485 6.199A6.71 6.71 0 0 1 10 3.3a6.715 6.715 0 0 1 5.456 2.823 1.4 1.4 0 0 0 2.281-1.624A9.518 9.518 0 0 0 10 .5a9.506 9.506 0 0 0-7.817 4.107 1.402 1.402 0 0 0 .355 1.948 1.401 1.401 0 0 0 1.947-.356zm10.971 7.678A6.713 6.713 0 0 1 10 16.7a6.71 6.71 0 0 1-5.515-2.899 1.4 1.4 0 0 0-2.302 1.592A9.506 9.506 0 0 0 10 19.5a9.518 9.518 0 0 0 7.737-3.999 1.401 1.401 0 0 0-2.281-1.624z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spotify-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.964 13.437c-.148 0-.25-.056-.359-.122-1.013-.613-2.268-.935-3.628-.935-.694 0-1.443.082-2.226.242l-.095.024c-.1.024-.201.05-.279.05a.554.554 0 0 1-.562-.559c0-.318.18-.543.479-.6a11.968 11.968 0 0 1 2.687-.316c1.58 0 2.994.365 4.201 1.09.208.121.338.26.338.569a.557.557 0 0 1-.556.557zm.778-2.183c-.177 0-.292-.067-.395-.127-1.825-1.084-4.547-1.443-6.785-.847a7.61 7.61 0 0 0-.102.031c-.084.027-.164.053-.274.053a.67.67 0 0 1-.667-.672c0-.357.186-.607.524-.702a9.95 9.95 0 0 1 2.84-.393c1.886 0 3.714.473 5.146 1.33.261.148.379.353.379.658 0 .37-.299.669-.666.669zm.883-2.488a.774.774 0 0 1-.421-.123c-1.239-.744-3.171-1.186-5.174-1.186-1.043 0-1.99.115-2.817.338a1.295 1.295 0 0 0-.083.024 1.11 1.11 0 0 1-.312.058.78.78 0 0 1-.783-.792c0-.386.217-.681.579-.788.998-.295 2.148-.443 3.415-.443 2.281 0 4.453.506 5.957 1.391.284.16.423.404.423.742a.774.774 0 0 1-.784.779z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spotify'> - <path d="M10 1.2A8.798 8.798 0 0 0 1.2 10 8.8 8.8 0 1 0 10 1.2zm3.478 13.302c-.173 0-.294-.066-.421-.143-1.189-.721-2.662-1.099-4.258-1.099-.814 0-1.693.097-2.61.285l-.112.028c-.116.028-.235.059-.326.059a.651.651 0 0 1-.661-.656c0-.373.21-.637.562-.703a14.037 14.037 0 0 1 3.152-.372c1.855 0 3.513.43 4.931 1.279.243.142.396.306.396.668a.655.655 0 0 1-.653.654zm.913-2.561c-.207 0-.343-.079-.463-.149-2.143-1.271-5.333-1.693-7.961-.993a3.742 3.742 0 0 0-.12.037c-.099.031-.191.062-.321.062a.786.786 0 0 1-.783-.788c0-.419.219-.712.614-.824 1.013-.278 1.964-.462 3.333-.462 2.212 0 4.357.555 6.038 1.561.306.175.445.414.445.771a.784.784 0 0 1-.782.785zm1.036-2.92c-.195 0-.315-.047-.495-.144-1.453-.872-3.72-1.391-6.069-1.391-1.224 0-2.336.135-3.306.397a2.072 2.072 0 0 0-.098.027 1.281 1.281 0 0 1-.365.068.914.914 0 0 1-.919-.929c0-.453.254-.799.68-.925 1.171-.346 2.519-.521 4.006-.521 2.678 0 5.226.595 6.991 1.631.332.189.495.475.495.872a.908.908 0 0 1-.92.915z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spreadsheet'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 7H9v9H8V8H5V7h3V3h1v4h6v1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-cross'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2.939 12.789L10 11.729l-3.061 3.06-1.729-1.728L8.271 10l-3.06-3.061L6.94 5.21 10 8.271l3.059-3.061 1.729 1.729L11.729 10l3.06 3.061-1.728 1.728z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-minus'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9H5V9h10v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-plus'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4H9v-4H5V9h4V5h2v4h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-star-outlined'> - <path d="M18.8 8.022h-6.413L10 1.3 7.611 8.022H1.199l5.232 3.947-1.871 6.929L10 14.744l5.438 4.154-1.869-6.929L18.8 8.022zM10 12.783l-3.014 2.5 1.243-3.562-2.851-2.3 3.522.101 1.1-4.04 1.099 4.04 3.521-.101-2.851 2.3 1.243 3.562-3.012-2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-star'> - <path d="M10 1.3l2.388 6.722H18.8l-5.232 3.948 1.871 6.928L10 14.744l-5.438 4.154 1.87-6.928-5.233-3.948h6.412L10 1.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stopwatch'> - <path d="M7.376 6.745c-.447.275 1.197 4.242 1.598 4.888a1.206 1.206 0 0 0 2.053-1.266c-.397-.648-3.205-3.898-3.651-3.622zm-.335-4.343a8.98 8.98 0 0 1 5.918 0c.329.114.765-.115.572-.611-.141-.36-.277-.712-.332-.855-.131-.339-.6-.619-.804-.665C11.623.097 10.823 0 10 0S8.377.097 7.604.271c-.204.046-.672.326-.803.665l-.332.855c-.193.496.243.726.572.611zm12.057.784a10.132 10.132 0 0 0-1.283-1.285c-.153-.129-.603-.234-.888.051l-1.648 1.647a9.27 9.27 0 0 1 1.155.966c.362.361.677.752.966 1.155l1.647-1.647c.286-.286.181-.735.051-.887zM10 2.9A8.1 8.1 0 0 0 1.899 11 8.1 8.1 0 0 0 10 19.101 8.1 8.1 0 0 0 10 2.9zm0 14.201A6.1 6.1 0 1 1 10.001 4.9 6.1 6.1 0 0 1 10 17.1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stumbleupon-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 7.385a.53.53 0 0 0-.531.529v3.168a2.262 2.262 0 0 1-4.522 0v-1.326h1.729v1.326a.53.53 0 0 0 .531.529.53.53 0 0 0 .531-.529V8.314a2.262 2.262 0 0 1 4.523.001v.603l-1.04.334-.69-.334v-.604A.53.53 0 0 0 10 7.785zm5.053 3.697a2.262 2.262 0 0 1-4.523 0v-1.354l.69.334 1.04-.334v1.354a.53.53 0 0 0 1.061 0v-1.326h1.731v1.326z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stumbleupon'> - <path d="M11.051 8.059l1.365.66 2.059-.66V6.865C14.475 4.402 12.467 2.4 10 2.4S5.525 4.402 5.525 6.865v6.27a1.052 1.052 0 0 1-2.102 0V10.51H0v2.625a4.475 4.475 0 0 0 8.949 0v-6.27a1.052 1.052 0 0 1 2.103 0v1.194zm5.525 2.451v2.625a1.051 1.051 0 0 1-2.102 0v-2.678l-2.059.658-1.365-.658v2.678a4.476 4.476 0 0 0 8.95 0V10.51h-3.424z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-suitcase'> - <path d="M18 4h-1v15h1c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM0 6v11c0 1.1.899 2 2 2h1V4H2C.899 4 0 4.9 0 6zm13.5-4.094C12.819 1.59 11.611 1 9.981 1c-1.633 0-2.8.59-3.481.906V4H4v15h12V4h-2.5V1.906zM12 4H8V2.664c.534-.23 1.078-.465 1.981-.465.902 0 1.486.234 2.019.465V4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-swap'> - <path d="M14 5H4V3L0 6.5 4 10V8h10V5zm6 8.5L16 10v2H6v3h10v2l4-3.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-swarm'> - <path d="M10.286 18.821a23.855 23.855 0 0 1-3.677-.923 58.46 58.46 0 0 1-1.007-.37.558.558 0 0 1-.317-.71c.086-.225.379-.949.399-.994.4-.92 1-2.153 1.795-3.379a9.16 9.16 0 0 0 2.807 6.376zm-.113-11.794C7.382 1.338 1.183 1.541.205 4.084c-.751 1.952 2.535 6.602 10.097 3.244l.004-.002a4.237 4.237 0 0 1-.133-.299zm1.387-.222l.002-.001c4.271-1.897 3.674-5.191 2.569-5.614-1.487-.569-4.19 1.624-2.647 5.447.015.027.066.14.076.168zm7.853 4.165A5.567 5.567 0 0 0 16.2 7.986a1.243 1.243 0 0 0-.423-.073c-.717 0-1.407.595-1.472 1.338-.109 1.239.137 2.501.68 3.718.535 1.199 1.294 2.213 2.27 2.957.254.194.565.285.875.285.559 0 1.117-.296 1.339-.826a5.542 5.542 0 0 0-.056-4.415zm-3.241 6.369c-1.195-.912-2.142-2.139-2.815-3.646-.682-1.529-.961-3.075-.827-4.596.037-.423.161-.831.36-1.204l-.114.028a5.86 5.86 0 0 0-1.778.784c-.784.514-1.475 1.277-1.772 2.177-.08.243-.141.51-.161.765a7.54 7.54 0 0 0 .636 3.67 7.562 7.562 0 0 0 2.213 2.853c.566.447 1.586.73 2.42.73.783 0 1.556-.233 2.25-.585.217-.11.695-.408.726-.429a3.17 3.17 0 0 1-1.138-.547z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sweden'> - <path d="M18 4H9v5h10V5a1 1 0 0 0-1-1zM1 15c0 .553.248 1 .8 1H7v-5H1v4zm8 1h9a1 1 0 0 0 1-1v-4H9v5zM1 5v4h6V4H1.8c-.552 0-.8.447-.8 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-switch'> - <path d="M13 3H7a7 7 0 1 0 0 14h6a7 7 0 1 0 0-14zm0 12a5 5 0 1 1 .001-10.001A5 5 0 0 1 13 15z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tablet-mobile-combo'> - <path d="M17.004 5h-5.008A1.996 1.996 0 0 0 10 6.996v11.008c0 1.102.894 1.996 1.996 1.996h5.008A1.996 1.996 0 0 0 19 18.004V6.996A1.996 1.996 0 0 0 17.004 5zM14.5 19c-.69 0-1.25-.447-1.25-1 0-.553.56-1 1.25-1s1.25.447 1.25 1c0 .553-.56 1-1.25 1zm2.5-3h-5V7h5v9zm-9 0H3V2h12v1h2V2c0-1.101-.9-2-2-2H3C1.9 0 1 .899 1 2v16c0 1.1.9 2 2 2h5.555A3.95 3.95 0 0 1 8 18.003V16z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tablet'> - <path d="M16 0H4C2.9 0 2 .899 2 2v16c0 1.1.9 2 2 2h12c1.101 0 2-.9 2-2V2c0-1.101-.899-2-2-2zm-6 19c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1c.689 0 1.25.447 1.25 1s-.561 1-1.25 1zm6-3H4V2h12v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tag'> - <path d="M18.662 5.521L5.237 19l.707-4.967-4.945.709L14.424 1.263c.391-.392 1.133-.308 1.412 0l2.826 2.839c.5.473.391 1.026 0 1.419z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text-document-inverted'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-3 14H7v-2h6v2zm0-4H7V9h6v2zm0-4H7V5h6v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text-document'> - <path d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H5V3h10v14zM13 5H7v2h6V5zm0 8H7v2h6v-2zm0-4H7v2h6V9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M15.5 11h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0-4h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-5 8h-6c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm5-12h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thermometer'> - <path d="M13 10.123V1a1 1 0 0 0-1-1H7.799C7.247 0 7 .447 7 1v9.123A5.383 5.383 0 0 0 4.6 14.6a5.4 5.4 0 0 0 10.8 0 5.383 5.383 0 0 0-2.4-4.477zM10 17.9a3.3 3.3 0 0 1-3.3-3.3A3.29 3.29 0 0 1 9 11.471V4h2v7.471a3.29 3.29 0 0 1 2.3 3.129 3.3 3.3 0 0 1-3.3 3.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thumbs-down'> - <path d="M6.352 12.638c.133.356-3.539 3.634-1.397 6.291.501.621 2.201-2.975 4.615-4.602 1.331-.899 4.43-2.811 4.43-3.868V3.617C14 2.346 9.086 1 5.352 1 3.983 1 2 9.576 2 10.939c0 1.367 4.221 1.343 4.352 1.699zM15 12.543c.658 0 3-.4 3-3.123V4.572c0-2.721-2.342-3.021-3-3.021-.657 0 1 .572 1 2.26v6.373c0 1.768-1.657 2.359-1 2.359z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thumbs-up'> - <path d="M13.648 7.362c-.133-.355 3.539-3.634 1.398-6.291-.501-.621-2.201 2.975-4.615 4.603C9.099 6.572 6 8.484 6 9.541v6.842C6 17.654 10.914 19 14.648 19 16.017 19 18 10.424 18 9.062c0-1.368-4.221-1.344-4.352-1.7zM5 7.457c-.658 0-3 .4-3 3.123v4.848c0 2.721 2.342 3.021 3 3.021.657 0-1-.572-1-2.26V9.816c0-1.768 1.657-2.359 1-2.359z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thunder-cloud'> - <path d="M15.213 6.641c-.276 0-.546.023-.809.066C13.748 4.562 11.715 3 9.309 3c-2.939 0-5.32 2.328-5.32 5.199 0 .258.02.51.057.756a3.815 3.815 0 0 0-.429-.027C1.619 8.928 0 10.512 0 12.463 0 14.416 1.619 16 3.617 16h11.596C17.856 16 20 13.904 20 11.32c0-2.586-2.144-4.679-4.787-4.679zm-3.842 4.31c-.494.703-2.614 2.889-2.704 2.98-.104.129-.391.344-.663.166-.079-.051-.172-.152-.172-.354 0-.193.088-.391.098-.412l1.033-2.287c-.193-.078-.527-.211-.785-.324l-.068-.029c-.262-.111-.588-.25-.588-.607 0-.172.081-.373.249-.609.495-.705 2.614-2.889 2.705-2.982.103-.127.39-.342.663-.166.078.051.171.154.171.354 0 .193-.088.391-.098.414L10.178 9.38c.195.078.528.213.787.324l.068.029c.262.111.588.25.588.609 0 .172-.082.371-.25.609z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ticket'> - <path d="M4.906 11.541l3.551 3.553 6.518-6.518-3.553-3.551-6.516 6.516zm14.198-4.877l-1.511-1.512a2.024 2.024 0 0 1-2.747-2.746L13.335.894a1.017 1.017 0 0 0-1.432 0L.893 11.904a1.017 1.017 0 0 0 0 1.432l1.512 1.51a2.024 2.024 0 0 1 2.747 2.748l1.512 1.51a1.015 1.015 0 0 0 1.432 0L19.104 8.096a1.015 1.015 0 0 0 0-1.432zM8.457 16.719l-5.176-5.178L11.423 3.4l5.176 5.176-8.142 8.143z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-time-slot'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2V10l6.792-3.396A7.548 7.548 0 0 1 17.6 10a7.6 7.6 0 0 1-7.6 7.599z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tools'> - <path d="M3.135 6.89c.933-.725 1.707-.225 2.74.971.116.135.272-.023.361-.1.088-.078 1.451-1.305 1.518-1.361.066-.059.146-.169.041-.292a36.238 36.238 0 0 1-.743-.951c-1.808-2.365 4.946-3.969 3.909-3.994-.528-.014-2.646-.039-2.963-.004-1.283.135-2.894 1.334-3.705 1.893-1.061.726-1.457 1.152-1.522 1.211-.3.262-.048.867-.592 1.344-.575.503-.934.122-1.267.414-.165.146-.627.492-.759.607-.133.117-.157.314-.021.471 0 0 1.264 1.396 1.37 1.52.105.122.391.228.567.071.177-.156.632-.553.708-.623.078-.066-.05-.861.358-1.177zm5.708.517c-.12-.139-.269-.143-.397-.029L7.012 8.63a.289.289 0 0 0-.027.4l8.294 9.439c.194.223.53.246.751.053l.97-.813a.54.54 0 0 0 .052-.758L8.843 7.407zM19.902 3.39c-.074-.494-.33-.391-.463-.182-.133.211-.721 1.102-.963 1.506-.24.4-.832 1.191-1.934.41-1.148-.811-.749-1.377-.549-1.758.201-.383.818-1.457.907-1.59.089-.135-.015-.527-.371-.363-.357.164-2.523 1.025-2.823 2.26-.307 1.256.257 2.379-.85 3.494l-1.343 1.4 1.349 1.566 1.654-1.57c.394-.396 1.236-.781 1.998-.607 1.633.369 2.524-.244 3.061-1.258.482-.906.402-2.814.327-3.308zM2.739 17.053a.538.538 0 0 0 0 .758l.951.93c.208.209.538.121.746-.088l4.907-4.824-1.503-1.714-5.101 4.938z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-traffic-cone'> - <path d="M10 12.078c2.39 0 4.392-.812 4.513-1.873l-1.125-3.152c-.264.761-1.725 1.301-3.388 1.301s-3.124-.54-3.388-1.301l-1.124 3.152c.121 1.061 2.122 1.873 4.512 1.873zm0-6.705c1.124 0 2.167-.348 2.473-.889-.421-1.182-.782-2.197-1.011-2.836C11.31 1.221 10.621 1 10 1s-1.31.221-1.462.648L7.527 4.484c.306.541 1.35.889 2.473.889zm8.78 7.693l-3.755-1.514.433 1.207c-.022 1.279-2.504 2.299-5.458 2.299-2.953 0-5.437-1.019-5.458-2.299l.433-1.207-3.755 1.514c-1.053.424-1.098 1.209-.098 1.744l7.062 3.787c.998.535 2.633.535 3.632 0l7.063-3.787c.999-.535.954-1.32-.099-1.744z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-trash'> - <path d="M3.389 7.113L4.49 18.021c.061.461 2.287 1.977 5.51 1.979 3.225-.002 5.451-1.518 5.511-1.979l1.102-10.908C14.929 8.055 12.412 8.5 10 8.5c-2.41 0-4.928-.445-6.611-1.387zm9.779-5.603l-.859-.951C11.977.086 11.617 0 10.916 0H9.085c-.7 0-1.061.086-1.392.559l-.859.951C4.264 1.959 2.4 3.15 2.4 4.029v.17C2.4 5.746 5.803 7 10 7c4.198 0 7.601-1.254 7.601-2.801v-.17c0-.879-1.863-2.07-4.433-2.519zM12.07 4.34L11 3H9L7.932 4.34h-1.7s1.862-2.221 2.111-2.522c.19-.23.384-.318.636-.318h2.043c.253 0 .447.088.637.318.248.301 2.111 2.522 2.111 2.522h-1.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tree'> - <path d="M20 10c0-1.361-.758-2.616-2.031-3.622-.002-.001-.004-.001-.005-.003C17.602 2.803 14.177 0 10 0S2.398 2.803 2.036 6.375c-.001.002-.003.002-.005.003C.758 7.384 0 8.639 0 10c0 3.112 3.947 5.669 9 5.97V17c0 1-1.821 1.911-1.821 1.911a.227.227 0 0 0-.109.277S7.375 20 8 20s1.124-.5 2.374-.5 2.439.432 2.439.432a.342.342 0 0 0 .329-.073l.717-.717c.078-.078.058-.173-.046-.212 0 0-1.812-.68-1.812-1.93v-1.121C16.565 15.324 20 12.903 20 10zM2 10c0-1.019.768-1.945 2.022-2.651C4.012 7.233 4 7.117 4 7c0-2.762 2.687-5 6-5s6 2.238 6 5c0 .117-.012.233-.021.349C17.232 8.055 18 8.981 18 10c0 1.864-2.551 3.424-5.999 3.869v-.668a.53.53 0 0 1 .145-.337l1.833-1.726a.534.534 0 0 0 .146-.337V9.95c0-.11-.078-.155-.172-.099l-1.779 1.047c-.096.056-.173.012-.173-.099V7.2c0-.11-.085-.172-.19-.137l-2.621.874a.297.297 0 0 0-.189.263v2.6c0 .11-.079.158-.177.107L6.802 9.843a.289.289 0 0 0-.318.048l-.342.342a.185.185 0 0 0 .009.273l2.7 2.361c.083.073.15.222.15.332v.765C5.056 13.719 2 12.04 2 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-down'> - <path d="M5 6h10l-5 9-5-9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-left'> - <path d="M14 5v10l-9-5 9-5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-right'> - <path d="M15 10l-9 5V5l9 5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-up'> - <path d="M15 14H5l5-9 5 9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tripadvisor'> - <path d="M20 6.009h-2.829C15.211 4.675 12.813 4 10 4s-5.212.675-7.171 2.009H0c.428.42.827 1.34.993 2.04A4.954 4.954 0 0 0 0 11.008c0 2.757 2.243 5 5 5a4.97 4.97 0 0 0 3.423-1.375L10 17l1.577-2.366A4.97 4.97 0 0 0 15 16.01c2.757 0 5-2.243 5-5 0-1.112-.377-2.13-.993-2.96.166-.7.565-1.62.993-2.04zm-15 8.4c-1.875 0-3.4-1.525-3.4-3.4s1.525-3.4 3.4-3.4 3.4 1.525 3.4 3.4-1.525 3.4-3.4 3.4zm5-3.4a5.008 5.008 0 0 0-4.009-4.9C7.195 5.704 8.53 5.5 10 5.5s2.805.204 4.009.61A5.008 5.008 0 0 0 10 11.008zm5 3.4c-1.875 0-3.4-1.525-3.4-3.4s1.525-3.4 3.4-3.4 3.4 1.525 3.4 3.4-1.525 3.4-3.4 3.4zM5 8.86c-1.185 0-2.15.964-2.15 2.15s.965 2.15 2.15 2.15 2.15-.964 2.15-2.15-.965-2.15-2.15-2.15zm0 2.791a.65.65 0 1 1 0-1.3.65.65 0 0 1 0 1.3zm10-2.791c-1.185 0-2.15.964-2.15 2.15s.965 2.15 2.15 2.15 2.15-.964 2.15-2.15-.965-2.15-2.15-2.15zm0 2.791a.65.65 0 1 1 0-1.3.65.65 0 0 1 0 1.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-trophy'> - <path d="M11.18 14.356c0-1.451 1.1-2.254 2.894-3.442C16.268 9.458 19 7.649 19 3.354a.703.703 0 0 0-.709-.699h-3.43C14.377 1.759 12.932.8 10 .8c-2.934 0-4.377.959-4.862 1.855H1.707A.703.703 0 0 0 1 3.354c0 4.295 2.73 6.104 4.926 7.559 1.794 1.188 2.894 1.991 2.894 3.442v1.311c-1.884.209-3.269.906-3.269 1.736 0 .994 1.992 1.799 4.449 1.799s4.449-.805 4.449-1.799c0-.83-1.385-1.527-3.269-1.736v-1.31zM13.957 9.3c.566-1.199 1.016-2.826 1.088-5.246h2.51c-.24 2.701-1.862 4.064-3.598 5.246zM10 2.026c2.732-.002 3.799 1.115 3.798 1.529 0 .418-1.066 1.533-3.798 1.535-2.732-.001-3.799-1.116-3.799-1.534C6.2 3.142 7.268 2.024 10 2.026zM2.445 4.054h2.509c.073 2.42.521 4.047 1.089 5.246-1.736-1.182-3.359-2.545-3.598-5.246z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tumblr-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.577 13.741a5.508 5.508 0 0 1-1.066.395 4.543 4.543 0 0 1-1.031.113c-.42 0-.791-.055-1.114-.162a2.373 2.373 0 0 1-.826-.459 1.651 1.651 0 0 1-.474-.633c-.088-.225-.132-.549-.132-.973V9.16H6.918V7.846c.359-.119.67-.289.927-.512.257-.221.464-.486.619-.797.156-.31.263-.707.322-1.185h1.307v2.35h2.18V9.16h-2.18v2.385c0 .539.028.885.085 1.037a.7.7 0 0 0 .315.367c.204.123.437.185.697.185.466 0 .928-.154 1.388-.461v1.468z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tumblr'> - <path d="M15.6 18.196c-.777.371-1.48.631-2.109.781a8.92 8.92 0 0 1-2.043.223c-.831 0-1.566-.107-2.205-.318a4.757 4.757 0 0 1-1.635-.908c-.451-.395-.764-.812-.938-1.254-.174-.443-.261-1.086-.261-1.926V8.339H4.4V5.735c.714-.234 1.326-.57 1.835-1.01a5.04 5.04 0 0 0 1.227-1.58c.308-.613.519-1.396.636-2.345h2.585v4.652h4.314v2.887h-4.314v4.719c0 1.066.056 1.752.168 2.055.111.303.319.545.622.725.403.244.863.367 1.381.367.92 0 1.836-.303 2.746-.908v2.899z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tv'> - <path d="M18 1H2C.899 1 0 1.9 0 3v11c0 1.1.882 2.178 1.961 2.393l4.372.875S2.57 19 5 19h10c2.43 0-1.334-1.732-1.334-1.732l4.373-.875C19.117 16.178 20 15.1 20 14V3c0-1.1-.9-2-2-2zm0 13H2V3h16v11z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-twitter-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.905 7.864c.004.082.005.164.005.244 0 2.5-1.901 5.381-5.379 5.381a5.335 5.335 0 0 1-2.898-.85c.147.018.298.025.451.025.886 0 1.701-.301 2.348-.809a1.895 1.895 0 0 1-1.766-1.312 1.9 1.9 0 0 0 .853-.033 1.892 1.892 0 0 1-1.517-1.854v-.023c.255.141.547.227.857.237a1.89 1.89 0 0 1-.585-2.526 5.376 5.376 0 0 0 3.897 1.977 1.891 1.891 0 0 1 3.222-1.725 3.797 3.797 0 0 0 1.2-.459 1.9 1.9 0 0 1-.831 1.047 3.799 3.799 0 0 0 1.086-.299 3.834 3.834 0 0 1-.943.979z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-twitter'> - <path d="M17.316 6.246c.008.162.011.326.011.488 0 4.99-3.797 10.742-10.74 10.742-2.133 0-4.116-.625-5.787-1.697a7.577 7.577 0 0 0 5.588-1.562 3.779 3.779 0 0 1-3.526-2.621 3.858 3.858 0 0 0 1.705-.065 3.779 3.779 0 0 1-3.028-3.703v-.047a3.766 3.766 0 0 0 1.71.473 3.775 3.775 0 0 1-1.168-5.041 10.716 10.716 0 0 0 7.781 3.945 3.813 3.813 0 0 1-.097-.861 3.773 3.773 0 0 1 3.774-3.773 3.77 3.77 0 0 1 2.756 1.191 7.602 7.602 0 0 0 2.397-.916 3.789 3.789 0 0 1-1.66 2.088 7.55 7.55 0 0 0 2.168-.594 7.623 7.623 0 0 1-1.884 1.953z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-typing'> - <path d="M16 4H4c-1.101 0-2 .9-2 2v7c0 1.1.899 2 2 2h4l4 3v-3h4c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM6 10.6a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2zm4 0a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2zm4 0a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-uninstall'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zM5.52 4.786l1.639-1.132 2.868 2.011 2.868-2.011 1.639 1.132-2.869 2.033 2.928 2.06-1.639 1.171-2.927-2.076L7.1 10.05 5.461 8.879l2.928-2.06L5.52 4.786zm11.439 10.459a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-unread'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17 3a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-4.5 1h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 5h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 5h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-untag'> - <path d="M1 14.742l4.945-.709L5.239 19l5.962-5.985-4.069-4.429L1 14.742zm17.664-9.221c.391-.393.5-.945 0-1.419l-2.826-2.839c-.279-.308-1.021-.392-1.412 0l-3.766 3.78 4.068 4.429 3.936-3.951zm.042 9.772l-14.001-14a.999.999 0 1 0-1.414 1.414l14.001 14a.996.996 0 0 0 1.414 0 .999.999 0 0 0 0-1.414z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-upload-to-cloud'> - <path d="M15.213 6.639c-.276 0-.546.025-.809.068C13.748 4.562 11.716 3 9.309 3c-2.939 0-5.32 2.328-5.32 5.199 0 .256.02.508.057.756a3.567 3.567 0 0 0-.429-.027C1.619 8.928 0 10.51 0 12.463S1.619 16 3.617 16H8v-4H5.5L10 7l4.5 5H12v4h3.213C17.856 16 20 13.904 20 11.32c0-2.586-2.144-4.681-4.787-4.681z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-upload'> - <path d="M8 12h4V6h3l-5-5-5 5h3v6zm11.338 1.532c-.21-.224-1.611-1.723-2.011-2.114A1.503 1.503 0 0 0 16.285 11h-1.757l3.064 2.994h-3.544a.274.274 0 0 0-.24.133L12.992 16H7.008l-.816-1.873a.276.276 0 0 0-.24-.133H2.408L5.471 11H3.715c-.397 0-.776.159-1.042.418-.4.392-1.801 1.891-2.011 2.114-.489.521-.758.936-.63 1.449l.561 3.074c.128.514.691.936 1.252.936h16.312c.561 0 1.124-.422 1.252-.936l.561-3.074c.126-.513-.142-.928-.632-1.449z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-user'> - <path d="M7.725 2.146c-1.016.756-1.289 1.953-1.239 2.59.064.779.222 1.793.222 1.793s-.313.17-.313.854c.109 1.717.683.976.801 1.729.284 1.814.933 1.491.933 2.481 0 1.649-.68 2.42-2.803 3.334C3.196 15.845 1 17 1 19v1h18v-1c0-2-2.197-3.155-4.328-4.072-2.123-.914-2.801-1.684-2.801-3.334 0-.99.647-.667.932-2.481.119-.753.692-.012.803-1.729 0-.684-.314-.854-.314-.854s.158-1.014.221-1.793c.065-.817-.398-2.561-2.3-3.096-.333-.34-.558-.881.466-1.424-2.24-.105-2.761 1.067-3.954 1.929z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-users'> - <path d="M15.989 19.129c0-2.246-2.187-3.389-4.317-4.307-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.011-.234-.011-.871zm2.539-5.764c-1.135-.457-1.605-1.002-1.605-2.066 0-.641.418-.432.602-1.603.077-.484.447-.008.518-1.115 0-.441-.202-.551-.202-.551s.103-.656.143-1.159c.05-.627-.364-2.247-2.268-2.247-1.903 0-2.318 1.62-2.269 2.247.042.502.144 1.159.144 1.159s-.202.109-.202.551c.071 1.107.441.631.518 1.115.184 1.172.602.963.602 1.603 0 1.064-.438 1.562-1.809 2.152-.069.029-.12.068-.183.102 1.64.712 4.226 1.941 4.838 4.447H20v-2.318c0-1-.273-1.834-1.472-2.317z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-v-card'> - <path d="M19 3H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-6 4h4v1h-4V7zm-2 7.803a2.31 2.31 0 0 0-.529-.303c-1.18-.508-2.961-1.26-2.961-2.176 0-.551.359-.371.518-1.379.066-.418.385-.007.445-.961 0-.38-.174-.475-.174-.475s.088-.562.123-.996c.036-.453-.221-1.8-1.277-2.097-.186-.188-.311-.111.258-.412-1.244-.059-1.534.592-2.196 1.071-.564.42-.717 1.085-.689 1.439.037.433.125.996.125.996s-.175.094-.175.474c.061.954.38.543.445.961.158 1.008.519.828.519 1.379 0 .916-1.781 1.668-2.961 2.176a2.503 2.503 0 0 0-.471.26V5h9v9.803zM18 11h-5v-1h5v1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-video-camera'> - <path d="M10.5 10a2.5 2.5 0 1 1-5.001-.001A2.5 2.5 0 0 1 10.5 10zM16 4v12c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2zm-3.5 6a4.5 4.5 0 1 0-9 0 4.5 4.5 0 0 0 9 0zm6.715-4.914L17 6.562v7l2.215 1.477a.505.505 0 0 0 .785-.42V5.506a.505.505 0 0 0-.785-.42z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-video'> - <path d="M20 5V3.799A.798.798 0 0 0 19.201 3H.801A.8.8 0 0 0 0 3.799V5h2v2H0v2h2v2H0v2h2v2H0v1.199A.8.8 0 0 0 .801 17h18.4a.8.8 0 0 0 .799-.801V15h-2v-2h2v-2h-2V9h2V7h-2V5h2zM8 13V7l5 3-5 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vimeo-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.401 7.75c-.508 2.916-3.348 5.387-4.201 5.951-.854.562-1.634-.227-1.916-.824-.324-.682-1.293-4.373-1.547-4.68-.254-.306-1.016.307-1.016.307l-.369-.494s1.547-1.883 2.724-2.117c1.248-.25 1.246 1.951 1.546 3.174.291 1.183.486 1.859.739 1.859.254 0 .739-.658 1.269-1.67.532-1.012-.022-1.906-1.061-1.27.415-2.54 4.34-3.152 3.832-.236z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vimeo'> - <path d="M18.91 5.84c-1.006 5.773-6.625 10.66-8.315 11.777-1.69 1.115-3.233-.447-3.792-1.631-.641-1.347-2.559-8.656-3.062-9.261-.503-.606-2.01.605-2.01.605L1 6.354s3.061-3.725 5.391-4.191c2.47-.493 2.466 3.864 3.06 6.282.574 2.342.961 3.68 1.463 3.68.502 0 1.462-1.305 2.512-3.305 1.053-2.004-.045-3.772-2.101-2.514.823-5.027 8.591-6.236 7.585-.466z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vine-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm1.908 6.451c-.37 0-.632.352-.632 1.028 0 1.378.875 2.171 2.011 2.171.201 0 .427-.024.658-.077v1.072a5.1 5.1 0 0 1-1.074.123c-.755 1.591-2.113 2.951-2.565 3.208-.29.163-.561.172-.878-.018-.559-.333-2.668-2.065-3.373-7.508h1.53c.387 3.268 1.325 4.941 2.363 6.196a8.575 8.575 0 0 0 1.552-2.193c-1.025-.522-1.648-1.663-1.648-2.992 0-1.345.775-2.362 2.102-2.362 1.287 0 1.991.802 1.991 2.181 0 .514-.109 1.098-.314 1.548-.957.188-1.305-.423-1.305-.423.07-.236.168-.635.168-.998.001-.64-.234-.956-.586-.956z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vine'> - <path d="M17.452 9.951a5.587 5.587 0 0 1-1.244.145c-2.145 0-3.797-1.496-3.797-4.102 0-1.277.493-1.941 1.192-1.941.664 0 1.107.596 1.107 1.805 0 .688-.184 1.44-.32 1.887 0 0 .66 1.152 2.469.799.385-.852.593-1.956.593-2.924 0-2.605-1.33-4.119-3.763-4.119-2.504 0-3.968 1.922-3.968 4.461 0 2.512 1.175 4.668 3.113 5.651-.815 1.629-1.852 3.065-2.933 4.146-1.961-2.371-3.734-5.534-4.463-11.706h-2.89c1.335 10.279 5.319 13.553 6.373 14.181.596.358 1.108.341 1.654.034.855-.485 3.422-3.054 4.847-6.061a9.565 9.565 0 0 0 2.03-.231V9.951z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vinyl'> - <path d="M9.999.8A9.2 9.2 0 0 0 .8 10.001a9.2 9.2 0 0 0 18.399 0A9.2 9.2 0 0 0 9.999.8zM10 13.001a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk-alternitive'> - <path d="M19 17V3c0-1.1-.903-2-2.005-2H3.005C1.855 1 1 1.853 1 3v14c0 1.148.855 2 2.005 2h13.99A2.008 2.008 0 0 0 19 17zm-3.816-5.393s1.132 1.117 1.411 1.635c.008.011.011.021.014.025.113.19.142.34.085.45-.094.183-.414.275-.523.283h-1.999c-.14 0-.43-.036-.782-.279-.27-.188-.537-.499-.797-.802-.388-.45-.724-.84-1.062-.84a.383.383 0 0 0-.126.021c-.257.082-.583.447-.583 1.422 0 .305-.24.479-.41.479h-.916c-.312 0-1.937-.109-3.376-1.628-1.766-1.86-3.352-5.591-3.366-5.624-.1-.241.107-.372.332-.372h2.02c.271 0 .358.164.42.311.07.167.334.841.766 1.599.703 1.233 1.136 1.735 1.481 1.735a.378.378 0 0 0 .184-.049c.451-.249.367-1.857.347-2.189 0-.063-.001-.719-.231-1.034-.166-.228-.447-.315-.617-.348a.738.738 0 0 1 .266-.226C8.031 6.022 8.588 6 9.142 6h.308c.601.008.757.047.974.102.439.105.448.39.409 1.36-.011.276-.023.589-.023.956 0 .079-.003.166-.003.256-.014.496-.03 1.057.32 1.287a.289.289 0 0 0 .151.044c.122 0 .487 0 1.476-1.697.435-.749.77-1.633.793-1.699a.528.528 0 0 1 .148-.183.347.347 0 0 1 .166-.039h2.375c.26 0 .436.039.469.138.057.159-.011.644-1.096 2.11l-.483.64c-.984 1.288-.984 1.354.058 2.332z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.692 10.831s.849.838 1.058 1.227c.006.008.009.016.011.02.085.143.105.254.063.337-.07.138-.31.206-.392.212h-1.5c-.104 0-.322-.027-.586-.209-.203-.142-.403-.375-.598-.602-.291-.338-.543-.63-.797-.63a.305.305 0 0 0-.095.015c-.192.062-.438.336-.438 1.066 0 .228-.18.359-.307.359h-.687c-.234 0-1.453-.082-2.533-1.221-1.322-1.395-2.512-4.193-2.522-4.219-.075-.181.08-.278.249-.278h1.515c.202 0 .268.123.314.232.054.127.252.632.577 1.2.527.926.85 1.302 1.109 1.302a.3.3 0 0 0 .139-.036c.338-.188.275-1.393.26-1.643 0-.047-.001-.539-.174-.775-.124-.171-.335-.236-.463-.26a.55.55 0 0 1 .199-.169c.232-.116.65-.133 1.065-.133h.231c.45.006.566.035.729.076.33.079.337.292.308 1.021-.009.207-.018.441-.018.717 0 .06-.003.124-.003.192-.01.371-.022.792.24.965a.216.216 0 0 0 .114.033c.091 0 .365 0 1.107-1.273a9.718 9.718 0 0 0 .595-1.274c.015-.026.059-.106.111-.137a.266.266 0 0 1 .124-.029h1.781c.194 0 .327.029.352.104.044.119-.008.482-.821 1.583l-.363.479c-.737.966-.737 1.015.046 1.748z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17.802 12.298s1.617 1.597 2.017 2.336a.127.127 0 0 1 .018.035c.163.273.203.487.123.645-.135.261-.592.392-.747.403h-2.858c-.199 0-.613-.052-1.117-.4-.385-.269-.768-.712-1.139-1.145-.554-.643-1.033-1.201-1.518-1.201a.548.548 0 0 0-.18.03c-.367.116-.833.639-.833 2.032 0 .436-.344.684-.585.684H9.674c-.446 0-2.768-.156-4.827-2.327C2.324 10.732.058 5.4.036 5.353c-.141-.345.155-.533.475-.533h2.886c.387 0 .513.234.601.444.102.241.48 1.205 1.1 2.288 1.004 1.762 1.621 2.479 2.114 2.479a.527.527 0 0 0 .264-.07c.644-.354.524-2.654.494-3.128 0-.092-.001-1.027-.331-1.479-.236-.324-.638-.45-.881-.496.065-.094.203-.238.38-.323.441-.22 1.238-.252 2.029-.252h.439c.858.012 1.08.067 1.392.146.628.15.64.557.585 1.943-.016.396-.033.842-.033 1.367 0 .112-.005.237-.005.364-.019.711-.044 1.512.458 1.841a.41.41 0 0 0 .217.062c.174 0 .695 0 2.108-2.425.62-1.071 1.1-2.334 1.133-2.429.028-.053.112-.202.214-.262a.479.479 0 0 1 .236-.056h3.395c.37 0 .621.056.67.196.082.227-.016.92-1.566 3.016-.261.349-.49.651-.691.915-1.405 1.844-1.405 1.937.083 3.337z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-voicemail'> - <path d="M15.4 5.801a4.6 4.6 0 0 0-3.795 7.2H8.394A4.6 4.6 0 1 0 4.6 15h10.8a4.6 4.6 0 0 0 0-9.199zM2 10.4a2.6 2.6 0 1 1 5.2 0 2.6 2.6 0 0 1-5.2 0zM15.4 13a2.6 2.6 0 1 1-.002-5.2A2.6 2.6 0 0 1 15.4 13z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-wallet'> - <path d="M16 6H3.5v-.5l11-.88v.88H16V4c0-1.1-.891-1.872-1.979-1.717L3.98 3.717C2.891 3.873 2 4.9 2 6v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm-1.5 7.006a1.5 1.5 0 1 1 .001-3.001 1.5 1.5 0 0 1-.001 3.001z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-warning'> - <path d="M19.511 17.98L10.604 1.348a.697.697 0 0 0-1.208 0L.49 17.98a.675.675 0 0 0 .005.68c.125.211.352.34.598.34h17.814a.694.694 0 0 0 .598-.34.677.677 0 0 0 .006-.68zM11 17H9v-2h2v2zm0-3.5H9V7h2v6.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-water'> - <path d="M9.882 9.093c-.511 4.115-3.121 4.847-3.121 7.708C6.761 18.567 8.244 20 10 20c1.756 0 3.238-1.434 3.238-3.199 0-2.861-2.61-3.593-3.121-7.708-.016-.123-.219-.123-.235 0zm-5.999-9C3.372 4.208.762 4.939.762 7.801.762 9.566 2.244 11 4 11s3.238-1.434 3.238-3.199c0-2.861-2.61-3.593-3.121-7.708-.015-.123-.219-.123-.234 0zm12 0c-.511 4.115-3.121 4.847-3.121 7.708C12.762 9.566 14.244 11 16 11s3.238-1.434 3.238-3.199c0-2.861-2.61-3.593-3.121-7.708-.016-.123-.219-.123-.234 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-windows-store'> - <path d="M9.5 3.241V9.5H18V2L9.5 3.241zM2 9.5h6.5V3.387L2 4.336V9.5zm7.5 7.259L18 18v-7.5H9.5v6.259zM2 15.664l6.5.949V10.5H2v5.164z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-xing-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM8.063 11.5l-.153.309c-.071.138-.236.191-.347.191H6.149c-.25 0-.239-.191-.178-.316l.092-.184 1.125-2.25L6.563 8l-.092-.185c-.061-.125-.072-.315.178-.315h1.414c.111 0 .276.053.347.19l.153.31.625 1.25-1.125 2.25zm5.967-5.685L13.938 6l-2.5 5 1.5 3 .092.184c.062.125.072.316-.178.316h-1.414c-.112 0-.275-.053-.345-.191L10.938 14l-1.5-3 2.5-5 .155-.31c.069-.138.232-.19.345-.19h1.414c.25 0 .239.19.178.315z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-xing'> - <path d="M17.703 1h-2.828c-.223 0-.553.105-.69.381s-.31.619-.31.619l-5 10 3 6 .31.619c.138.275.467.381.69.381h2.828c.5 0 .48-.381.355-.631L15.875 18l-3-6 5-10 .184-.369c.125-.25.144-.631-.356-.631zM6.815 5.381C6.678 5.105 6.348 5 6.125 5H3.297c-.5 0-.48.381-.355.631L3.125 6l1.25 2.5-2.25 4.5-.184.369c-.125.25-.144.631.356.631h2.828c.223 0 .553-.106.691-.381L6.125 13l2.25-4.5L7.125 6l-.31-.619z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-yelp'> - <path d="M12.538 12.471l4.523 1.466s.647.119.64.552c-.004.305-.197.652-.197.652l-1.91 2.756s-.341.286-.686.286c-.344 0-.741-.537-.741-.537l-2.417-4.073s-.272-.594.05-.921c.295-.3.738-.181.738-.181zM11.57 10.6c.231.396.87.281.87.281l4.513-1.331s.615-.253.703-.589c.086-.337-.102-.743-.102-.743l-2.157-2.564s-.187-.324-.575-.357c-.428-.037-.691.486-.691.486l-2.55 4.05c.001-.001-.224.402-.011.767zM9.438 9.021c.531-.132.616-.911.616-.911l-.036-6.485s-.08-.8-.436-1.017c-.559-.342-.724-.164-.884-.14L4.951 1.873s-.367.123-.558.432c-.273.437.277 1.079.277 1.079l3.894 5.358s.385.401.874.279zm-.925 2.624c.013-.5-.595-.801-.595-.801L3.89 8.791s-.597-.248-.887-.075c-.221.132-.418.372-.437.583l-.262 3.259s-.039.565.106.822c.205.364.881.111.881.111l4.702-1.049c.182-.124.502-.136.52-.797zm1.169 1.759c-.404-.209-.887.224-.887.224l-3.148 3.498s-.393.535-.293.863c.094.308.25.461.47.569l3.162 1.007s.383.08.674-.005c.412-.121.336-.772.336-.772l.071-4.736c0 .001-.016-.455-.385-.648z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youko-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm-.404 9.08C9 10.83 8.51 11.96 7.933 13.265c-.283.639-.503 1.345-1.021 1.684-2.144.135-.544-2.254-.227-3.099-.487-.93-1.126-2.011-1.701-3.022-.263-.46-.917-1.34-.265-1.836.241-.184.777-.189 1.02 0 .758.586 1.187 2.186 1.815 2.907.233-.4.442-.948.681-1.492.217-.494.396-1.19.718-1.415.494-.345 1.26-.045 1.361.459.127.636-.47 1.466-.718 2.027zm4.99 3.289c-.396-.086-.757-.647-1.133-.995-.393-.361-.827-.689-1.135-.994-.21-.32-.151.217-.151.535v.919c-.041.328-.218.519-.53.573h-.453c-.328-.038-.464-.27-.53-.573V7.988c.006-.812 1.507-.812 1.513 0v1.491c.242-.124.388-.346.567-.535a2.59 2.59 0 0 0 .416-.421c.255-.227.494-.469.718-.727.299-.626 1.462-.583 1.55.192.122 1.072-1.322 1.45-1.588 2.065.395.537 1.309.925 1.626 1.53.3.573-.058 1.362-.87 1.186z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youko'> - <path d="M19.418 12.08c-.548-1.046-2.126-1.715-2.806-2.642.459-1.061 2.951-1.714 2.74-3.565-.151-1.337-2.16-1.411-2.675-.33-.386.445-.8.863-1.24 1.254-.212.27-.451.512-.718.726-.31.326-.56.71-.979.925V5.873c-.01-1.4-2.6-1.4-2.61 0v7.33c.113.522.348.923.913.99h.784c.537-.095.843-.425.913-.99v-1.586c0-.55-.101-1.476.261-.924.532.526 1.28 1.093 1.958 1.716.65.6 1.273 1.569 1.958 1.717 1.401.304 2.02-1.057 1.501-2.046zM8.193 4.156c-.556.389-.866 1.589-1.24 2.443-.411.94-.773 1.886-1.174 2.575C4.693 7.93 3.953 5.168 2.646 4.156c-.421-.326-1.346-.317-1.762 0-1.126.857.004 2.374.457 3.17.994 1.744 2.096 3.611 2.937 5.216C3.73 14 .969 18.123 4.669 17.89c.896-.586 1.275-1.804 1.762-2.906.996-2.256 1.842-4.205 2.872-6.537.428-.97 1.459-2.402 1.24-3.5-.175-.87-1.498-1.387-2.35-.792z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youtube-with-circle'> - <path d="M11.603 9.833L9.357 8.785C9.161 8.694 9 8.796 9 9.013v1.974c0 .217.161.319.357.228l2.245-1.048c.197-.092.197-.242.001-.334zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 13.5c-4.914 0-5-.443-5-3.9s.086-3.9 5-3.9 5 .443 5 3.9-.086 3.9-5 3.9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youtube'> - <path d="M10 2.3C.172 2.3 0 3.174 0 10s.172 7.7 10 7.7 10-.874 10-7.7-.172-7.7-10-7.7zm3.205 8.034l-4.49 2.096c-.393.182-.715-.022-.715-.456V8.026c0-.433.322-.638.715-.456l4.49 2.096c.393.184.393.484 0 .668z"></path> - </symbol></svg> \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/the-logo.svg b/content/themes/fipamo-default/assets/images/global/the-logo.svg deleted file mode 100644 index f8d21b5..0000000 --- a/content/themes/fipamo-default/assets/images/global/the-logo.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 486 678" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> - <g id="Logo" transform="matrix(1.36867,0,0,1.36867,-351.696,-71.9183)"> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-99.4797)"> - <path d="M93.67,140.92L93.67,140.921C105.569,140.921 115.216,150.567 115.216,162.467L115.216,172.724L115.216,172.724L115.216,182.262C115.216,194.161 105.569,203.808 93.669,203.808C81.976,203.217 74.12,195.969 72.237,184.474L72.282,182.737L72.282,162.467L72.205,160.847C72.775,149.587 82.728,141.121 93.67,140.92Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M93.67,211.678L93.67,211.678C105.569,211.678 115.216,221.324 115.216,233.224L115.216,243.481L115.216,243.481L115.216,253.019C115.216,264.919 105.569,274.565 93.669,274.565C81.976,273.975 74.12,266.726 72.237,255.232L72.282,253.495L72.282,233.224L72.205,231.604C72.775,220.344 82.728,211.878 93.67,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M93.67,69.288L93.67,69.288C105.569,69.288 115.216,78.934 115.216,90.834L115.216,101.091L115.216,101.091L115.216,110.629C115.216,122.528 105.569,132.175 93.669,132.175C81.976,131.584 74.12,124.336 72.237,112.842L72.282,111.105L72.282,90.834L72.205,89.214C72.775,77.954 82.728,69.488 93.67,69.288Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-104.112)"> - <path d="M38.059,142.92L38.059,142.921C49.958,142.921 59.605,152.567 59.605,164.467L59.605,174.724L59.605,174.724L59.605,184.262C59.605,196.161 49.958,205.808 38.058,205.808C26.365,205.217 18.509,197.969 16.626,186.474L16.671,184.737L16.671,164.467L16.594,162.847C17.164,151.587 27.117,143.121 38.059,142.92Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-104.112)"> - <path d="M148.331,142.92L148.331,142.921C160.23,142.921 169.877,152.567 169.877,164.467L169.877,174.724L169.877,174.724L169.877,184.262C169.877,196.161 160.23,205.808 148.331,205.808C136.637,205.217 128.782,197.969 126.898,186.474L126.943,184.737L126.943,164.467L126.867,162.847C127.436,151.587 137.389,143.121 148.331,142.92Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M38.059,211.678L38.059,211.678C49.958,211.678 59.605,221.324 59.605,233.224L59.605,243.481L59.605,243.481L59.605,253.019C59.605,264.919 49.958,274.565 38.058,274.565C26.365,273.975 18.509,266.726 16.626,255.232L16.671,253.495L16.671,233.224L16.594,231.604C17.164,220.344 27.117,211.878 38.059,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M148.331,211.678L148.331,211.678C160.23,211.678 169.877,221.324 169.877,233.224L169.877,243.481L169.877,243.481L169.877,253.019C169.877,264.919 160.23,274.565 148.331,274.565C136.637,273.975 128.782,266.726 126.898,255.232L126.943,253.495L126.943,233.224L126.867,231.604C127.436,220.344 137.389,211.878 148.331,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M38.059,69.288L38.059,69.288C49.958,69.288 59.605,78.934 59.605,90.834L59.605,101.091L59.605,101.091L59.605,110.629C59.605,122.528 49.958,132.175 38.058,132.175C26.365,131.584 18.509,124.336 16.626,112.842L16.671,111.105L16.671,90.834L16.594,89.214C17.164,77.954 27.117,69.488 38.059,69.288Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M148.331,69.288L148.331,69.288C160.23,69.288 169.877,78.934 169.877,90.834L169.877,101.091L169.877,101.091L169.877,110.629C169.877,122.528 160.23,132.175 148.331,132.175C136.637,131.584 128.782,124.336 126.898,112.842L126.943,111.105L126.943,90.834L126.867,89.214C127.436,77.954 137.389,69.488 148.331,69.288Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - </g> -</svg> diff --git a/content/themes/fipamo-default/assets/scripts/ThemeStart.js b/content/themes/fipamo-default/assets/scripts/ThemeStart.js deleted file mode 100644 index 6da9e18..0000000 --- a/content/themes/fipamo-default/assets/scripts/ThemeStart.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{class e{constructor(){this.currentSlide=0,this.slides=document.querySelectorAll("#media .slide"),this.start()}start(){this.slides.length>1&&(this.slideInterval=setInterval((()=>{this.slides[this.currentSlide].className="slide hide",this.currentSlide=(this.currentSlide+1)%this.slides.length,this.slides[this.currentSlide].className="slide show"}),3e3))}}document.addEventListener("DOMContentLoaded",(function(){new e}),!1)})(); -//# sourceMappingURL=ThemeStart.js.map diff --git a/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map b/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map deleted file mode 100644 index eebae8e..0000000 --- a/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map +++ /dev/null @@ -1 +0,0 @@ -{"mappings":"4BAKIA,KAAKC,aAAe,EACpBD,KAAKE,OAASC,SAASC,iBAAiB,iBACxCJ,KAAKK,QAEPA,QACML,KAAKE,OAAOI,OAAS,IACvBN,KAAKO,cAAgBC,aAAW,KAC9BR,KAAKE,OAAOF,KAAKC,cAAcQ,UAAY,aAC3CT,KAAKC,cAAgBD,KAAKC,aAAe,GAAKD,KAAKE,OAAOI,OAC1DN,KAAKE,OAAOF,KAAKC,cAAcQ,UAAY,eAC1C,OCbTN,SAASO,iBACP,oBACA,WACa,IAAIC,KAEjB","sources":["src/themes/theme-fipamo-default/com/Base.js","src/themes/theme-fipamo-default/com/ThemeStart.js"],"sourcesContent":["export default class Base {\n //--------------------------\n // constructor\n //--------------------------\n constructor() {\n this.currentSlide = 0;\n this.slides = document.querySelectorAll(\"#media .slide\");\n this.start();\n }\n start() {\n if (this.slides.length > 1) {\n this.slideInterval = setInterval(() => {\n this.slides[this.currentSlide].className = \"slide hide\";\n this.currentSlide = (this.currentSlide + 1) % this.slides.length;\n this.slides[this.currentSlide].className = \"slide show\";\n }, 3000);\n }\n }\n //--------------------------\n // methods\n //--------------------------\n\n //--------------------------\n // event handlers\n //--------------------------\n}\n","import Base from \"./Base.js\";\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n function () {\n var base = new Base();\n },\n false\n);\n"],"names":["this","currentSlide","slides","document","querySelectorAll","start","length","slideInterval","setInterval","className","addEventListener","$b8d4b81eabebe07b$export$2e2bcd8739ae039"],"version":3,"file":"ThemeStart.js.map"} \ No newline at end of file diff --git a/content/themes/fipamo-default/error.twig b/content/themes/fipamo-default/error.twig deleted file mode 100644 index c92c83d..0000000 --- a/content/themes/fipamo-default/error.twig +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} - <section> - <div class="page-title"> - <span>{{title}}</span> - </div> - </section> - <article> - <div class="page"> - <p>{{content | raw}}</p> - </div> - </article> - {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/frame.twig b/content/themes/fipamo-default/frame.twig deleted file mode 100644 index d38ce9e..0000000 --- a/content/themes/fipamo-default/frame.twig +++ /dev/null @@ -1,112 +0,0 @@ -<!DOCTYPE html> - -{% if debug is defined %} - {% set assetPath = '/src/themes/theme-'~theme~'/'~theme~'/assets/' %} -{% else %} - {% set assetPath = '/assets/' %} -{% endif %} - -<html> - <head> - <title> - {% block title %} - {{ title }} - {% endblock %} - </title> - <meta charset="UTF-8"/> - <meta name='viewport' content='width=device-width, initial-scale=1.0'/> - <meta name="keywords" content="{{ info['keywords'] }}"/> - <meta name="description" content="{{info['description']}} "/> - <meta http-equiv="content-type" content="text/html; charset=utf-8"/> - <meta property="og:image" content="{{info["image"]}}"/> - <meta name="twitter:image" content="{{info["image"]}}"/> - <link rel="stylesheet" type="text/css" href="{{ assetPath~"css/base.css?=dfvbghh" }}"> - </head> - <body> - <!-- - <header style="background: url({{ background }}) no-repeat center center; background-size: cover"> - --> - <header> - <div id="media"> - {% if media|length > 1 %} - {% for item in media %} - {% if item.type == "mp4"%} - <div id="{{loop.index0}}" class="slide"> - <video controls autoplay muted> - - <source src="{{item.file}}" type="video/mp4"> - - Please get a better browser. They're free. - </video> - </div> - {% else %} - <div id="{{loop.index0}}" class="slide hide" style="background: url({{ item.file }}) no-repeat center center / cover"></div> - {% endif %} - {% endfor %} - {% else %} - {% if media[0] != '' %} - {% if media[0].type == "mp4"%} - <div id="0" class="slide"> - <video controls autoplay muted> - - <source src="{{media[0].file}}" type="video/mp4"> - - Please get a better browser. They're free. - </video> - </div> - {% else %} - <div id="0" class="slide" style="background: url({{ media[0].file }}) no-repeat center center / cover"></div> - {% endif %} - {% else %} - {% endif %} - {% endif %} - </div> - <nav> - {% apply spaceless %} - <div class="left"> - <a href="/" class="logo-link"> - <img id="logo" src="{{ assetPath~"/images/global/the-logo.svg" }}"/> - </a> - </div> - <div class="right"> - {% if menu is defined %} - {% for link in menu %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{"/"~link.slug}}" class="menu-link">{{link.title}}</a><br/> - {% else %} - <a href="{{"/"~link.slug~".html"}}" class="menu-link">{{link.title}}</a><br/> - {% endif %} - {% else %} - <a href="{{"/"~link.slug~".html"}}" class="menu-link">{{link.title}}</a><br/> - {% endif %} - {% endfor %} - {% endif %} - </div> - {% endapply %} - </nav> - </header> - <div id="main-content" class="container"> - {% apply spaceless %} - {% block mainContent %}{% endblock %} - {% endapply %} - - </div> - - <footer> - <div class="inner"> - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="/archives">Archives</a><br/> - {% else %} - <a href="/archives.html">Archives</a><br/> - {% endif %} - {% else %} - <a href="/archives.html">Archives</a><br/> - {% endif %} - © 2020 By Fipamo - </div> - </footer> - <script src="{{ assetPath~"scripts/ThemeStart.js" }}" type="text/javascript"></script> - </body> -</html> diff --git a/content/themes/fipamo-default/index.twig b/content/themes/fipamo-default/index.twig deleted file mode 100644 index 11cba2f..0000000 --- a/content/themes/fipamo-default/index.twig +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} - <article> - <div class="index"> - <h2>{{title}}</h2> - <p>{{ content | raw }}</p> - - </div> - </article> - <section> - <div class="index-lists"> - <div class="recent"> - <span>RECENT</span><br /> - {% for item in recent %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{ "/"~item.path~"/"~item.slug}}"> {{item.title}} </a><br /> - {% else %} - <a href="{{ "/"~item.path~"/"~item.slug~".html" }}"> {{item.title}} </a><br /> - {% endif %} - - {% else %} - <a href="{{ "/"~item.path~"/"~item.slug~".html" }}"> {{item.title}} </a><br /> - {% endif %} - {% endfor %} - - </div> - <div class="featured"> - <span>FEATURED</span><br /> - {% for item in featured %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{ "/"~item.path~"/"~item.slug}}"> {{item.title}} </a><br /> - {% else %} - <a href="{{ "/"~item.path~"/"~item.slug~".html" }}"> {{item.title}} </a><br /> - {% endif %} - - {% else %} - <a href="{{ "/"~item.path~"/"~item.slug~".html" }}"> {{item.title}} </a><br /> - {% endif %} - {% endfor %} - </div> - - </div> - </section> - {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page-custom.twig b/content/themes/fipamo-default/page-custom.twig deleted file mode 100644 index 387ddf0..0000000 --- a/content/themes/fipamo-default/page-custom.twig +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} - <section> - <div class="page-title"> - <span>{{title}}</span><br> - This is a custom temlate - </div> - </section> - <article> - <div class="page"> - <p>{{content | raw}}</p> - <div> - <div class="page_files"> - <div class="page_doc"> - <strong>Files</strong><br/> - {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - <a href="{{doc.file}}">{{path[6]}}</a> - - {% endif %} - {% endfor %} - </div> - <div class="page_sounds"> - <strong>Sounds</strong><br/> - {% for doc in files %} - {% if doc.type == "mp3" %} - <audio controls> - <source src="{{doc.file}}" type="audio/mpeg"> - Your browser does not support the audio element. - </audio> - {% endif %} - {% endfor %} - </div> - - </div> - <br/> - {{meta['who']}} dropped this {{ meta['when'] }}<br /> - <strong>tags: </strong> - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{ "/tags/"~tag.slug }}">{{ tag.label }}</a> - {% else %} - <a href="{{ "/tags/"~tag.slug~".html" }}">{{ tag.label }}</a> - {% endif %} - {% else %} - <a href="{{ "/tags/"~tag.slug~".html" }}">{{ tag.label }}</a> - {% endif %} - {% endfor %} - - </div> - </div> - </article> - {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page.twig b/content/themes/fipamo-default/page.twig deleted file mode 100644 index 896e694..0000000 --- a/content/themes/fipamo-default/page.twig +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block mainContent %} - <section> - <div class="page-title"> - <span>{{title}}</span> - </div> - </section> - <article> - <div class="page"> - <p>{{content | raw}}</p> - <div> - <div class="page_files"> - <div class="page_doc"> - <strong>Files</strong><br/> - {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - <a href="{{doc.file}}">{{path[6]}}</a> - - {% endif %} - {% endfor %} - </div> - <div class="page_sounds"> - <strong>Sounds</strong><br/> - {% for doc in files %} - {% if doc.type == "mp3" %} - <audio controls> - <source src="{{doc.file}}" type="audio/mpeg"> - Your browser does not support the audio element. - </audio> - {% endif %} - {% endfor %} - </div> - - </div> - <br/> - {{meta['who']}} - dropped this - {{ meta['when'] }}<br/> - <strong>tags: - </strong> - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{ "/tags/"~tag.slug }}">{{ tag.label }}</a> - {% else %} - <a href="{{ "/tags/"~tag.slug~".html" }}">{{ tag.label }}</a> - {% endif %} - {% else %} - <a href="{{ "/tags/"~tag.slug~".html" }}">{{ tag.label }}</a> - {% endif %} - {% endfor %} - - </div> - </div> - </article> -{% endblock %} diff --git a/content/themes/fipamo-default/tags.twig b/content/themes/fipamo-default/tags.twig deleted file mode 100644 index baa6694..0000000 --- a/content/themes/fipamo-default/tags.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} - <section> - <div class="page-title"> - <span>{{title}}</span> - </div> - </section> - <article> - <div class="page"> - {% for tag in tag_list %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - <a href="{{"/"~tag.path~"/"~tag.slug}}">{{tag.title}}</a><br /> - {% else %} - <a href="{{"/"~tag.path~"/"~tag.slug~".html"}}">{{tag.title}}</a><br /> - {% endif %} - - {% else %} - <a href="{{"/"~tag.path~"/"~tag.slug~".html"}}">{{tag.title}}</a><br /> - {% endif %} - {% endfor %} - - </div> - </article> - {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/theme.json b/content/themes/fipamo-default/theme.json deleted file mode 100644 index 2516364..0000000 --- a/content/themes/fipamo-default/theme.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "fipamo-default", - "display-name": "Fipamo Oh Won", - "author": "Are0h", - "description": "The most dangerous default theme in the known universe.", - "version": "1.0.0" -} \ No newline at end of file diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ +<?php + +namespace Database\Factories; + +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; + +/** + * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User> + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array<string, mixed> + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('users', function (Blueprint $table) { + $table->id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +<?php + +use Illuminate\Database\Migrations\Migration; +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\Schema; + +return new class extends Migration +{ + /** + * Run the migrations. + */ + public function up(): void + { + Schema::create('personal_access_tokens', function (Blueprint $table) { + $table->id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +<?php + +namespace Database\Seeders; + +// use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use Illuminate\Database\Seeder; + +class DatabaseSeeder extends Seeder +{ + /** + * Seed the application's database. + */ + public function run(): void + { + // \App\Models\User::factory(10)->create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7bb4121..0000000 --- a/package-lock.json +++ /dev/null @@ -1,8025 +0,0 @@ -{ - "name": "fipamo-dash", - "version": "2.6.0-beta", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "fipamo-dash", - "version": "2.6.0-beta", - "dependencies": { - "animejs": "^3.2.1", - "prismjs": "^1.29.0", - "sortablejs": "^1.15.0" - }, - "devDependencies": { - "@babel/core": "^7.21.3", - "babel-plugin-prismjs": "^2.1.0", - "parcel": "^2.8.3", - "prettier": "^2.8.4", - "stylelint": "^15.3.0", - "stylelint-config-standard": "^31.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "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/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/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", - "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.0.0" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz", - "integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", - "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.0.0", - "@csstools/css-tokenizer": "^2.0.0" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", - "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4", - "postcss-selector-parser": "^6.0.10" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", - "dev": true - }, - "node_modules/@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "dev": true, - "dependencies": { - "@lezer/common": "^0.15.0" - } - }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "dev": true, - "dependencies": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "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/@parcel/bundler-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.3.tgz", - "integrity": "sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/cache": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.3.tgz", - "integrity": "sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==", - "dev": true, - "dependencies": { - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/utils": "2.8.3", - "lmdb": "2.5.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/codeframe": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.3.tgz", - "integrity": "sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/compressor-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz", - "integrity": "sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/config-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.3.tgz", - "integrity": "sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==", - "dev": true, - "dependencies": { - "@parcel/bundler-default": "2.8.3", - "@parcel/compressor-raw": "2.8.3", - "@parcel/namer-default": "2.8.3", - "@parcel/optimizer-css": "2.8.3", - "@parcel/optimizer-htmlnano": "2.8.3", - "@parcel/optimizer-image": "2.8.3", - "@parcel/optimizer-svgo": "2.8.3", - "@parcel/optimizer-terser": "2.8.3", - "@parcel/packager-css": "2.8.3", - "@parcel/packager-html": "2.8.3", - "@parcel/packager-js": "2.8.3", - "@parcel/packager-raw": "2.8.3", - "@parcel/packager-svg": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/resolver-default": "2.8.3", - "@parcel/runtime-browser-hmr": "2.8.3", - "@parcel/runtime-js": "2.8.3", - "@parcel/runtime-react-refresh": "2.8.3", - "@parcel/runtime-service-worker": "2.8.3", - "@parcel/transformer-babel": "2.8.3", - "@parcel/transformer-css": "2.8.3", - "@parcel/transformer-html": "2.8.3", - "@parcel/transformer-image": "2.8.3", - "@parcel/transformer-js": "2.8.3", - "@parcel/transformer-json": "2.8.3", - "@parcel/transformer-postcss": "2.8.3", - "@parcel/transformer-posthtml": "2.8.3", - "@parcel/transformer-raw": "2.8.3", - "@parcel/transformer-react-refresh-wrap": "2.8.3", - "@parcel/transformer-svg": "2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.3.tgz", - "integrity": "sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==", - "dev": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/diagnostic": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.3.tgz", - "integrity": "sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==", - "dev": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/events": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.3.tgz", - "integrity": "sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/fs": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.3.tgz", - "integrity": "sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==", - "dev": true, - "dependencies": { - "@parcel/fs-search": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/fs-search": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.3.tgz", - "integrity": "sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/graph": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.3.tgz", - "integrity": "sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==", - "dev": true, - "dependencies": { - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/hash": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.3.tgz", - "integrity": "sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/logger": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.3.tgz", - "integrity": "sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz", - "integrity": "sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/namer-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.3.tgz", - "integrity": "sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/node-resolver-core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz", - "integrity": "sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz", - "integrity": "sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz", - "integrity": "sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz", - "integrity": "sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-svgo": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz", - "integrity": "sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-terser": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz", - "integrity": "sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/package-manager": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.3.tgz", - "integrity": "sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/packager-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.3.tgz", - "integrity": "sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.3.tgz", - "integrity": "sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.3.tgz", - "integrity": "sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.3.tgz", - "integrity": "sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.3.tgz", - "integrity": "sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "posthtml": "^0.16.4" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/plugin": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.3.tgz", - "integrity": "sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==", - "dev": true, - "dependencies": { - "@parcel/types": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-cli": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz", - "integrity": "sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz", - "integrity": "sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/resolver-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.3.tgz", - "integrity": "sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==", - "dev": true, - "dependencies": { - "@parcel/node-resolver-core": "2.8.3", - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz", - "integrity": "sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.3.tgz", - "integrity": "sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-react-refresh": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz", - "integrity": "sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz", - "integrity": "sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": "^12.18.3 || >=14" - } - }, - "node_modules/@parcel/transformer-babel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz", - "integrity": "sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.3.tgz", - "integrity": "sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.3.tgz", - "integrity": "sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1", - "srcset": "4" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.3.tgz", - "integrity": "sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/transformer-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.3.tgz", - "integrity": "sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "@swc/helpers": "^0.4.12", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/transformer-json": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.3.tgz", - "integrity": "sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "json5": "^2.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-postcss": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz", - "integrity": "sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-posthtml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz", - "integrity": "sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz", - "integrity": "sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz", - "integrity": "sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz", - "integrity": "sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/types": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.3.tgz", - "integrity": "sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==", - "dev": true, - "dependencies": { - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.8.3", - "utility-types": "^3.10.0" - } - }, - "node_modules/@parcel/utils": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.3.tgz", - "integrity": "sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==", - "dev": true, - "dependencies": { - "@parcel/codeframe": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/markdown-ansi": "2.8.3", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/workers": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", - "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "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/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/animejs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.1.tgz", - "integrity": "sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==" - }, - "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/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/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/babel-plugin-prismjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz", - "integrity": "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==", - "dev": true, - "peerDependencies": { - "prismjs": "^1.18.0" - } - }, - "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/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "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/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/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/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.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "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/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "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/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "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/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/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/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/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/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.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": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "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/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?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": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.332", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz", - "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==", - "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/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "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": "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/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-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "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/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.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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/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-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/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/hosted-git-info/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/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlnano": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.3.tgz", - "integrity": "sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - }, - "peerDependencies": { - "cssnano": "^5.0.11", - "postcss": "^8.3.11", - "purgecss": "^5.0.0", - "relateurl": "^0.2.7", - "srcset": "4.0.0", - "svgo": "^2.8.0", - "terser": "^5.10.0", - "uncss": "^0.17.3" - }, - "peerDependenciesMeta": { - "cssnano": { - "optional": true - }, - "postcss": { - "optional": true - }, - "purgecss": { - "optional": true - }, - "relateurl": { - "optional": true - }, - "srcset": { - "optional": true - }, - "svgo": { - "optional": true - }, - "terser": { - "optional": true - }, - "uncss": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "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/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/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-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "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-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/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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": "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/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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.27.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz", - "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", - "dev": true - }, - "node_modules/lightningcss": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", - "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.19.0", - "lightningcss-darwin-x64": "1.19.0", - "lightningcss-linux-arm-gnueabihf": "1.19.0", - "lightningcss-linux-arm64-gnu": "1.19.0", - "lightningcss-linux-arm64-musl": "1.19.0", - "lightningcss-linux-x64-gnu": "1.19.0", - "lightningcss-linux-x64-musl": "1.19.0", - "lightningcss-win32-x64-msvc": "1.19.0" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", - "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", - "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", - "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", - "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", - "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", - "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", - "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", - "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "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/lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2" - } - }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "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/msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", - "dev": true, - "optionalDependencies": { - "msgpackr-extract": "^3.0.1" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" - } - }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "dev": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/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/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/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/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/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/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, - "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/ordered-binary": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz", - "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==", - "dev": true - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parcel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.3.tgz", - "integrity": "sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==", - "dev": true, - "dependencies": { - "@parcel/config-default": "2.8.3", - "@parcel/core": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/reporter-cli": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - }, - "bin": { - "parcel": "lib/bin.js" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "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/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-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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/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/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "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-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": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "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/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dev": true, - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dev": true, - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dev": true, - "dependencies": { - "is-json": "^2.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml/node_modules/posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dev": true, - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "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/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "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": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/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/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "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/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/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/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" - }, - "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/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.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.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/srcset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "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/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-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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": "15.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.3.0.tgz", - "integrity": "sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==", - "dev": true, - "dependencies": { - "@csstools/css-parser-algorithms": "^2.0.1", - "@csstools/css-tokenizer": "^2.1.0", - "@csstools/media-query-list-parser": "^2.0.1", - "@csstools/selector-specificity": "^2.1.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.1.0", - "css-functions-list": "^3.1.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.27.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.21", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^5.0.0" - }, - "bin": { - "stylelint": "bin/stylelint.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-standard": { - "version": "31.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-31.0.0.tgz", - "integrity": "sha512-CUGAmtROCvX0YgMY2+6P9tqSkHj5z/75XxrQ8bGxvkCa1xYdGDx4poM0pa7cXc3s74/PZLJH/okxZZouRfOSGw==", - "dev": true, - "dependencies": { - "stylelint-config-recommended": "^11.0.0" - }, - "peerDependencies": { - "stylelint": "^15.3.0" - } - }, - "node_modules/stylelint-config-standard/node_modules/stylelint-config-recommended": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz", - "integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==", - "dev": true, - "peerDependencies": { - "stylelint": "^15.3.0" - } - }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.2.tgz", - "integrity": "sha512-rmpUFKMZiawLfug8sP4NbpBSOpWftZB6UACOLEiNbnRAYM1TzgQuTWlMYFRuPgmoTCkcOxSMwQJQpJmiXv/eHw==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/stylelint/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/stylelint/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/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/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/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/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/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "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/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "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/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "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/weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true - }, - "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/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.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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, - "requires": { - "color-name": "1.1.3" - } - }, - "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 - }, - "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 - }, - "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, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@csstools/css-parser-algorithms": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", - "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", - "dev": true, - "requires": {} - }, - "@csstools/css-tokenizer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz", - "integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==", - "dev": true - }, - "@csstools/media-query-list-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", - "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", - "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", - "dev": true, - "requires": {} - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", - "dev": true - }, - "@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "dev": true, - "requires": { - "@lezer/common": "^0.15.0" - } - }, - "@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "dev": true, - "optional": true - }, - "@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "dev": true, - "requires": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - } - }, - "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "dev": true, - "optional": true - }, - "@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, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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 - }, - "@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, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@parcel/bundler-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.3.tgz", - "integrity": "sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.3.tgz", - "integrity": "sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==", - "dev": true, - "requires": { - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/utils": "2.8.3", - "lmdb": "2.5.2" - } - }, - "@parcel/codeframe": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.3.tgz", - "integrity": "sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==", - "dev": true, - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/compressor-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz", - "integrity": "sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/config-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.3.tgz", - "integrity": "sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==", - "dev": true, - "requires": { - "@parcel/bundler-default": "2.8.3", - "@parcel/compressor-raw": "2.8.3", - "@parcel/namer-default": "2.8.3", - "@parcel/optimizer-css": "2.8.3", - "@parcel/optimizer-htmlnano": "2.8.3", - "@parcel/optimizer-image": "2.8.3", - "@parcel/optimizer-svgo": "2.8.3", - "@parcel/optimizer-terser": "2.8.3", - "@parcel/packager-css": "2.8.3", - "@parcel/packager-html": "2.8.3", - "@parcel/packager-js": "2.8.3", - "@parcel/packager-raw": "2.8.3", - "@parcel/packager-svg": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/resolver-default": "2.8.3", - "@parcel/runtime-browser-hmr": "2.8.3", - "@parcel/runtime-js": "2.8.3", - "@parcel/runtime-react-refresh": "2.8.3", - "@parcel/runtime-service-worker": "2.8.3", - "@parcel/transformer-babel": "2.8.3", - "@parcel/transformer-css": "2.8.3", - "@parcel/transformer-html": "2.8.3", - "@parcel/transformer-image": "2.8.3", - "@parcel/transformer-js": "2.8.3", - "@parcel/transformer-json": "2.8.3", - "@parcel/transformer-postcss": "2.8.3", - "@parcel/transformer-posthtml": "2.8.3", - "@parcel/transformer-raw": "2.8.3", - "@parcel/transformer-react-refresh-wrap": "2.8.3", - "@parcel/transformer-svg": "2.8.3" - } - }, - "@parcel/core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.3.tgz", - "integrity": "sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==", - "dev": true, - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/diagnostic": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.3.tgz", - "integrity": "sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==", - "dev": true, - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/events": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.3.tgz", - "integrity": "sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==", - "dev": true - }, - "@parcel/fs": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.3.tgz", - "integrity": "sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==", - "dev": true, - "requires": { - "@parcel/fs-search": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.8.3" - } - }, - "@parcel/fs-search": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.3.tgz", - "integrity": "sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/graph": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.3.tgz", - "integrity": "sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==", - "dev": true, - "requires": { - "nullthrows": "^1.1.1" - } - }, - "@parcel/hash": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.3.tgz", - "integrity": "sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - } - }, - "@parcel/logger": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.3.tgz", - "integrity": "sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3" - } - }, - "@parcel/markdown-ansi": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz", - "integrity": "sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==", - "dev": true, - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/namer-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.3.tgz", - "integrity": "sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/node-resolver-core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz", - "integrity": "sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/optimizer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz", - "integrity": "sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/optimizer-htmlnano": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz", - "integrity": "sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz", - "integrity": "sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "detect-libc": "^1.0.3" - } - }, - "@parcel/optimizer-svgo": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz", - "integrity": "sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-terser": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz", - "integrity": "sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - } - }, - "@parcel/package-manager": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.3.tgz", - "integrity": "sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "semver": "^5.7.1" - } - }, - "@parcel/packager-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.3.tgz", - "integrity": "sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.3.tgz", - "integrity": "sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - } - }, - "@parcel/packager-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.3.tgz", - "integrity": "sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.3.tgz", - "integrity": "sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/packager-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.3.tgz", - "integrity": "sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "posthtml": "^0.16.4" - } - }, - "@parcel/plugin": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.3.tgz", - "integrity": "sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==", - "dev": true, - "requires": { - "@parcel/types": "2.8.3" - } - }, - "@parcel/reporter-cli": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz", - "integrity": "sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - } - }, - "@parcel/reporter-dev-server": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz", - "integrity": "sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - } - }, - "@parcel/resolver-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.3.tgz", - "integrity": "sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==", - "dev": true, - "requires": { - "@parcel/node-resolver-core": "2.8.3", - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/runtime-browser-hmr": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz", - "integrity": "sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - } - }, - "@parcel/runtime-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.3.tgz", - "integrity": "sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/runtime-react-refresh": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz", - "integrity": "sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - } - }, - "@parcel/runtime-service-worker": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz", - "integrity": "sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/transformer-babel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz", - "integrity": "sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - } - }, - "@parcel/transformer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.3.tgz", - "integrity": "sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.3.tgz", - "integrity": "sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1", - "srcset": "4" - } - }, - "@parcel/transformer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.3.tgz", - "integrity": "sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.3.tgz", - "integrity": "sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "@swc/helpers": "^0.4.12", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-json": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.3.tgz", - "integrity": "sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "json5": "^2.2.0" - } - }, - "@parcel/transformer-postcss": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz", - "integrity": "sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-posthtml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz", - "integrity": "sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz", - "integrity": "sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/transformer-react-refresh-wrap": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz", - "integrity": "sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-refresh": "^0.9.0" - } - }, - "@parcel/transformer-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz", - "integrity": "sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/types": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.3.tgz", - "integrity": "sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==", - "dev": true, - "requires": { - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.8.3", - "utility-types": "^3.10.0" - } - }, - "@parcel/utils": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.3.tgz", - "integrity": "sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==", - "dev": true, - "requires": { - "@parcel/codeframe": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/markdown-ansi": "2.8.3", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0" - } - }, - "@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", - "dev": true, - "requires": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - } - }, - "@parcel/workers": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", - "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - } - }, - "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dev": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@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 - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "animejs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.1.tgz", - "integrity": "sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==" - }, - "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 - }, - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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 - }, - "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 - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - }, - "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 - }, - "babel-plugin-prismjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz", - "integrity": "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==", - "dev": true, - "requires": {} - }, - "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 - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "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 - }, - "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, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "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 - } - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "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 - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", - "dev": true - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "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 - }, - "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 - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true - }, - "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, - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.332", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz", - "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==", - "dev": true - }, - "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 - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - }, - "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, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "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 - }, - "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 - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@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" - } - }, - "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 - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "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, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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 - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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, - "requires": { - "is-glob": "^4.0.1" - } - }, - "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, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "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, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "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" - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "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 - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "htmlnano": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.3.tgz", - "integrity": "sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - } - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "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, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "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 - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "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 - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "dev": true - }, - "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 - }, - "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 - }, - "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 - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "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 - }, - "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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "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 - }, - "known-css-properties": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz", - "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", - "dev": true - }, - "lightningcss": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", - "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "lightningcss-darwin-arm64": "1.19.0", - "lightningcss-darwin-x64": "1.19.0", - "lightningcss-linux-arm-gnueabihf": "1.19.0", - "lightningcss-linux-arm64-gnu": "1.19.0", - "lightningcss-linux-arm64-musl": "1.19.0", - "lightningcss-linux-x64-gnu": "1.19.0", - "lightningcss-linux-x64-musl": "1.19.0", - "lightningcss-win32-x64-msvc": "1.19.0" - } - }, - "lightningcss-darwin-arm64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", - "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", - "dev": true, - "optional": true - }, - "lightningcss-darwin-x64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", - "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm-gnueabihf": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", - "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", - "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", - "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", - "dev": true, - "optional": true - }, - "lightningcss-linux-x64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", - "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", - "dev": true, - "optional": true - }, - "lightningcss-linux-x64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", - "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", - "dev": true, - "optional": true - }, - "lightningcss-win32-x64-msvc": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", - "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", - "dev": true, - "optional": true - }, - "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 - }, - "lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "dev": true, - "requires": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2", - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "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 - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "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 - }, - "msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", - "dev": true, - "requires": { - "msgpackr-extract": "^3.0.1" - } - }, - "msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "dev": true, - "optional": true, - "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", - "node-gyp-build-optional-packages": "5.0.7" - }, - "dependencies": { - "node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "dev": true, - "optional": true - } - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true - }, - "node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "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 - }, - "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, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, - "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, - "requires": { - "wrappy": "1" - } - }, - "ordered-binary": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz", - "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parcel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.3.tgz", - "integrity": "sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==", - "dev": true, - "requires": { - "@parcel/config-default": "2.8.3", - "@parcel/core": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/reporter-cli": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - } - }, - "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, - "requires": { - "callsites": "^3.0.0" - } - }, - "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, - "requires": { - "@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" - } - }, - "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 - }, - "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 - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "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 - }, - "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 - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "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 - }, - "posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dev": true, - "requires": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "dependencies": { - "posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dev": true, - "requires": { - "htmlparser2": "^7.1.1" - } - } - } - }, - "posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dev": true, - "requires": { - "htmlparser2": "^7.1.1" - } - }, - "posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dev": true, - "requires": { - "is-json": "^2.0.1" - } - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "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 - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dev": true - }, - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "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 - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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 - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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 - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "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 - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "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, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" - }, - "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 - }, - "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 - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "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, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "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 - }, - "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, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "srcset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "dev": true - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "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, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "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, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "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 - }, - "stylelint": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.3.0.tgz", - "integrity": "sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==", - "dev": true, - "requires": { - "@csstools/css-parser-algorithms": "^2.0.1", - "@csstools/css-tokenizer": "^2.1.0", - "@csstools/media-query-list-parser": "^2.0.1", - "@csstools/selector-specificity": "^2.1.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.1.0", - "css-functions-list": "^3.1.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.27.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.21", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^5.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.2.tgz", - "integrity": "sha512-rmpUFKMZiawLfug8sP4NbpBSOpWftZB6UACOLEiNbnRAYM1TzgQuTWlMYFRuPgmoTCkcOxSMwQJQpJmiXv/eHw==", - "dev": true, - "requires": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "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, - "requires": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - } - }, - "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 - }, - "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 - } - } - }, - "stylelint-config-standard": { - "version": "31.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-31.0.0.tgz", - "integrity": "sha512-CUGAmtROCvX0YgMY2+6P9tqSkHj5z/75XxrQ8bGxvkCa1xYdGDx4poM0pa7cXc3s74/PZLJH/okxZZouRfOSGw==", - "dev": true, - "requires": { - "stylelint-config-recommended": "^11.0.0" - }, - "dependencies": { - "stylelint-config-recommended": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz", - "integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==", - "dev": true, - "requires": {} - } - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "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 - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - }, - "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, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "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 - } - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "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 - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "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 - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "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, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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 - }, - "write-file-atomic": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 6ee59ef..56f5ddc 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,13 @@ { - "name": "fipamo-dash", - "version": "2.6.1-beta", - "private": true, - "apidoc": { - "name": "Fipamo API", - "version": "1.0.0", - "description": "The most chill API for the most chill blog framework" - }, - "source": "src/com/Start.js", - "main": "public/assets/scripts/dash.js", - "targets": { - "main": { - "includeNodeModules": true - } - }, - "scripts": { - "watch": "parcel watch", - "build": "parcel build" - }, - "devDependencies": { - "@babel/core": "^7.21.3", - "babel-plugin-prismjs": "^2.1.0", - "parcel": "^2.8.3", - "prettier": "^2.8.4", - "stylelint": "^15.3.0", - "stylelint-config-standard": "^31.0.0" - }, - "dependencies": { - "animejs": "^3.2.1", - "prismjs": "^1.29.0", - "sortablejs": "^1.15.0" - } + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0.0", + "vite": "^5.0.0" + } } diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..bc86714 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" + bootstrap="vendor/autoload.php" + colors="true" +> + <testsuites> + <testsuite name="Unit"> + <directory>tests/Unit</directory> + </testsuite> + <testsuite name="Feature"> + <directory>tests/Feature</directory> + </testsuite> + </testsuites> + <source> + <include> + <directory>app</directory> + </include> + </source> + <php> + <env name="APP_ENV" value="testing"/> + <env name="BCRYPT_ROUNDS" value="4"/> + <env name="CACHE_DRIVER" value="array"/> + <!-- <env name="DB_CONNECTION" value="sqlite"/> --> + <!-- <env name="DB_DATABASE" value=":memory:"/> --> + <env name="MAIL_MAILER" value="array"/> + <env name="PULSE_ENABLED" value="false"/> + <env name="QUEUE_CONNECTION" value="sync"/> + <env name="SESSION_DRIVER" value="array"/> + <env name="TELESCOPE_ENABLED" value="false"/> + </php> +</phpunit> diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ +<IfModule mod_rewrite.c> + <IfModule mod_negotiation.c> + Options -MultiViews -Indexes + </IfModule> + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] +</IfModule> diff --git a/public/assets/css/dash/book.css b/public/assets/css/dash/book.css deleted file mode 100644 index 04c61bd..0000000 --- a/public/assets/css/dash/book.css +++ /dev/null @@ -1,109 +0,0 @@ -section[role="book-index-header"] { - display: grid; - grid-template-columns: 1fr 1fr; - margin: 100px auto 20px; - width: 100%; - max-width: 900px; -} - -section[role="book-index-header"] > div[role="book-index-header-left"] { - text-transform: capitalize; - display: inline-block; - color: var(--white); - font-size: 3em; -} - -section[role="book-index-header"] > div[role="book-index-header-right"] { - text-align: right; - display: inline-block; -} - -section[role="book-index-pages"] { - margin: 0 auto; - width: 100%; - max-width: 900px; -} - -section[role="book-index-pages"] > a.page-link { - vertical-align: top; - display: inline-block; - width: 100%; - text-decoration: none; - margin: 0 0 20px; - border-radius: 3px; - height: 350px; - overflow: hidden; -} - -section[role="book-index-pages"] > a.page-link div.page-video { - width: 100%; - height: 350px; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[role="book-index-pages"] > a.page-link video { - width: 100%; - height: 100%; - position: absolute; - object-fit: cover; -} - -section[role="book-index-pages"] > a.page-link > div.page-bg { - width: 100%; - height: 350px; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[role="book-index-pages"] aside { - font-size: 1.1em; - color: var(--white); - text-shadow: 2px 2px 2px var(--black); - padding: 10px; - position: relative; -} - -section[role="book-index-pages"] hr { - color: var(--white); - border: 0.1px solid; - margin: 7px 0; -} - -section[role="book-index-pages"] button[data-active="true"] { - background: var(--primary); - color: var(--tertiary); -} - -section[role="book-index-pages"] button[data-active="false"] { - background: var(--secondary); -} - -section[role="book-index-pages"] > div[role="paginate"] { - width: fit-content; - margin: 0 auto; - font-size: 1.5em; - color: var(--highlight); -} - -section[role="book-index-pages"] > div[role="paginate"] i { - color: var(--secondary); -} - -section[role="book-index-pages"] > div[role="paginate"] a, -section[role="book-index-pages"] > div[role="paginate"] span { - display: inline; -} - -section[role="book-index-pages"] > div[role="paginate"] span { - position: relative; - top: -15px; -} diff --git a/public/assets/css/dash/colors.css b/public/assets/css/dash/colors.css deleted file mode 100644 index ea01601..0000000 --- a/public/assets/css/dash/colors.css +++ /dev/null @@ -1,22 +0,0 @@ -:root { - /* BASE COLORS */ - --primary: #1d3040; - --secondary: #b2cce5; - --tertiary: #f5ab35; - --highlight: #fc6399; - --white: #efebe3; - --grey: #abb7b7; - --black: #32302f; - - /* EDITOR COLORS */ - --event-cool: #32cd32; - --event-lame: #f64747; - --editor-primary: #fde3a7; - --editor-secondary: #e7903c; - --editor-tertiary: #6bb9f0; - --editor-string: #dcc6e0; - --editor-tag: #e73c4e; - - /* RGB Versions */ - --primary-rgb: 29 28 24; -} diff --git a/public/assets/css/dash/forms.css b/public/assets/css/dash/forms.css deleted file mode 100644 index 222abfe..0000000 --- a/public/assets/css/dash/forms.css +++ /dev/null @@ -1,54 +0,0 @@ -a { - color: var(--primary); -} - -p { - background: var(--tertiary); - color: var(--primary); - padding: 5px; - display: block; - border-radius: 5px; - text-align: left; -} - -input[type="email"], -input[type="password"], -input[type="text"] { - border: 0; - border-radius: 5px; - font: 18px var(--base-type); - display: inline-block; - background: var(--white); - color: var(--primary); -} - -textarea { - border: 0; - border-radius: 3px; - color: var(--primary); - background: var(--white); -} - -button, -input[type="submit"] { - background: var(--highlight); - color: var(--primary); - font: 20px var(--base-type); - border-radius: 5px; - position: relative; - cursor: pointer; - border: 0; - transition: all 0.3s linear; -} - -select { - font: 14px var(--base-type); - border: 1px solid var(--secondary); - appearance: none; - color: var(--primary); -} - -::placeholder { - font: 25px var(--base-type); - color: var(--black); -} diff --git a/public/assets/css/dash/frame.css b/public/assets/css/dash/frame.css deleted file mode 100644 index 8dca897..0000000 --- a/public/assets/css/dash/frame.css +++ /dev/null @@ -1,147 +0,0 @@ -html { - width: 100%; - height: 100%; - overflow: hidden; - font: 400 1.2em/1.4em var(--base-type); -} - -html body { - background: var(--primary); - margin: 0; - padding: 0; - height: 100%; - width: 100%; - overflow-y: scroll; - overflow-x: hidden; -} - -/* GLOBALS */ - -a { - color: var(--primary); - text-decoration: none; - border-bottom: 0; - transition: all 0.2s linear; -} - -sup { - background: var(--black); - color: var(--white); - padding: 3px; - border-radius: 3px; -} - -::selection { - background: var(--highlight); - color: var(--white); -} - -#notifications { - display: none; - visibility: hidden; -} - -pre, -code { - background: var(--black); - color: var(--highlight); - border-radius: 3px; - padding: 3px; -} - -svg[role="icon"] { - fill: var(--white); - width: 25px; - height: 25px; - padding-top: 5px; -} - -/* HEADER - Navigation - Notificiations -*/ - -header { - width: 100%; - max-width: 900px; - margin: 10px auto; - height: 50px; - border-radius: 5px; - left: 50%; - transform: translate(-50%, 0); - position: fixed; - z-index: 500; -} - -header > nav > a img { - width: 40px; - padding: 5px; -} - -header > nav > h1 { - text-align: left; - height: 100%; -} - -header > nav > h1 { - color: var(--primary); - margin: 15px; -} - -header > nav > div.nav-right { - padding: 5px; -} - -header > nav > div > div.mobile-menu { - display: none; - position: fixed; - z-index: 1000; - left: 0; - transition: all 0.2s linear; - background: var(--white); -} - -header > nav > div.nav-right button { - width: 40px; - height: 40px; - margin-left: 5px; - font-size: 0.8em; - color: var(--white); -} - -header > nav > div.nav-right > button.menu-toggle { - display: none; -} - -header > nav > div.nav-right div.submenu { - display: inline; -} - -header > nav > div.nav-right div.submenu button { - background: var(--primary); - color: var(--white); - font-size: 0.8em; -} - -header > nav > div.nav-right div.submenu button[data-render="true"] { - background: var(--tertiary); - color: var(--primary); -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 900px) { - header { - width: 97%; - } -} - -@media only screen and (max-width: 530px) { - header > nav > div.nav-right > button.menu-toggle { - display: inline; - } - - header > nav > div > div.menu { - display: none; - } -} diff --git a/public/assets/css/dash/icons.css b/public/assets/css/dash/icons.css deleted file mode 100644 index 7ca7f61..0000000 --- a/public/assets/css/dash/icons.css +++ /dev/null @@ -1,11149 +0,0 @@ -/*! - * Tabler Icons 1.101.0 by tabler - https://tabler.io - * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE - */ -@font-face { - font-family: tabler-icons; - font-style: normal; - font-weight: 400; - src: url("type/tabler-icons.woff") format("woff"), - url("type/tabler-icons.ttf") format("truetype"); -} - -.ti { - font-family: tabler-icons !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - font-size: 2em; - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ti-2fa:before { - content: "\eca0"; -} - -.ti-3d-cube-sphere:before { - content: "\ecd7"; -} - -.ti-3d-cube-sphere-off:before { - content: "\f3b5"; -} - -.ti-3d-rotate:before { - content: "\f020"; -} - -.ti-a-b:before { - content: "\ec36"; -} - -.ti-a-b-2:before { - content: "\f25f"; -} - -.ti-a-b-off:before { - content: "\f0a6"; -} - -.ti-abacus:before { - content: "\f05c"; -} - -.ti-abacus-off:before { - content: "\f3b6"; -} - -.ti-access-point:before { - content: "\ed1b"; -} - -.ti-access-point-off:before { - content: "\ed1a"; -} - -.ti-accessible:before { - content: "\eba9"; -} - -.ti-accessible-off:before { - content: "\f0a7"; -} - -.ti-activity:before { - content: "\ed23"; -} - -.ti-activity-heartbeat:before { - content: "\f0db"; -} - -.ti-ad:before { - content: "\ea02"; -} - -.ti-ad-2:before { - content: "\ef1f"; -} - -.ti-ad-off:before { - content: "\f3b7"; -} - -.ti-address-book:before { - content: "\f021"; -} - -.ti-address-book-off:before { - content: "\f3b8"; -} - -.ti-adjustments:before { - content: "\ea03"; -} - -.ti-adjustments-alt:before { - content: "\ec37"; -} - -.ti-adjustments-horizontal:before { - content: "\ec38"; -} - -.ti-adjustments-off:before { - content: "\f0a8"; -} - -.ti-aerial-lift:before { - content: "\edfe"; -} - -.ti-affiliate:before { - content: "\edff"; -} - -.ti-air-balloon:before { - content: "\f4a6"; -} - -.ti-air-conditioning:before { - content: "\f3a2"; -} - -.ti-alarm:before { - content: "\ea04"; -} - -.ti-alarm-off:before { - content: "\f0a9"; -} - -.ti-album:before { - content: "\f022"; -} - -.ti-album-off:before { - content: "\f3b9"; -} - -.ti-alert-circle:before { - content: "\ea05"; -} - -.ti-alert-octagon:before { - content: "\ecc6"; -} - -.ti-alert-triangle:before { - content: "\ea06"; -} - -.ti-alien:before { - content: "\ebde"; -} - -.ti-align-center:before { - content: "\ea07"; -} - -.ti-align-justified:before { - content: "\ea08"; -} - -.ti-align-left:before { - content: "\ea09"; -} - -.ti-align-right:before { - content: "\ea0a"; -} - -.ti-alphabet-cyrillic:before { - content: "\f1df"; -} - -.ti-alphabet-greek:before { - content: "\f1e0"; -} - -.ti-alphabet-latin:before { - content: "\f1e1"; -} - -.ti-ambulance:before { - content: "\ebf5"; -} - -.ti-ampersand:before { - content: "\f229"; -} - -.ti-analyze:before { - content: "\f3a3"; -} - -.ti-analyze-off:before { - content: "\f3ba"; -} - -.ti-anchor:before { - content: "\eb76"; -} - -.ti-anchor-off:before { - content: "\f0f7"; -} - -.ti-angle:before { - content: "\ef20"; -} - -.ti-ankh:before { - content: "\f1cd"; -} - -.ti-antenna:before { - content: "\f094"; -} - -.ti-antenna-bars-1:before { - content: "\ecc7"; -} - -.ti-antenna-bars-2:before { - content: "\ecc8"; -} - -.ti-antenna-bars-3:before { - content: "\ecc9"; -} - -.ti-antenna-bars-4:before { - content: "\ecca"; -} - -.ti-antenna-bars-5:before { - content: "\eccb"; -} - -.ti-antenna-bars-off:before { - content: "\f0aa"; -} - -.ti-antenna-off:before { - content: "\f3bb"; -} - -.ti-aperture:before { - content: "\eb58"; -} - -.ti-aperture-off:before { - content: "\f3bc"; -} - -.ti-api:before { - content: "\effd"; -} - -.ti-api-app:before { - content: "\effc"; -} - -.ti-api-app-off:before { - content: "\f0ab"; -} - -.ti-api-off:before { - content: "\f0f8"; -} - -.ti-app-window:before { - content: "\efe6"; -} - -.ti-apple:before { - content: "\ef21"; -} - -.ti-apps:before { - content: "\ebb6"; -} - -.ti-apps-off:before { - content: "\f0ac"; -} - -.ti-archive:before { - content: "\ea0b"; -} - -.ti-archive-off:before { - content: "\f0ad"; -} - -.ti-armchair:before { - content: "\ef9e"; -} - -.ti-armchair-2:before { - content: "\efe7"; -} - -.ti-armchair-2-off:before { - content: "\f3bd"; -} - -.ti-armchair-off:before { - content: "\f3be"; -} - -.ti-arrow-autofit-content:before { - content: "\ef31"; -} - -.ti-arrow-autofit-down:before { - content: "\ef32"; -} - -.ti-arrow-autofit-height:before { - content: "\ef33"; -} - -.ti-arrow-autofit-left:before { - content: "\ef34"; -} - -.ti-arrow-autofit-right:before { - content: "\ef35"; -} - -.ti-arrow-autofit-up:before { - content: "\ef36"; -} - -.ti-arrow-autofit-width:before { - content: "\ef37"; -} - -.ti-arrow-back:before { - content: "\ea0c"; -} - -.ti-arrow-back-up:before { - content: "\eb77"; -} - -.ti-arrow-bar-down:before { - content: "\ea0d"; -} - -.ti-arrow-bar-left:before { - content: "\ea0e"; -} - -.ti-arrow-bar-right:before { - content: "\ea0f"; -} - -.ti-arrow-bar-to-down:before { - content: "\ec88"; -} - -.ti-arrow-bar-to-left:before { - content: "\ec89"; -} - -.ti-arrow-bar-to-right:before { - content: "\ec8a"; -} - -.ti-arrow-bar-to-up:before { - content: "\ec8b"; -} - -.ti-arrow-bar-up:before { - content: "\ea10"; -} - -.ti-arrow-bear-left:before { - content: "\f045"; -} - -.ti-arrow-bear-left-2:before { - content: "\f044"; -} - -.ti-arrow-bear-right:before { - content: "\f047"; -} - -.ti-arrow-bear-right-2:before { - content: "\f046"; -} - -.ti-arrow-big-down:before { - content: "\edda"; -} - -.ti-arrow-big-down-line:before { - content: "\efe8"; -} - -.ti-arrow-big-down-lines:before { - content: "\efe9"; -} - -.ti-arrow-big-left:before { - content: "\eddb"; -} - -.ti-arrow-big-left-line:before { - content: "\efea"; -} - -.ti-arrow-big-left-lines:before { - content: "\efeb"; -} - -.ti-arrow-big-right:before { - content: "\eddc"; -} - -.ti-arrow-big-right-line:before { - content: "\efec"; -} - -.ti-arrow-big-right-lines:before { - content: "\efed"; -} - -.ti-arrow-big-top:before { - content: "\eddd"; -} - -.ti-arrow-big-up-line:before { - content: "\efee"; -} - -.ti-arrow-big-up-lines:before { - content: "\efef"; -} - -.ti-arrow-bounce:before { - content: "\f3a4"; -} - -.ti-arrow-curve-left:before { - content: "\f048"; -} - -.ti-arrow-curve-right:before { - content: "\f049"; -} - -.ti-arrow-down:before { - content: "\ea16"; -} - -.ti-arrow-down-bar:before { - content: "\ed98"; -} - -.ti-arrow-down-circle:before { - content: "\ea11"; -} - -.ti-arrow-down-left:before { - content: "\ea13"; -} - -.ti-arrow-down-left-circle:before { - content: "\ea12"; -} - -.ti-arrow-down-right:before { - content: "\ea15"; -} - -.ti-arrow-down-right-circle:before { - content: "\ea14"; -} - -.ti-arrow-down-square:before { - content: "\ed9a"; -} - -.ti-arrow-down-tail:before { - content: "\ed9b"; -} - -.ti-arrow-fork:before { - content: "\f04a"; -} - -.ti-arrow-forward:before { - content: "\ea17"; -} - -.ti-arrow-forward-up:before { - content: "\eb78"; -} - -.ti-arrow-guide:before { - content: "\f22a"; -} - -.ti-arrow-left:before { - content: "\ea19"; -} - -.ti-arrow-left-bar:before { - content: "\ed9c"; -} - -.ti-arrow-left-circle:before { - content: "\ea18"; -} - -.ti-arrow-left-right:before { - content: "\f04b"; -} - -.ti-arrow-left-square:before { - content: "\ed9d"; -} - -.ti-arrow-left-tail:before { - content: "\ed9e"; -} - -.ti-arrow-loop-left:before { - content: "\ed9f"; -} - -.ti-arrow-loop-left-2:before { - content: "\f04c"; -} - -.ti-arrow-loop-right:before { - content: "\eda0"; -} - -.ti-arrow-loop-right-2:before { - content: "\f04d"; -} - -.ti-arrow-merge:before { - content: "\f04e"; -} - -.ti-arrow-merge-both:before { - content: "\f23b"; -} - -.ti-arrow-merge-left:before { - content: "\f23c"; -} - -.ti-arrow-merge-right:before { - content: "\f23d"; -} - -.ti-arrow-move-down:before { - content: "\f2ba"; -} - -.ti-arrow-move-left:before { - content: "\f2bb"; -} - -.ti-arrow-move-right:before { - content: "\f2bc"; -} - -.ti-arrow-move-up:before { - content: "\f2bd"; -} - -.ti-arrow-narrow-down:before { - content: "\ea1a"; -} - -.ti-arrow-narrow-left:before { - content: "\ea1b"; -} - -.ti-arrow-narrow-right:before { - content: "\ea1c"; -} - -.ti-arrow-narrow-up:before { - content: "\ea1d"; -} - -.ti-arrow-ramp-left:before { - content: "\ed3c"; -} - -.ti-arrow-ramp-left-2:before { - content: "\f04f"; -} - -.ti-arrow-ramp-left-3:before { - content: "\f050"; -} - -.ti-arrow-ramp-right:before { - content: "\ed3d"; -} - -.ti-arrow-ramp-right-2:before { - content: "\f051"; -} - -.ti-arrow-ramp-right-3:before { - content: "\f052"; -} - -.ti-arrow-right:before { - content: "\ea1f"; -} - -.ti-arrow-right-bar:before { - content: "\eda1"; -} - -.ti-arrow-right-circle:before { - content: "\ea1e"; -} - -.ti-arrow-right-square:before { - content: "\eda2"; -} - -.ti-arrow-right-tail:before { - content: "\eda3"; -} - -.ti-arrow-rotary-first-left:before { - content: "\f053"; -} - -.ti-arrow-rotary-first-right:before { - content: "\f054"; -} - -.ti-arrow-rotary-last-left:before { - content: "\f055"; -} - -.ti-arrow-rotary-last-right:before { - content: "\f056"; -} - -.ti-arrow-rotary-left:before { - content: "\f057"; -} - -.ti-arrow-rotary-right:before { - content: "\f058"; -} - -.ti-arrow-rotary-straight:before { - content: "\f059"; -} - -.ti-arrow-roundabout-left:before { - content: "\f22b"; -} - -.ti-arrow-roundabout-right:before { - content: "\f22c"; -} - -.ti-arrow-sharp-turn-left:before { - content: "\f05a"; -} - -.ti-arrow-sharp-turn-right:before { - content: "\f05b"; -} - -.ti-arrow-up:before { - content: "\ea25"; -} - -.ti-arrow-up-bar:before { - content: "\eda4"; -} - -.ti-arrow-up-circle:before { - content: "\ea20"; -} - -.ti-arrow-up-left:before { - content: "\ea22"; -} - -.ti-arrow-up-left-circle:before { - content: "\ea21"; -} - -.ti-arrow-up-right:before { - content: "\ea24"; -} - -.ti-arrow-up-right-circle:before { - content: "\ea23"; -} - -.ti-arrow-up-square:before { - content: "\eda6"; -} - -.ti-arrow-up-tail:before { - content: "\eda7"; -} - -.ti-arrow-wave-left-down:before { - content: "\eda8"; -} - -.ti-arrow-wave-left-up:before { - content: "\eda9"; -} - -.ti-arrow-wave-right-down:before { - content: "\edaa"; -} - -.ti-arrow-wave-right-up:before { - content: "\edab"; -} - -.ti-arrow-zig-zag:before { - content: "\f4a7"; -} - -.ti-arrows-cross:before { - content: "\effe"; -} - -.ti-arrows-diagonal:before { - content: "\ea27"; -} - -.ti-arrows-diagonal-2:before { - content: "\ea26"; -} - -.ti-arrows-diagonal-minimize:before { - content: "\ef39"; -} - -.ti-arrows-diagonal-minimize-2:before { - content: "\ef38"; -} - -.ti-arrows-diff:before { - content: "\f296"; -} - -.ti-arrows-double-ne-sw:before { - content: "\edde"; -} - -.ti-arrows-double-nw-se:before { - content: "\eddf"; -} - -.ti-arrows-double-se-nw:before { - content: "\ede0"; -} - -.ti-arrows-double-sw-ne:before { - content: "\ede1"; -} - -.ti-arrows-down:before { - content: "\edad"; -} - -.ti-arrows-down-up:before { - content: "\edac"; -} - -.ti-arrows-exchange:before { - content: "\f1f4"; -} - -.ti-arrows-exchange-2:before { - content: "\f1f3"; -} - -.ti-arrows-horizontal:before { - content: "\eb59"; -} - -.ti-arrows-join:before { - content: "\edaf"; -} - -.ti-arrows-join-2:before { - content: "\edae"; -} - -.ti-arrows-left:before { - content: "\edb1"; -} - -.ti-arrows-left-down:before { - content: "\ee00"; -} - -.ti-arrows-left-right:before { - content: "\edb0"; -} - -.ti-arrows-maximize:before { - content: "\ea28"; -} - -.ti-arrows-minimize:before { - content: "\ea29"; -} - -.ti-arrows-move:before { - content: "\f22f"; -} - -.ti-arrows-move-horizontal:before { - content: "\f22d"; -} - -.ti-arrows-move-vertical:before { - content: "\f22e"; -} - -.ti-arrows-random:before { - content: "\f095"; -} - -.ti-arrows-right:before { - content: "\edb3"; -} - -.ti-arrows-right-down:before { - content: "\ee01"; -} - -.ti-arrows-right-left:before { - content: "\edb2"; -} - -.ti-arrows-shuffle:before { - content: "\f000"; -} - -.ti-arrows-shuffle-2:before { - content: "\efff"; -} - -.ti-arrows-sort:before { - content: "\eb5a"; -} - -.ti-arrows-split:before { - content: "\edb5"; -} - -.ti-arrows-split-2:before { - content: "\edb4"; -} - -.ti-arrows-transfer-down:before { - content: "\f2cc"; -} - -.ti-arrows-transfer-up:before { - content: "\f2cd"; -} - -.ti-arrows-up:before { - content: "\edb7"; -} - -.ti-arrows-up-down:before { - content: "\edb6"; -} - -.ti-arrows-up-left:before { - content: "\ee02"; -} - -.ti-arrows-up-right:before { - content: "\ee03"; -} - -.ti-arrows-vertical:before { - content: "\eb5b"; -} - -.ti-artboard:before { - content: "\ea2a"; -} - -.ti-artboard-off:before { - content: "\f0ae"; -} - -.ti-article:before { - content: "\f1e2"; -} - -.ti-article-off:before { - content: "\f3bf"; -} - -.ti-aspect-ratio:before { - content: "\ed30"; -} - -.ti-aspect-ratio-off:before { - content: "\f0af"; -} - -.ti-assembly:before { - content: "\f24d"; -} - -.ti-assembly-off:before { - content: "\f3c0"; -} - -.ti-asset:before { - content: "\f1ce"; -} - -.ti-asterisk:before { - content: "\efd5"; -} - -.ti-asterisk-simple:before { - content: "\efd4"; -} - -.ti-at:before { - content: "\ea2b"; -} - -.ti-at-off:before { - content: "\f0b0"; -} - -.ti-atom:before { - content: "\eb79"; -} - -.ti-atom-2:before { - content: "\ebdf"; -} - -.ti-atom-off:before { - content: "\f0f9"; -} - -.ti-augmented-reality:before { - content: "\f023"; -} - -.ti-augmented-reality-2:before { - content: "\f37e"; -} - -.ti-augmented-reality-off:before { - content: "\f3c1"; -} - -.ti-award:before { - content: "\ea2c"; -} - -.ti-award-off:before { - content: "\f0fa"; -} - -.ti-axe:before { - content: "\ef9f"; -} - -.ti-axis-x:before { - content: "\ef45"; -} - -.ti-axis-y:before { - content: "\ef46"; -} - -.ti-baby-carriage:before { - content: "\f05d"; -} - -.ti-backhoe:before { - content: "\ed86"; -} - -.ti-backpack:before { - content: "\ef47"; -} - -.ti-backpack-off:before { - content: "\f3c2"; -} - -.ti-backspace:before { - content: "\ea2d"; -} - -.ti-badge:before { - content: "\efc2"; -} - -.ti-badge-off:before { - content: "\f0fb"; -} - -.ti-badges:before { - content: "\efc3"; -} - -.ti-badges-off:before { - content: "\f0fc"; -} - -.ti-baguette:before { - content: "\f3a5"; -} - -.ti-ball-american-football:before { - content: "\ee04"; -} - -.ti-ball-american-football-off:before { - content: "\f3c3"; -} - -.ti-ball-baseball:before { - content: "\efa0"; -} - -.ti-ball-basketball:before { - content: "\ec28"; -} - -.ti-ball-bowling:before { - content: "\ec29"; -} - -.ti-ball-football:before { - content: "\ee06"; -} - -.ti-ball-football-off:before { - content: "\ee05"; -} - -.ti-ball-tennis:before { - content: "\ec2a"; -} - -.ti-ball-volleyball:before { - content: "\ec2b"; -} - -.ti-ballon:before { - content: "\ef3a"; -} - -.ti-ballon-off:before { - content: "\f0fd"; -} - -.ti-ballpen:before { - content: "\f06e"; -} - -.ti-ballpen-off:before { - content: "\f0b1"; -} - -.ti-ban:before { - content: "\ea2e"; -} - -.ti-bandage:before { - content: "\eb7a"; -} - -.ti-bandage-off:before { - content: "\f3c4"; -} - -.ti-barbell:before { - content: "\eff0"; -} - -.ti-barbell-off:before { - content: "\f0b2"; -} - -.ti-barcode:before { - content: "\ebc6"; -} - -.ti-barcode-off:before { - content: "\f0b3"; -} - -.ti-barrel:before { - content: "\f0b4"; -} - -.ti-barrel-off:before { - content: "\f0fe"; -} - -.ti-barrier-block:before { - content: "\f00e"; -} - -.ti-barrier-block-off:before { - content: "\f0b5"; -} - -.ti-baseline:before { - content: "\f024"; -} - -.ti-basket:before { - content: "\ebe1"; -} - -.ti-basket-off:before { - content: "\f0b6"; -} - -.ti-bat:before { - content: "\f284"; -} - -.ti-bath:before { - content: "\ef48"; -} - -.ti-bath-off:before { - content: "\f0ff"; -} - -.ti-battery:before { - content: "\ea34"; -} - -.ti-battery-1:before { - content: "\ea2f"; -} - -.ti-battery-2:before { - content: "\ea30"; -} - -.ti-battery-3:before { - content: "\ea31"; -} - -.ti-battery-4:before { - content: "\ea32"; -} - -.ti-battery-automotive:before { - content: "\ee07"; -} - -.ti-battery-charging:before { - content: "\ea33"; -} - -.ti-battery-charging-2:before { - content: "\ef3b"; -} - -.ti-battery-eco:before { - content: "\ef3c"; -} - -.ti-battery-off:before { - content: "\ed1c"; -} - -.ti-beach:before { - content: "\ef3d"; -} - -.ti-beach-off:before { - content: "\f0b7"; -} - -.ti-bed:before { - content: "\eb5c"; -} - -.ti-bed-off:before { - content: "\f100"; -} - -.ti-beer:before { - content: "\efa1"; -} - -.ti-beer-off:before { - content: "\f101"; -} - -.ti-bell:before { - content: "\ea35"; -} - -.ti-bell-minus:before { - content: "\ede2"; -} - -.ti-bell-off:before { - content: "\ece9"; -} - -.ti-bell-plus:before { - content: "\ede3"; -} - -.ti-bell-ringing:before { - content: "\ed07"; -} - -.ti-bell-ringing-2:before { - content: "\ede4"; -} - -.ti-bell-school:before { - content: "\f05e"; -} - -.ti-bell-x:before { - content: "\ede5"; -} - -.ti-bell-z:before { - content: "\eff1"; -} - -.ti-bible:before { - content: "\efc4"; -} - -.ti-bike:before { - content: "\ea36"; -} - -.ti-bike-off:before { - content: "\f0b8"; -} - -.ti-binary:before { - content: "\ee08"; -} - -.ti-binary-off:before { - content: "\f3c5"; -} - -.ti-biohazard:before { - content: "\ecb8"; -} - -.ti-biohazard-off:before { - content: "\f0b9"; -} - -.ti-blade:before { - content: "\f4bd"; -} - -.ti-bleach:before { - content: "\f2f3"; -} - -.ti-bleach-chlorine:before { - content: "\f2f0"; -} - -.ti-bleach-no-chlorine:before { - content: "\f2f1"; -} - -.ti-bleach-off:before { - content: "\f2f2"; -} - -.ti-blockquote:before { - content: "\ee09"; -} - -.ti-bluetooth:before { - content: "\ea37"; -} - -.ti-bluetooth-connected:before { - content: "\ecea"; -} - -.ti-bluetooth-off:before { - content: "\eceb"; -} - -.ti-bluetooth-x:before { - content: "\f081"; -} - -.ti-blur:before { - content: "\ef8c"; -} - -.ti-blur-off:before { - content: "\f3c6"; -} - -.ti-bmp:before { - content: "\f3a6"; -} - -.ti-bold:before { - content: "\eb7b"; -} - -.ti-bold-off:before { - content: "\f0ba"; -} - -.ti-bolt:before { - content: "\ea38"; -} - -.ti-bolt-off:before { - content: "\ecec"; -} - -.ti-bone:before { - content: "\edb8"; -} - -.ti-bone-off:before { - content: "\f0bb"; -} - -.ti-bong:before { - content: "\f3a7"; -} - -.ti-bong-off:before { - content: "\f3c7"; -} - -.ti-book:before { - content: "\ea39"; -} - -.ti-book-2:before { - content: "\efc5"; -} - -.ti-book-download:before { - content: "\f070"; -} - -.ti-book-off:before { - content: "\f0bc"; -} - -.ti-book-upload:before { - content: "\f071"; -} - -.ti-bookmark:before { - content: "\ea3a"; -} - -.ti-bookmark-off:before { - content: "\eced"; -} - -.ti-bookmarks:before { - content: "\ed08"; -} - -.ti-bookmarks-off:before { - content: "\f0bd"; -} - -.ti-books:before { - content: "\eff2"; -} - -.ti-books-off:before { - content: "\f0be"; -} - -.ti-border-all:before { - content: "\ea3b"; -} - -.ti-border-bottom:before { - content: "\ea3c"; -} - -.ti-border-horizontal:before { - content: "\ea3d"; -} - -.ti-border-inner:before { - content: "\ea3e"; -} - -.ti-border-left:before { - content: "\ea3f"; -} - -.ti-border-none:before { - content: "\ea40"; -} - -.ti-border-outer:before { - content: "\ea41"; -} - -.ti-border-radius:before { - content: "\eb7c"; -} - -.ti-border-right:before { - content: "\ea42"; -} - -.ti-border-style:before { - content: "\ee0a"; -} - -.ti-border-style-2:before { - content: "\ef22"; -} - -.ti-border-top:before { - content: "\ea43"; -} - -.ti-border-vertical:before { - content: "\ea44"; -} - -.ti-bottle:before { - content: "\ef0b"; -} - -.ti-bottle-off:before { - content: "\f3c8"; -} - -.ti-bow:before { - content: "\f096"; -} - -.ti-bowl:before { - content: "\f4fa"; -} - -.ti-box:before { - content: "\ea45"; -} - -.ti-box-align-bottom:before { - content: "\f2a8"; -} - -.ti-box-align-bottom-left:before { - content: "\f2ce"; -} - -.ti-box-align-bottom-right:before { - content: "\f2cf"; -} - -.ti-box-align-left:before { - content: "\f2a9"; -} - -.ti-box-align-right:before { - content: "\f2aa"; -} - -.ti-box-align-top:before { - content: "\f2ab"; -} - -.ti-box-align-top-left:before { - content: "\f2d0"; -} - -.ti-box-align-top-right:before { - content: "\f2d1"; -} - -.ti-box-margin:before { - content: "\ee0b"; -} - -.ti-box-model:before { - content: "\ee0c"; -} - -.ti-box-model-2:before { - content: "\ef23"; -} - -.ti-box-model-2-off:before { - content: "\f3c9"; -} - -.ti-box-model-off:before { - content: "\f3ca"; -} - -.ti-box-multiple:before { - content: "\ee17"; -} - -.ti-box-multiple-0:before { - content: "\ee0d"; -} - -.ti-box-multiple-1:before { - content: "\ee0e"; -} - -.ti-box-multiple-2:before { - content: "\ee0f"; -} - -.ti-box-multiple-3:before { - content: "\ee10"; -} - -.ti-box-multiple-4:before { - content: "\ee11"; -} - -.ti-box-multiple-5:before { - content: "\ee12"; -} - -.ti-box-multiple-6:before { - content: "\ee13"; -} - -.ti-box-multiple-7:before { - content: "\ee14"; -} - -.ti-box-multiple-8:before { - content: "\ee15"; -} - -.ti-box-multiple-9:before { - content: "\ee16"; -} - -.ti-box-off:before { - content: "\f102"; -} - -.ti-box-padding:before { - content: "\ee18"; -} - -.ti-braces:before { - content: "\ebcc"; -} - -.ti-braces-off:before { - content: "\f0bf"; -} - -.ti-brackets:before { - content: "\ebcd"; -} - -.ti-brackets-contain:before { - content: "\f1e5"; -} - -.ti-brackets-contain-end:before { - content: "\f1e3"; -} - -.ti-brackets-contain-start:before { - content: "\f1e4"; -} - -.ti-brackets-off:before { - content: "\f0c0"; -} - -.ti-brand-4chan:before { - content: "\f494"; -} - -.ti-brand-abstract:before { - content: "\f495"; -} - -.ti-brand-adobe:before { - content: "\f0dc"; -} - -.ti-brand-adonis-js:before { - content: "\f496"; -} - -.ti-brand-airbnb:before { - content: "\ed68"; -} - -.ti-brand-airtable:before { - content: "\ef6a"; -} - -.ti-brand-algolia:before { - content: "\f390"; -} - -.ti-brand-alpine-js:before { - content: "\f324"; -} - -.ti-brand-amazon:before { - content: "\f230"; -} - -.ti-brand-amongus:before { - content: "\f205"; -} - -.ti-brand-android:before { - content: "\ec16"; -} - -.ti-brand-angular:before { - content: "\ef6b"; -} - -.ti-brand-appgallery:before { - content: "\f231"; -} - -.ti-brand-apple:before { - content: "\ec17"; -} - -.ti-brand-apple-arcade:before { - content: "\ed69"; -} - -.ti-brand-apple-podcast:before { - content: "\f1e6"; -} - -.ti-brand-appstore:before { - content: "\ed24"; -} - -.ti-brand-asana:before { - content: "\edc5"; -} - -.ti-brand-backbone:before { - content: "\f325"; -} - -.ti-brand-badoo:before { - content: "\f206"; -} - -.ti-brand-bandcamp:before { - content: "\f207"; -} - -.ti-brand-beats:before { - content: "\f208"; -} - -.ti-brand-behance:before { - content: "\ec6e"; -} - -.ti-brand-bing:before { - content: "\edc6"; -} - -.ti-brand-bitbucket:before { - content: "\edc7"; -} - -.ti-brand-blender:before { - content: "\f326"; -} - -.ti-brand-blogger:before { - content: "\f35a"; -} - -.ti-brand-booking:before { - content: "\edc8"; -} - -.ti-brand-bootstrap:before { - content: "\ef3e"; -} - -.ti-brand-bulma:before { - content: "\f327"; -} - -.ti-brand-bunpo:before { - content: "\f4cf"; -} - -.ti-brand-campaignmonitor:before { - content: "\f328"; -} - -.ti-brand-carbon:before { - content: "\f348"; -} - -.ti-brand-cashapp:before { - content: "\f391"; -} - -.ti-brand-chrome:before { - content: "\ec18"; -} - -.ti-brand-codecov:before { - content: "\f329"; -} - -.ti-brand-codepen:before { - content: "\ec6f"; -} - -.ti-brand-codesandbox:before { - content: "\ed6a"; -} - -.ti-brand-coinbase:before { - content: "\f209"; -} - -.ti-brand-comedy-central:before { - content: "\f217"; -} - -.ti-brand-couchsurfing:before { - content: "\f392"; -} - -.ti-brand-css3:before { - content: "\ed6b"; -} - -.ti-brand-ctemplar:before { - content: "\f4d0"; -} - -.ti-brand-cucumber:before { - content: "\ef6c"; -} - -.ti-brand-cupra:before { - content: "\f4d1"; -} - -.ti-brand-cypress:before { - content: "\f333"; -} - -.ti-brand-d3:before { - content: "\f24e"; -} - -.ti-brand-days-counter:before { - content: "\f4d2"; -} - -.ti-brand-dcos:before { - content: "\f32a"; -} - -.ti-brand-debian:before { - content: "\ef57"; -} - -.ti-brand-deliveroo:before { - content: "\f4d3"; -} - -.ti-brand-deno:before { - content: "\f24f"; -} - -.ti-brand-deviantart:before { - content: "\ecfb"; -} - -.ti-brand-discord:before { - content: "\ece3"; -} - -.ti-brand-disney:before { - content: "\f20a"; -} - -.ti-brand-disqus:before { - content: "\edc9"; -} - -.ti-brand-django:before { - content: "\f349"; -} - -.ti-brand-docker:before { - content: "\edca"; -} - -.ti-brand-doctrine:before { - content: "\ef6d"; -} - -.ti-brand-dolby-digital:before { - content: "\f4d4"; -} - -.ti-brand-dribbble:before { - content: "\ec19"; -} - -.ti-brand-drops:before { - content: "\f4d5"; -} - -.ti-brand-drupal:before { - content: "\f393"; -} - -.ti-brand-edge:before { - content: "\ecfc"; -} - -.ti-brand-ember:before { - content: "\f497"; -} - -.ti-brand-envato:before { - content: "\f394"; -} - -.ti-brand-facebook:before { - content: "\ec1a"; -} - -.ti-brand-figma:before { - content: "\ec93"; -} - -.ti-brand-finder:before { - content: "\f218"; -} - -.ti-brand-firebase:before { - content: "\ef6e"; -} - -.ti-brand-firefox:before { - content: "\ecfd"; -} - -.ti-brand-flickr:before { - content: "\ecfe"; -} - -.ti-brand-flightradar24:before { - content: "\f4d6"; -} - -.ti-brand-flipboard:before { - content: "\f20b"; -} - -.ti-brand-flutter:before { - content: "\f395"; -} - -.ti-brand-fortnite:before { - content: "\f260"; -} - -.ti-brand-foursquare:before { - content: "\ecff"; -} - -.ti-brand-framer:before { - content: "\ec1b"; -} - -.ti-brand-gatsby:before { - content: "\f396"; -} - -.ti-brand-git:before { - content: "\ef6f"; -} - -.ti-brand-github:before { - content: "\ec1c"; -} - -.ti-brand-github-copilot:before { - content: "\f4a8"; -} - -.ti-brand-gitlab:before { - content: "\ec1d"; -} - -.ti-brand-gmail:before { - content: "\efa2"; -} - -.ti-brand-google:before { - content: "\ec1f"; -} - -.ti-brand-google-analytics:before { - content: "\edcb"; -} - -.ti-brand-google-drive:before { - content: "\ec1e"; -} - -.ti-brand-google-fit:before { - content: "\f297"; -} - -.ti-brand-google-one:before { - content: "\f232"; -} - -.ti-brand-google-photos:before { - content: "\f20c"; -} - -.ti-brand-google-play:before { - content: "\ed25"; -} - -.ti-brand-grammarly:before { - content: "\f32b"; -} - -.ti-brand-graphql:before { - content: "\f32c"; -} - -.ti-brand-gravatar:before { - content: "\edcc"; -} - -.ti-brand-grindr:before { - content: "\f20d"; -} - -.ti-brand-guardian:before { - content: "\f4fb"; -} - -.ti-brand-headlessui:before { - content: "\f32d"; -} - -.ti-brand-hipchat:before { - content: "\edcd"; -} - -.ti-brand-html5:before { - content: "\ed6c"; -} - -.ti-brand-inertia:before { - content: "\f34a"; -} - -.ti-brand-instagram:before { - content: "\ec20"; -} - -.ti-brand-intercom:before { - content: "\f1cf"; -} - -.ti-brand-javascript:before { - content: "\ef0c"; -} - -.ti-brand-kickstarter:before { - content: "\edce"; -} - -.ti-brand-kotlin:before { - content: "\ed6d"; -} - -.ti-brand-laravel:before { - content: "\f34b"; -} - -.ti-brand-lastfm:before { - content: "\f001"; -} - -.ti-brand-linkedin:before { - content: "\ec8c"; -} - -.ti-brand-linktree:before { - content: "\f1e7"; -} - -.ti-brand-loom:before { - content: "\ef70"; -} - -.ti-brand-mailgun:before { - content: "\f32e"; -} - -.ti-brand-mantine:before { - content: "\f32f"; -} - -.ti-brand-mastercard:before { - content: "\ef49"; -} - -.ti-brand-mastodon:before { - content: "\f250"; -} - -.ti-brand-mcdonalds:before { - content: "\f251"; -} - -.ti-brand-medium:before { - content: "\ec70"; -} - -.ti-brand-mercedes:before { - content: "\f072"; -} - -.ti-brand-messenger:before { - content: "\ec71"; -} - -.ti-brand-meta:before { - content: "\efb0"; -} - -.ti-brand-mixpanel:before { - content: "\f397"; -} - -.ti-brand-monday:before { - content: "\f219"; -} - -.ti-brand-my-oppo:before { - content: "\f4d7"; -} - -.ti-brand-netbeans:before { - content: "\ef71"; -} - -.ti-brand-netflix:before { - content: "\edcf"; -} - -.ti-brand-nextcloud:before { - content: "\f4d8"; -} - -.ti-brand-nextjs:before { - content: "\f0dd"; -} - -.ti-brand-nord-vpn:before { - content: "\f37f"; -} - -.ti-brand-notion:before { - content: "\ef7b"; -} - -.ti-brand-nuxt:before { - content: "\f0de"; -} - -.ti-brand-nytimes:before { - content: "\ef8d"; -} - -.ti-brand-office:before { - content: "\f398"; -} - -.ti-brand-ok-ru:before { - content: "\f399"; -} - -.ti-brand-open-source:before { - content: "\edd0"; -} - -.ti-brand-openvpn:before { - content: "\f39a"; -} - -.ti-brand-opera:before { - content: "\ec21"; -} - -.ti-brand-pagekit:before { - content: "\edd1"; -} - -.ti-brand-patreon:before { - content: "\edd2"; -} - -.ti-brand-paypal:before { - content: "\ec22"; -} - -.ti-brand-peanut:before { - content: "\f39b"; -} - -.ti-brand-pepsi:before { - content: "\f261"; -} - -.ti-brand-php:before { - content: "\ef72"; -} - -.ti-brand-picsart:before { - content: "\f4d9"; -} - -.ti-brand-pinterest:before { - content: "\ec8d"; -} - -.ti-brand-pocket:before { - content: "\ed00"; -} - -.ti-brand-polymer:before { - content: "\f498"; -} - -.ti-brand-prisma:before { - content: "\f499"; -} - -.ti-brand-producthunt:before { - content: "\edd3"; -} - -.ti-brand-pushbullet:before { - content: "\f330"; -} - -.ti-brand-pushover:before { - content: "\f20e"; -} - -.ti-brand-python:before { - content: "\ed01"; -} - -.ti-brand-react:before { - content: "\f34c"; -} - -.ti-brand-react-native:before { - content: "\ef73"; -} - -.ti-brand-reason:before { - content: "\f49a"; -} - -.ti-brand-reddit:before { - content: "\ec8e"; -} - -.ti-brand-redhat:before { - content: "\f331"; -} - -.ti-brand-redux:before { - content: "\f3a8"; -} - -.ti-brand-revolut:before { - content: "\f4da"; -} - -.ti-brand-safari:before { - content: "\ec23"; -} - -.ti-brand-samsungpass:before { - content: "\f4db"; -} - -.ti-brand-sass:before { - content: "\edd4"; -} - -.ti-brand-sentry:before { - content: "\edd5"; -} - -.ti-brand-sharik:before { - content: "\f4dc"; -} - -.ti-brand-shazam:before { - content: "\edd6"; -} - -.ti-brand-shopee:before { - content: "\f252"; -} - -.ti-brand-sketch:before { - content: "\ec24"; -} - -.ti-brand-skype:before { - content: "\ed02"; -} - -.ti-brand-slack:before { - content: "\ec72"; -} - -.ti-brand-snapchat:before { - content: "\ec25"; -} - -.ti-brand-snapseed:before { - content: "\f253"; -} - -.ti-brand-socket-io:before { - content: "\f49b"; -} - -.ti-brand-soundcloud:before { - content: "\ed6e"; -} - -.ti-brand-spacehey:before { - content: "\f4fc"; -} - -.ti-brand-spotify:before { - content: "\ed03"; -} - -.ti-brand-stackoverflow:before { - content: "\ef58"; -} - -.ti-brand-steam:before { - content: "\ed6f"; -} - -.ti-brand-storybook:before { - content: "\f332"; -} - -.ti-brand-strava:before { - content: "\f254"; -} - -.ti-brand-stripe:before { - content: "\edd7"; -} - -.ti-brand-sublime-text:before { - content: "\ef74"; -} - -.ti-brand-supernova:before { - content: "\f49c"; -} - -.ti-brand-surfshark:before { - content: "\f255"; -} - -.ti-brand-svelte:before { - content: "\f0df"; -} - -.ti-brand-tabler:before { - content: "\ec8f"; -} - -.ti-brand-tailwind:before { - content: "\eca1"; -} - -.ti-brand-telegram:before { - content: "\ec26"; -} - -.ti-brand-tidal:before { - content: "\ed70"; -} - -.ti-brand-tiktok:before { - content: "\ec73"; -} - -.ti-brand-tinder:before { - content: "\ed71"; -} - -.ti-brand-toyota:before { - content: "\f262"; -} - -.ti-brand-trello:before { - content: "\f39d"; -} - -.ti-brand-tripadvisor:before { - content: "\f002"; -} - -.ti-brand-tumblr:before { - content: "\ed04"; -} - -.ti-brand-twitch:before { - content: "\ed05"; -} - -.ti-brand-twitter:before { - content: "\ec27"; -} - -.ti-brand-uber:before { - content: "\ef75"; -} - -.ti-brand-ubuntu:before { - content: "\ef59"; -} - -.ti-brand-unity:before { - content: "\f49d"; -} - -.ti-brand-unsplash:before { - content: "\edd8"; -} - -.ti-brand-upwork:before { - content: "\f39e"; -} - -.ti-brand-valorant:before { - content: "\f39f"; -} - -.ti-brand-vercel:before { - content: "\ef24"; -} - -.ti-brand-vimeo:before { - content: "\ed06"; -} - -.ti-brand-vinted:before { - content: "\f20f"; -} - -.ti-brand-visa:before { - content: "\f380"; -} - -.ti-brand-visual-studio:before { - content: "\ef76"; -} - -.ti-brand-vivaldi:before { - content: "\f210"; -} - -.ti-brand-vk:before { - content: "\ed72"; -} - -.ti-brand-vsco:before { - content: "\f334"; -} - -.ti-brand-vscode:before { - content: "\f3a0"; -} - -.ti-brand-vue:before { - content: "\f0e0"; -} - -.ti-brand-walmart:before { - content: "\f211"; -} - -.ti-brand-webflow:before { - content: "\f2d2"; -} - -.ti-brand-whatsapp:before { - content: "\ec74"; -} - -.ti-brand-windows:before { - content: "\ecd8"; -} - -.ti-brand-windy:before { - content: "\f4dd"; -} - -.ti-brand-wish:before { - content: "\f212"; -} - -.ti-brand-wix:before { - content: "\f3a1"; -} - -.ti-brand-wordpress:before { - content: "\f2d3"; -} - -.ti-brand-xbox:before { - content: "\f298"; -} - -.ti-brand-xing:before { - content: "\f21a"; -} - -.ti-brand-yahoo:before { - content: "\ed73"; -} - -.ti-brand-yatse:before { - content: "\f213"; -} - -.ti-brand-ycombinator:before { - content: "\edd9"; -} - -.ti-brand-youtube:before { - content: "\ec90"; -} - -.ti-brand-youtube-kids:before { - content: "\f214"; -} - -.ti-brand-zalando:before { - content: "\f49e"; -} - -.ti-brand-zapier:before { - content: "\f49f"; -} - -.ti-brand-zeit:before { - content: "\f335"; -} - -.ti-brand-zoom:before { - content: "\f215"; -} - -.ti-brand-zulip:before { - content: "\f4de"; -} - -.ti-brand-zwift:before { - content: "\f216"; -} - -.ti-bread:before { - content: "\efa3"; -} - -.ti-bread-off:before { - content: "\f3cb"; -} - -.ti-briefcase:before { - content: "\ea46"; -} - -.ti-briefcase-off:before { - content: "\f3cc"; -} - -.ti-brightness:before { - content: "\eb7f"; -} - -.ti-brightness-2:before { - content: "\ee19"; -} - -.ti-brightness-down:before { - content: "\eb7d"; -} - -.ti-brightness-half:before { - content: "\ee1a"; -} - -.ti-brightness-off:before { - content: "\f3cd"; -} - -.ti-brightness-up:before { - content: "\eb7e"; -} - -.ti-broadcast:before { - content: "\f1e9"; -} - -.ti-broadcast-off:before { - content: "\f1e8"; -} - -.ti-browser:before { - content: "\ebb7"; -} - -.ti-browser-check:before { - content: "\efd6"; -} - -.ti-browser-off:before { - content: "\f0c1"; -} - -.ti-browser-plus:before { - content: "\efd7"; -} - -.ti-browser-x:before { - content: "\efd8"; -} - -.ti-brush:before { - content: "\ebb8"; -} - -.ti-brush-off:before { - content: "\f0c2"; -} - -.ti-bucket:before { - content: "\ea47"; -} - -.ti-bucket-off:before { - content: "\f103"; -} - -.ti-bug:before { - content: "\ea48"; -} - -.ti-bug-off:before { - content: "\f0c3"; -} - -.ti-building:before { - content: "\ea4f"; -} - -.ti-building-arch:before { - content: "\ea49"; -} - -.ti-building-bank:before { - content: "\ebe2"; -} - -.ti-building-bridge:before { - content: "\ea4b"; -} - -.ti-building-bridge-2:before { - content: "\ea4a"; -} - -.ti-building-broadcast-tower:before { - content: "\f4be"; -} - -.ti-building-carousel:before { - content: "\ed87"; -} - -.ti-building-castle:before { - content: "\ed88"; -} - -.ti-building-church:before { - content: "\ea4c"; -} - -.ti-building-circus:before { - content: "\f4bf"; -} - -.ti-building-community:before { - content: "\ebf6"; -} - -.ti-building-cottage:before { - content: "\ee1b"; -} - -.ti-building-factory:before { - content: "\ee1c"; -} - -.ti-building-factory-2:before { - content: "\f082"; -} - -.ti-building-fortress:before { - content: "\ed89"; -} - -.ti-building-hospital:before { - content: "\ea4d"; -} - -.ti-building-lighthouse:before { - content: "\ed8a"; -} - -.ti-building-monument:before { - content: "\ed26"; -} - -.ti-building-pavilon:before { - content: "\ebf7"; -} - -.ti-building-skyscraper:before { - content: "\ec39"; -} - -.ti-building-store:before { - content: "\ea4e"; -} - -.ti-building-warehouse:before { - content: "\ebe3"; -} - -.ti-building-wind-turbine:before { - content: "\f4c0"; -} - -.ti-bulb:before { - content: "\ea51"; -} - -.ti-bulb-off:before { - content: "\ea50"; -} - -.ti-bulldozer:before { - content: "\ee1d"; -} - -.ti-bus:before { - content: "\ebe4"; -} - -.ti-bus-off:before { - content: "\f3ce"; -} - -.ti-bus-stop:before { - content: "\f2d4"; -} - -.ti-businessplan:before { - content: "\ee1e"; -} - -.ti-butterfly:before { - content: "\efd9"; -} - -.ti-c-sharp:before { - content: "\f003"; -} - -.ti-cactus:before { - content: "\f21b"; -} - -.ti-cactus-off:before { - content: "\f3cf"; -} - -.ti-cake:before { - content: "\f00f"; -} - -.ti-cake-off:before { - content: "\f104"; -} - -.ti-calculator:before { - content: "\eb80"; -} - -.ti-calculator-off:before { - content: "\f0c4"; -} - -.ti-calendar:before { - content: "\ea53"; -} - -.ti-calendar-event:before { - content: "\ea52"; -} - -.ti-calendar-minus:before { - content: "\ebb9"; -} - -.ti-calendar-off:before { - content: "\ee1f"; -} - -.ti-calendar-plus:before { - content: "\ebba"; -} - -.ti-calendar-stats:before { - content: "\ee20"; -} - -.ti-calendar-time:before { - content: "\ee21"; -} - -.ti-camera:before { - content: "\ea54"; -} - -.ti-camera-minus:before { - content: "\ec3a"; -} - -.ti-camera-off:before { - content: "\ecee"; -} - -.ti-camera-plus:before { - content: "\ec3b"; -} - -.ti-camera-rotate:before { - content: "\ee22"; -} - -.ti-camera-selfie:before { - content: "\ee23"; -} - -.ti-candle:before { - content: "\efc6"; -} - -.ti-candy:before { - content: "\ef0d"; -} - -.ti-candy-off:before { - content: "\f0c5"; -} - -.ti-cannabis:before { - content: "\f4c1"; -} - -.ti-capture:before { - content: "\ec3c"; -} - -.ti-capture-off:before { - content: "\f0c6"; -} - -.ti-car:before { - content: "\ebbb"; -} - -.ti-car-crane:before { - content: "\ef25"; -} - -.ti-car-crash:before { - content: "\efa4"; -} - -.ti-car-off:before { - content: "\f0c7"; -} - -.ti-car-turbine:before { - content: "\f4fd"; -} - -.ti-caravan:before { - content: "\ec7c"; -} - -.ti-cardboards:before { - content: "\ed74"; -} - -.ti-cardboards-off:before { - content: "\f0c8"; -} - -.ti-caret-down:before { - content: "\eb5d"; -} - -.ti-caret-left:before { - content: "\eb5e"; -} - -.ti-caret-right:before { - content: "\eb5f"; -} - -.ti-caret-up:before { - content: "\eb60"; -} - -.ti-carrot:before { - content: "\f21c"; -} - -.ti-carrot-off:before { - content: "\f3d0"; -} - -.ti-cash:before { - content: "\ea55"; -} - -.ti-cash-banknote:before { - content: "\ee25"; -} - -.ti-cash-banknote-off:before { - content: "\ee24"; -} - -.ti-cash-off:before { - content: "\f105"; -} - -.ti-cast:before { - content: "\ea56"; -} - -.ti-cast-off:before { - content: "\f0c9"; -} - -.ti-category:before { - content: "\f1f6"; -} - -.ti-category-2:before { - content: "\f1f5"; -} - -.ti-ce:before { - content: "\ed75"; -} - -.ti-ce-off:before { - content: "\f0ca"; -} - -.ti-cell:before { - content: "\f05f"; -} - -.ti-cell-signal-1:before { - content: "\f083"; -} - -.ti-cell-signal-2:before { - content: "\f084"; -} - -.ti-cell-signal-3:before { - content: "\f085"; -} - -.ti-cell-signal-4:before { - content: "\f086"; -} - -.ti-cell-signal-5:before { - content: "\f087"; -} - -.ti-cell-signal-off:before { - content: "\f088"; -} - -.ti-certificate:before { - content: "\ed76"; -} - -.ti-certificate-2:before { - content: "\f073"; -} - -.ti-certificate-2-off:before { - content: "\f0cb"; -} - -.ti-certificate-off:before { - content: "\f0cc"; -} - -.ti-chair-director:before { - content: "\f2d5"; -} - -.ti-chalkboard:before { - content: "\f34d"; -} - -.ti-chalkboard-off:before { - content: "\f3d1"; -} - -.ti-charging-pile:before { - content: "\ee26"; -} - -.ti-chart-arcs:before { - content: "\ee28"; -} - -.ti-chart-arcs-3:before { - content: "\ee27"; -} - -.ti-chart-area:before { - content: "\ea58"; -} - -.ti-chart-area-line:before { - content: "\ea57"; -} - -.ti-chart-arrows:before { - content: "\ee2a"; -} - -.ti-chart-arrows-vertical:before { - content: "\ee29"; -} - -.ti-chart-bar:before { - content: "\ea59"; -} - -.ti-chart-bar-off:before { - content: "\f3d2"; -} - -.ti-chart-bubble:before { - content: "\ec75"; -} - -.ti-chart-candle:before { - content: "\ea5a"; -} - -.ti-chart-circles:before { - content: "\ee2b"; -} - -.ti-chart-donut:before { - content: "\ea5b"; -} - -.ti-chart-donut-2:before { - content: "\ee2c"; -} - -.ti-chart-donut-3:before { - content: "\ee2d"; -} - -.ti-chart-donut-4:before { - content: "\ee2e"; -} - -.ti-chart-dots:before { - content: "\ee2f"; -} - -.ti-chart-dots-2:before { - content: "\f097"; -} - -.ti-chart-dots-3:before { - content: "\f098"; -} - -.ti-chart-grid-dots:before { - content: "\f4c2"; -} - -.ti-chart-infographic:before { - content: "\ee30"; -} - -.ti-chart-line:before { - content: "\ea5c"; -} - -.ti-chart-pie:before { - content: "\ea5d"; -} - -.ti-chart-pie-2:before { - content: "\ee31"; -} - -.ti-chart-pie-3:before { - content: "\ee32"; -} - -.ti-chart-pie-4:before { - content: "\ee33"; -} - -.ti-chart-pie-off:before { - content: "\f3d3"; -} - -.ti-chart-radar:before { - content: "\ed77"; -} - -.ti-chart-treemap:before { - content: "\f381"; -} - -.ti-check:before { - content: "\ea5e"; -} - -.ti-checkbox:before { - content: "\eba6"; -} - -.ti-checklist:before { - content: "\f074"; -} - -.ti-checks:before { - content: "\ebaa"; -} - -.ti-checkup-list:before { - content: "\ef5a"; -} - -.ti-cheese:before { - content: "\ef26"; -} - -.ti-chef-hat:before { - content: "\f21d"; -} - -.ti-chef-hat-off:before { - content: "\f3d4"; -} - -.ti-chess:before { - content: "\f382"; -} - -.ti-chevron-down:before { - content: "\ea5f"; -} - -.ti-chevron-down-left:before { - content: "\ed09"; -} - -.ti-chevron-down-right:before { - content: "\ed0a"; -} - -.ti-chevron-left:before { - content: "\ea60"; -} - -.ti-chevron-right:before { - content: "\ea61"; -} - -.ti-chevron-up:before { - content: "\ea62"; -} - -.ti-chevron-up-left:before { - content: "\ed0b"; -} - -.ti-chevron-up-right:before { - content: "\ed0c"; -} - -.ti-chevrons-down:before { - content: "\ea63"; -} - -.ti-chevrons-down-left:before { - content: "\ed0d"; -} - -.ti-chevrons-down-right:before { - content: "\ed0e"; -} - -.ti-chevrons-left:before { - content: "\ea64"; -} - -.ti-chevrons-right:before { - content: "\ea65"; -} - -.ti-chevrons-up:before { - content: "\ea66"; -} - -.ti-chevrons-up-left:before { - content: "\ed0f"; -} - -.ti-chevrons-up-right:before { - content: "\ed10"; -} - -.ti-chisel:before { - content: "\f383"; -} - -.ti-christmas-tree:before { - content: "\ed78"; -} - -.ti-christmas-tree-off:before { - content: "\f3d5"; -} - -.ti-circle:before { - content: "\ea6b"; -} - -.ti-circle-caret-down:before { - content: "\f4a9"; -} - -.ti-circle-caret-left:before { - content: "\f4aa"; -} - -.ti-circle-caret-right:before { - content: "\f4ab"; -} - -.ti-circle-caret-up:before { - content: "\f4ac"; -} - -.ti-circle-check:before { - content: "\ea67"; -} - -.ti-circle-dashed:before { - content: "\ed27"; -} - -.ti-circle-dot:before { - content: "\efb1"; -} - -.ti-circle-dotted:before { - content: "\ed28"; -} - -.ti-circle-half:before { - content: "\ee3f"; -} - -.ti-circle-half-2:before { - content: "\eff3"; -} - -.ti-circle-half-vertical:before { - content: "\ee3e"; -} - -.ti-circle-letter-a:before { - content: "\f441"; -} - -.ti-circle-letter-b:before { - content: "\f442"; -} - -.ti-circle-letter-c:before { - content: "\f443"; -} - -.ti-circle-letter-d:before { - content: "\f444"; -} - -.ti-circle-letter-e:before { - content: "\f445"; -} - -.ti-circle-letter-f:before { - content: "\f446"; -} - -.ti-circle-letter-g:before { - content: "\f447"; -} - -.ti-circle-letter-h:before { - content: "\f448"; -} - -.ti-circle-letter-i:before { - content: "\f449"; -} - -.ti-circle-letter-j:before { - content: "\f44a"; -} - -.ti-circle-letter-k:before { - content: "\f44b"; -} - -.ti-circle-letter-l:before { - content: "\f44c"; -} - -.ti-circle-letter-m:before { - content: "\f44d"; -} - -.ti-circle-letter-n:before { - content: "\f44e"; -} - -.ti-circle-letter-o:before { - content: "\f44f"; -} - -.ti-circle-letter-p:before { - content: "\f450"; -} - -.ti-circle-letter-q:before { - content: "\f451"; -} - -.ti-circle-letter-r:before { - content: "\f452"; -} - -.ti-circle-letter-s:before { - content: "\f453"; -} - -.ti-circle-letter-t:before { - content: "\f454"; -} - -.ti-circle-letter-u:before { - content: "\f455"; -} - -.ti-circle-letter-v:before { - content: "\f4ad"; -} - -.ti-circle-letter-w:before { - content: "\f456"; -} - -.ti-circle-letter-x:before { - content: "\f4ae"; -} - -.ti-circle-letter-y:before { - content: "\f457"; -} - -.ti-circle-letter-z:before { - content: "\f458"; -} - -.ti-circle-minus:before { - content: "\ea68"; -} - -.ti-circle-number-0:before { - content: "\ee34"; -} - -.ti-circle-number-1:before { - content: "\ee35"; -} - -.ti-circle-number-2:before { - content: "\ee36"; -} - -.ti-circle-number-3:before { - content: "\ee37"; -} - -.ti-circle-number-4:before { - content: "\ee38"; -} - -.ti-circle-number-5:before { - content: "\ee39"; -} - -.ti-circle-number-6:before { - content: "\ee3a"; -} - -.ti-circle-number-7:before { - content: "\ee3b"; -} - -.ti-circle-number-8:before { - content: "\ee3c"; -} - -.ti-circle-number-9:before { - content: "\ee3d"; -} - -.ti-circle-off:before { - content: "\ee40"; -} - -.ti-circle-plus:before { - content: "\ea69"; -} - -.ti-circle-rectangle:before { - content: "\f010"; -} - -.ti-circle-rectangle-off:before { - content: "\f0cd"; -} - -.ti-circle-square:before { - content: "\ece4"; -} - -.ti-circle-triangle:before { - content: "\f011"; -} - -.ti-circle-x:before { - content: "\ea6a"; -} - -.ti-circles:before { - content: "\ece5"; -} - -.ti-circles-relation:before { - content: "\f4c3"; -} - -.ti-circuit-ammeter:before { - content: "\f271"; -} - -.ti-circuit-battery:before { - content: "\f272"; -} - -.ti-circuit-bulb:before { - content: "\f273"; -} - -.ti-circuit-capacitor:before { - content: "\f275"; -} - -.ti-circuit-capacitor-polarized:before { - content: "\f274"; -} - -.ti-circuit-cell:before { - content: "\f277"; -} - -.ti-circuit-cell-plus:before { - content: "\f276"; -} - -.ti-circuit-changeover:before { - content: "\f278"; -} - -.ti-circuit-diode:before { - content: "\f27a"; -} - -.ti-circuit-diode-zener:before { - content: "\f279"; -} - -.ti-circuit-ground:before { - content: "\f27c"; -} - -.ti-circuit-ground-digital:before { - content: "\f27b"; -} - -.ti-circuit-inductor:before { - content: "\f27d"; -} - -.ti-circuit-motor:before { - content: "\f27e"; -} - -.ti-circuit-pushbutton:before { - content: "\f27f"; -} - -.ti-circuit-resistor:before { - content: "\f280"; -} - -.ti-circuit-switch-closed:before { - content: "\f281"; -} - -.ti-circuit-switch-open:before { - content: "\f282"; -} - -.ti-circuit-voltmeter:before { - content: "\f283"; -} - -.ti-clear-all:before { - content: "\ee41"; -} - -.ti-clear-formatting:before { - content: "\ebe5"; -} - -.ti-click:before { - content: "\ebbc"; -} - -.ti-clipboard:before { - content: "\ea6f"; -} - -.ti-clipboard-check:before { - content: "\ea6c"; -} - -.ti-clipboard-copy:before { - content: "\f299"; -} - -.ti-clipboard-heart:before { - content: "\f34e"; -} - -.ti-clipboard-list:before { - content: "\ea6d"; -} - -.ti-clipboard-off:before { - content: "\f0ce"; -} - -.ti-clipboard-plus:before { - content: "\efb2"; -} - -.ti-clipboard-text:before { - content: "\f089"; -} - -.ti-clipboard-typography:before { - content: "\f34f"; -} - -.ti-clipboard-x:before { - content: "\ea6e"; -} - -.ti-clock:before { - content: "\ea70"; -} - -.ti-clock-2:before { - content: "\f099"; -} - -.ti-clock-hour-1:before { - content: "\f313"; -} - -.ti-clock-hour-10:before { - content: "\f314"; -} - -.ti-clock-hour-11:before { - content: "\f315"; -} - -.ti-clock-hour-12:before { - content: "\f316"; -} - -.ti-clock-hour-2:before { - content: "\f317"; -} - -.ti-clock-hour-3:before { - content: "\f318"; -} - -.ti-clock-hour-4:before { - content: "\f319"; -} - -.ti-clock-hour-5:before { - content: "\f31a"; -} - -.ti-clock-hour-6:before { - content: "\f31b"; -} - -.ti-clock-hour-7:before { - content: "\f31c"; -} - -.ti-clock-hour-8:before { - content: "\f31d"; -} - -.ti-clock-hour-9:before { - content: "\f31e"; -} - -.ti-clock-off:before { - content: "\f0cf"; -} - -.ti-clothes-rack:before { - content: "\f285"; -} - -.ti-clothes-rack-off:before { - content: "\f3d6"; -} - -.ti-cloud:before { - content: "\ea76"; -} - -.ti-cloud-computing:before { - content: "\f1d0"; -} - -.ti-cloud-data-connection:before { - content: "\f1d1"; -} - -.ti-cloud-download:before { - content: "\ea71"; -} - -.ti-cloud-fog:before { - content: "\ecd9"; -} - -.ti-cloud-lock:before { - content: "\efdb"; -} - -.ti-cloud-lock-open:before { - content: "\efda"; -} - -.ti-cloud-off:before { - content: "\ed3e"; -} - -.ti-cloud-rain:before { - content: "\ea72"; -} - -.ti-cloud-snow:before { - content: "\ea73"; -} - -.ti-cloud-storm:before { - content: "\ea74"; -} - -.ti-cloud-upload:before { - content: "\ea75"; -} - -.ti-clover:before { - content: "\f1ea"; -} - -.ti-clover-2:before { - content: "\f21e"; -} - -.ti-clubs:before { - content: "\eff4"; -} - -.ti-code:before { - content: "\ea77"; -} - -.ti-code-asterix:before { - content: "\f312"; -} - -.ti-code-circle:before { - content: "\f4ff"; -} - -.ti-code-circle-2:before { - content: "\f4fe"; -} - -.ti-code-minus:before { - content: "\ee42"; -} - -.ti-code-off:before { - content: "\f0d0"; -} - -.ti-code-plus:before { - content: "\ee43"; -} - -.ti-coffee:before { - content: "\ef0e"; -} - -.ti-coffee-off:before { - content: "\f106"; -} - -.ti-coin:before { - content: "\eb82"; -} - -.ti-coin-bitcoin:before { - content: "\f2be"; -} - -.ti-coin-euro:before { - content: "\f2bf"; -} - -.ti-coin-monero:before { - content: "\f4a0"; -} - -.ti-coin-off:before { - content: "\f0d1"; -} - -.ti-coin-pound:before { - content: "\f2c0"; -} - -.ti-coin-rupee:before { - content: "\f2c1"; -} - -.ti-coin-yen:before { - content: "\f2c2"; -} - -.ti-coin-yuan:before { - content: "\f2c3"; -} - -.ti-color-picker:before { - content: "\ebe6"; -} - -.ti-color-picker-off:before { - content: "\f0d2"; -} - -.ti-color-swatch:before { - content: "\eb61"; -} - -.ti-color-swatch-off:before { - content: "\f0d3"; -} - -.ti-column-insert-left:before { - content: "\ee44"; -} - -.ti-column-insert-right:before { - content: "\ee45"; -} - -.ti-columns:before { - content: "\eb83"; -} - -.ti-columns-off:before { - content: "\f0d4"; -} - -.ti-comet:before { - content: "\ec76"; -} - -.ti-command:before { - content: "\ea78"; -} - -.ti-command-off:before { - content: "\f3d7"; -} - -.ti-compass:before { - content: "\ea79"; -} - -.ti-compass-off:before { - content: "\f0d5"; -} - -.ti-components:before { - content: "\efa5"; -} - -.ti-components-off:before { - content: "\f0d6"; -} - -.ti-cone:before { - content: "\efdd"; -} - -.ti-cone-2:before { - content: "\efdc"; -} - -.ti-cone-off:before { - content: "\f3d8"; -} - -.ti-confetti:before { - content: "\ee46"; -} - -.ti-confetti-off:before { - content: "\f3d9"; -} - -.ti-container:before { - content: "\ee47"; -} - -.ti-container-off:before { - content: "\f107"; -} - -.ti-contrast:before { - content: "\ec4e"; -} - -.ti-contrast-2:before { - content: "\efc7"; -} - -.ti-contrast-2-off:before { - content: "\f3da"; -} - -.ti-contrast-off:before { - content: "\f3db"; -} - -.ti-cookie:before { - content: "\ef0f"; -} - -.ti-cookie-man:before { - content: "\f4c4"; -} - -.ti-cookie-off:before { - content: "\f0d7"; -} - -.ti-copy:before { - content: "\ea7a"; -} - -.ti-copy-off:before { - content: "\f0d8"; -} - -.ti-copyleft:before { - content: "\ec3d"; -} - -.ti-copyleft-off:before { - content: "\f0d9"; -} - -.ti-copyright:before { - content: "\ea7b"; -} - -.ti-copyright-off:before { - content: "\f0da"; -} - -.ti-corner-down-left:before { - content: "\ea7c"; -} - -.ti-corner-down-left-double:before { - content: "\ee48"; -} - -.ti-corner-down-right:before { - content: "\ea7d"; -} - -.ti-corner-down-right-double:before { - content: "\ee49"; -} - -.ti-corner-left-down:before { - content: "\ea7e"; -} - -.ti-corner-left-down-double:before { - content: "\ee4a"; -} - -.ti-corner-left-up:before { - content: "\ea7f"; -} - -.ti-corner-left-up-double:before { - content: "\ee4b"; -} - -.ti-corner-right-down:before { - content: "\ea80"; -} - -.ti-corner-right-down-double:before { - content: "\ee4c"; -} - -.ti-corner-right-up:before { - content: "\ea81"; -} - -.ti-corner-right-up-double:before { - content: "\ee4d"; -} - -.ti-corner-up-left:before { - content: "\ea82"; -} - -.ti-corner-up-left-double:before { - content: "\ee4e"; -} - -.ti-corner-up-right:before { - content: "\ea83"; -} - -.ti-corner-up-right-double:before { - content: "\ee4f"; -} - -.ti-cpu:before { - content: "\ef8e"; -} - -.ti-cpu-2:before { - content: "\f075"; -} - -.ti-cpu-off:before { - content: "\f108"; -} - -.ti-crane:before { - content: "\ef27"; -} - -.ti-crane-off:before { - content: "\f109"; -} - -.ti-creative-commons:before { - content: "\efb3"; -} - -.ti-creative-commons-by:before { - content: "\f21f"; -} - -.ti-creative-commons-nc:before { - content: "\f220"; -} - -.ti-creative-commons-nd:before { - content: "\f221"; -} - -.ti-creative-commons-off:before { - content: "\f10a"; -} - -.ti-creative-commons-sa:before { - content: "\f222"; -} - -.ti-creative-commons-zero:before { - content: "\f223"; -} - -.ti-credit-card:before { - content: "\ea84"; -} - -.ti-credit-card-off:before { - content: "\ed11"; -} - -.ti-cricket:before { - content: "\f09a"; -} - -.ti-crop:before { - content: "\ea85"; -} - -.ti-cross:before { - content: "\ef8f"; -} - -.ti-cross-off:before { - content: "\f10b"; -} - -.ti-crosshair:before { - content: "\ec3e"; -} - -.ti-crown:before { - content: "\ed12"; -} - -.ti-crown-off:before { - content: "\ee50"; -} - -.ti-crutches:before { - content: "\ef5b"; -} - -.ti-crutches-off:before { - content: "\f10c"; -} - -.ti-cup:before { - content: "\ef28"; -} - -.ti-cup-off:before { - content: "\f10d"; -} - -.ti-curling:before { - content: "\efc8"; -} - -.ti-curly-loop:before { - content: "\ecda"; -} - -.ti-currency:before { - content: "\efa6"; -} - -.ti-currency-bahraini:before { - content: "\ee51"; -} - -.ti-currency-baht:before { - content: "\f08a"; -} - -.ti-currency-bitcoin:before { - content: "\ebab"; -} - -.ti-currency-cent:before { - content: "\ee53"; -} - -.ti-currency-dinar:before { - content: "\ee54"; -} - -.ti-currency-dirham:before { - content: "\ee55"; -} - -.ti-currency-dogecoin:before { - content: "\ef4b"; -} - -.ti-currency-dollar:before { - content: "\eb84"; -} - -.ti-currency-dollar-australian:before { - content: "\ee56"; -} - -.ti-currency-dollar-brunei:before { - content: "\f36c"; -} - -.ti-currency-dollar-canadian:before { - content: "\ee57"; -} - -.ti-currency-dollar-guyanese:before { - content: "\f36d"; -} - -.ti-currency-dollar-off:before { - content: "\f3dc"; -} - -.ti-currency-dollar-singapore:before { - content: "\ee58"; -} - -.ti-currency-dollar-zimbabwean:before { - content: "\f36e"; -} - -.ti-currency-dong:before { - content: "\f36f"; -} - -.ti-currency-dram:before { - content: "\f370"; -} - -.ti-currency-ethereum:before { - content: "\ee59"; -} - -.ti-currency-euro:before { - content: "\eb85"; -} - -.ti-currency-euro-off:before { - content: "\f3dd"; -} - -.ti-currency-forint:before { - content: "\ee5a"; -} - -.ti-currency-frank:before { - content: "\ee5b"; -} - -.ti-currency-guarani:before { - content: "\f371"; -} - -.ti-currency-hryvnia:before { - content: "\f372"; -} - -.ti-currency-kip:before { - content: "\f373"; -} - -.ti-currency-krone-czech:before { - content: "\ee5c"; -} - -.ti-currency-krone-danish:before { - content: "\ee5d"; -} - -.ti-currency-krone-swedish:before { - content: "\ee5e"; -} - -.ti-currency-lari:before { - content: "\f374"; -} - -.ti-currency-leu:before { - content: "\ee5f"; -} - -.ti-currency-lira:before { - content: "\ee60"; -} - -.ti-currency-litecoin:before { - content: "\ee61"; -} - -.ti-currency-lyd:before { - content: "\f375"; -} - -.ti-currency-manat:before { - content: "\f376"; -} - -.ti-currency-monero:before { - content: "\f377"; -} - -.ti-currency-naira:before { - content: "\ee62"; -} - -.ti-currency-off:before { - content: "\f3de"; -} - -.ti-currency-paanga:before { - content: "\f378"; -} - -.ti-currency-pound:before { - content: "\ebac"; -} - -.ti-currency-pound-off:before { - content: "\f3df"; -} - -.ti-currency-quetzal:before { - content: "\f379"; -} - -.ti-currency-real:before { - content: "\ee63"; -} - -.ti-currency-renminbi:before { - content: "\ee64"; -} - -.ti-currency-ripple:before { - content: "\ee65"; -} - -.ti-currency-riyal:before { - content: "\ee66"; -} - -.ti-currency-rubel:before { - content: "\ee67"; -} - -.ti-currency-rufiyaa:before { - content: "\f37a"; -} - -.ti-currency-rupee:before { - content: "\ebad"; -} - -.ti-currency-rupee-nepalese:before { - content: "\f37b"; -} - -.ti-currency-shekel:before { - content: "\ee68"; -} - -.ti-currency-solana:before { - content: "\f4a1"; -} - -.ti-currency-som:before { - content: "\f37c"; -} - -.ti-currency-taka:before { - content: "\ee69"; -} - -.ti-currency-tenge:before { - content: "\f37d"; -} - -.ti-currency-tugrik:before { - content: "\ee6a"; -} - -.ti-currency-won:before { - content: "\ee6b"; -} - -.ti-currency-yen:before { - content: "\ebae"; -} - -.ti-currency-yen-off:before { - content: "\f3e0"; -} - -.ti-currency-yuan:before { - content: "\f29a"; -} - -.ti-currency-zloty:before { - content: "\ee6c"; -} - -.ti-current-location:before { - content: "\ecef"; -} - -.ti-current-location-off:before { - content: "\f10e"; -} - -.ti-cursor-off:before { - content: "\f10f"; -} - -.ti-cursor-text:before { - content: "\ee6d"; -} - -.ti-cut:before { - content: "\ea86"; -} - -.ti-dashboard:before { - content: "\ea87"; -} - -.ti-dashboard-off:before { - content: "\f3e1"; -} - -.ti-database:before { - content: "\ea88"; -} - -.ti-database-export:before { - content: "\ee6e"; -} - -.ti-database-import:before { - content: "\ee6f"; -} - -.ti-database-off:before { - content: "\ee70"; -} - -.ti-deer:before { - content: "\f4c5"; -} - -.ti-dental:before { - content: "\f025"; -} - -.ti-dental-broken:before { - content: "\f286"; -} - -.ti-dental-off:before { - content: "\f110"; -} - -.ti-details:before { - content: "\ee71"; -} - -.ti-details-off:before { - content: "\f3e2"; -} - -.ti-device-analytics:before { - content: "\ee72"; -} - -.ti-device-audio-tape:before { - content: "\ee73"; -} - -.ti-device-camera-phone:before { - content: "\f233"; -} - -.ti-device-cctv:before { - content: "\ee74"; -} - -.ti-device-cctv-off:before { - content: "\f3e3"; -} - -.ti-device-computer-camera:before { - content: "\ee76"; -} - -.ti-device-computer-camera-off:before { - content: "\ee75"; -} - -.ti-device-desktop:before { - content: "\ea89"; -} - -.ti-device-desktop-analytics:before { - content: "\ee77"; -} - -.ti-device-desktop-off:before { - content: "\ee78"; -} - -.ti-device-floppy:before { - content: "\eb62"; -} - -.ti-device-gamepad:before { - content: "\eb63"; -} - -.ti-device-gamepad-2:before { - content: "\f1d2"; -} - -.ti-device-heart-monitor:before { - content: "\f060"; -} - -.ti-device-laptop:before { - content: "\eb64"; -} - -.ti-device-laptop-off:before { - content: "\f061"; -} - -.ti-device-mobile:before { - content: "\ea8a"; -} - -.ti-device-mobile-charging:before { - content: "\f224"; -} - -.ti-device-mobile-message:before { - content: "\ee79"; -} - -.ti-device-mobile-off:before { - content: "\f062"; -} - -.ti-device-mobile-rotated:before { - content: "\ecdb"; -} - -.ti-device-mobile-vibration:before { - content: "\eb86"; -} - -.ti-device-nintendo:before { - content: "\f026"; -} - -.ti-device-nintendo-off:before { - content: "\f111"; -} - -.ti-device-sd-card:before { - content: "\f384"; -} - -.ti-device-sim:before { - content: "\f4b2"; -} - -.ti-device-sim-1:before { - content: "\f4af"; -} - -.ti-device-sim-2:before { - content: "\f4b0"; -} - -.ti-device-sim-3:before { - content: "\f4b1"; -} - -.ti-device-speaker:before { - content: "\ea8b"; -} - -.ti-device-speaker-off:before { - content: "\f112"; -} - -.ti-device-tablet:before { - content: "\ea8c"; -} - -.ti-device-tablet-off:before { - content: "\f063"; -} - -.ti-device-tv:before { - content: "\ea8d"; -} - -.ti-device-tv-off:before { - content: "\f064"; -} - -.ti-device-tv-old:before { - content: "\f1d3"; -} - -.ti-device-watch:before { - content: "\ebf9"; -} - -.ti-device-watch-off:before { - content: "\f065"; -} - -.ti-device-watch-stats:before { - content: "\ef7d"; -} - -.ti-device-watch-stats-2:before { - content: "\ef7c"; -} - -.ti-devices:before { - content: "\eb87"; -} - -.ti-devices-2:before { - content: "\ed29"; -} - -.ti-devices-off:before { - content: "\f3e4"; -} - -.ti-devices-pc:before { - content: "\ee7a"; -} - -.ti-devices-pc-off:before { - content: "\f113"; -} - -.ti-dialpad:before { - content: "\f067"; -} - -.ti-dialpad-off:before { - content: "\f114"; -} - -.ti-diamond:before { - content: "\eb65"; -} - -.ti-diamond-off:before { - content: "\f115"; -} - -.ti-diamonds:before { - content: "\eff5"; -} - -.ti-dice:before { - content: "\eb66"; -} - -.ti-dice-1:before { - content: "\f08b"; -} - -.ti-dice-2:before { - content: "\f08c"; -} - -.ti-dice-3:before { - content: "\f08d"; -} - -.ti-dice-4:before { - content: "\f08e"; -} - -.ti-dice-5:before { - content: "\f08f"; -} - -.ti-dice-6:before { - content: "\f090"; -} - -.ti-dimensions:before { - content: "\ee7b"; -} - -.ti-direction:before { - content: "\ebfb"; -} - -.ti-direction-horizontal:before { - content: "\ebfa"; -} - -.ti-direction-sign:before { - content: "\f1f7"; -} - -.ti-direction-sign-off:before { - content: "\f3e5"; -} - -.ti-directions:before { - content: "\ea8e"; -} - -.ti-directions-off:before { - content: "\f116"; -} - -.ti-disabled:before { - content: "\ea8f"; -} - -.ti-disabled-2:before { - content: "\ebaf"; -} - -.ti-disabled-off:before { - content: "\f117"; -} - -.ti-disc:before { - content: "\ea90"; -} - -.ti-disc-golf:before { - content: "\f385"; -} - -.ti-disc-off:before { - content: "\f118"; -} - -.ti-discount:before { - content: "\ebbd"; -} - -.ti-discount-2:before { - content: "\ee7c"; -} - -.ti-discount-2-off:before { - content: "\f3e6"; -} - -.ti-discount-check:before { - content: "\f1f8"; -} - -.ti-discount-off:before { - content: "\f3e7"; -} - -.ti-divide:before { - content: "\ed5c"; -} - -.ti-dna:before { - content: "\ee7d"; -} - -.ti-dna-2:before { - content: "\ef5c"; -} - -.ti-dna-2-off:before { - content: "\f119"; -} - -.ti-dna-off:before { - content: "\f11a"; -} - -.ti-dog-bowl:before { - content: "\ef29"; -} - -.ti-door:before { - content: "\ef4e"; -} - -.ti-door-enter:before { - content: "\ef4c"; -} - -.ti-door-exit:before { - content: "\ef4d"; -} - -.ti-door-off:before { - content: "\f11b"; -} - -.ti-dots:before { - content: "\ea95"; -} - -.ti-dots-circle-horizontal:before { - content: "\ea91"; -} - -.ti-dots-diagonal:before { - content: "\ea93"; -} - -.ti-dots-diagonal-2:before { - content: "\ea92"; -} - -.ti-dots-vertical:before { - content: "\ea94"; -} - -.ti-download:before { - content: "\ea96"; -} - -.ti-download-off:before { - content: "\f11c"; -} - -.ti-drag-drop:before { - content: "\eb89"; -} - -.ti-drag-drop-2:before { - content: "\eb88"; -} - -.ti-drone:before { - content: "\ed79"; -} - -.ti-drone-off:before { - content: "\ee7e"; -} - -.ti-drop-circle:before { - content: "\efde"; -} - -.ti-droplet:before { - content: "\ea97"; -} - -.ti-droplet-filled:before { - content: "\ee80"; -} - -.ti-droplet-filled-2:before { - content: "\ee7f"; -} - -.ti-droplet-half:before { - content: "\ee82"; -} - -.ti-droplet-half-2:before { - content: "\ee81"; -} - -.ti-droplet-off:before { - content: "\ee83"; -} - -.ti-e-passport:before { - content: "\f4df"; -} - -.ti-ear:before { - content: "\ebce"; -} - -.ti-ear-off:before { - content: "\ee84"; -} - -.ti-edit:before { - content: "\ea98"; -} - -.ti-edit-circle:before { - content: "\ee85"; -} - -.ti-edit-circle-off:before { - content: "\f11d"; -} - -.ti-edit-off:before { - content: "\f11e"; -} - -.ti-egg:before { - content: "\eb8a"; -} - -.ti-egg-cracked:before { - content: "\f2d6"; -} - -.ti-egg-fried:before { - content: "\f386"; -} - -.ti-egg-off:before { - content: "\f11f"; -} - -.ti-eggs:before { - content: "\f500"; -} - -.ti-elevator:before { - content: "\efdf"; -} - -.ti-elevator-off:before { - content: "\f3e8"; -} - -.ti-emergency-bed:before { - content: "\ef5d"; -} - -.ti-empathize:before { - content: "\f29b"; -} - -.ti-empathize-off:before { - content: "\f3e9"; -} - -.ti-emphasis:before { - content: "\ebcf"; -} - -.ti-engine:before { - content: "\ef7e"; -} - -.ti-engine-off:before { - content: "\f120"; -} - -.ti-equal:before { - content: "\ee87"; -} - -.ti-equal-double:before { - content: "\f4e1"; -} - -.ti-equal-not:before { - content: "\ee86"; -} - -.ti-eraser:before { - content: "\eb8b"; -} - -.ti-eraser-off:before { - content: "\f121"; -} - -.ti-error-404:before { - content: "\f027"; -} - -.ti-error-404-off:before { - content: "\f122"; -} - -.ti-exchange:before { - content: "\ebe7"; -} - -.ti-exchange-off:before { - content: "\f123"; -} - -.ti-exclamation-mark:before { - content: "\efb4"; -} - -.ti-exclamation-mark-off:before { - content: "\f124"; -} - -.ti-explicit:before { - content: "\f256"; -} - -.ti-explicit-off:before { - content: "\f3ea"; -} - -.ti-exposure:before { - content: "\eb8c"; -} - -.ti-exposure-0:before { - content: "\f29c"; -} - -.ti-exposure-minus-1:before { - content: "\f29d"; -} - -.ti-exposure-minus-2:before { - content: "\f29e"; -} - -.ti-exposure-off:before { - content: "\f3eb"; -} - -.ti-exposure-plus-1:before { - content: "\f29f"; -} - -.ti-exposure-plus-2:before { - content: "\f2a0"; -} - -.ti-external-link:before { - content: "\ea99"; -} - -.ti-external-link-off:before { - content: "\f125"; -} - -.ti-eye:before { - content: "\ea9a"; -} - -.ti-eye-check:before { - content: "\ee88"; -} - -.ti-eye-off:before { - content: "\ecf0"; -} - -.ti-eye-table:before { - content: "\ef5e"; -} - -.ti-eyeglass:before { - content: "\ee8a"; -} - -.ti-eyeglass-2:before { - content: "\ee89"; -} - -.ti-eyeglass-off:before { - content: "\f126"; -} - -.ti-face-id:before { - content: "\ea9b"; -} - -.ti-face-id-error:before { - content: "\efa7"; -} - -.ti-face-mask:before { - content: "\efb5"; -} - -.ti-face-mask-off:before { - content: "\f127"; -} - -.ti-fall:before { - content: "\ecb9"; -} - -.ti-feather:before { - content: "\ee8b"; -} - -.ti-feather-off:before { - content: "\f128"; -} - -.ti-fence:before { - content: "\ef2a"; -} - -.ti-fence-off:before { - content: "\f129"; -} - -.ti-fidget-spinner:before { - content: "\f068"; -} - -.ti-file:before { - content: "\eaa4"; -} - -.ti-file-3d:before { - content: "\f032"; -} - -.ti-file-alert:before { - content: "\ede6"; -} - -.ti-file-analytics:before { - content: "\ede7"; -} - -.ti-file-arrow-left:before { - content: "\f033"; -} - -.ti-file-arrow-right:before { - content: "\f034"; -} - -.ti-file-barcode:before { - content: "\f035"; -} - -.ti-file-broken:before { - content: "\f501"; -} - -.ti-file-certificate:before { - content: "\ed4d"; -} - -.ti-file-chart:before { - content: "\f036"; -} - -.ti-file-check:before { - content: "\ea9c"; -} - -.ti-file-code:before { - content: "\ebd0"; -} - -.ti-file-code-2:before { - content: "\ede8"; -} - -.ti-file-database:before { - content: "\f037"; -} - -.ti-file-description:before { - content: "\f028"; -} - -.ti-file-diff:before { - content: "\ecf1"; -} - -.ti-file-digit:before { - content: "\efa8"; -} - -.ti-file-dislike:before { - content: "\ed2a"; -} - -.ti-file-dollar:before { - content: "\efe0"; -} - -.ti-file-dots:before { - content: "\f038"; -} - -.ti-file-download:before { - content: "\ea9d"; -} - -.ti-file-euro:before { - content: "\efe1"; -} - -.ti-file-export:before { - content: "\ede9"; -} - -.ti-file-horizontal:before { - content: "\ebb0"; -} - -.ti-file-import:before { - content: "\edea"; -} - -.ti-file-infinity:before { - content: "\f502"; -} - -.ti-file-info:before { - content: "\edec"; -} - -.ti-file-invoice:before { - content: "\eb67"; -} - -.ti-file-like:before { - content: "\ed2b"; -} - -.ti-file-minus:before { - content: "\ea9e"; -} - -.ti-file-music:before { - content: "\ea9f"; -} - -.ti-file-off:before { - content: "\ecf2"; -} - -.ti-file-orientation:before { - content: "\f2a1"; -} - -.ti-file-pencil:before { - content: "\f039"; -} - -.ti-file-phone:before { - content: "\ecdc"; -} - -.ti-file-plus:before { - content: "\eaa0"; -} - -.ti-file-power:before { - content: "\f03a"; -} - -.ti-file-report:before { - content: "\eded"; -} - -.ti-file-rss:before { - content: "\f03b"; -} - -.ti-file-scissors:before { - content: "\f03c"; -} - -.ti-file-search:before { - content: "\ed5d"; -} - -.ti-file-settings:before { - content: "\f029"; -} - -.ti-file-shredder:before { - content: "\eaa1"; -} - -.ti-file-signal:before { - content: "\f03d"; -} - -.ti-file-spreadsheet:before { - content: "\f03e"; -} - -.ti-file-stack:before { - content: "\f503"; -} - -.ti-file-star:before { - content: "\f03f"; -} - -.ti-file-symlink:before { - content: "\ed53"; -} - -.ti-file-text:before { - content: "\eaa2"; -} - -.ti-file-time:before { - content: "\f040"; -} - -.ti-file-typography:before { - content: "\f041"; -} - -.ti-file-unknown:before { - content: "\f042"; -} - -.ti-file-upload:before { - content: "\ec91"; -} - -.ti-file-vector:before { - content: "\f043"; -} - -.ti-file-x:before { - content: "\eaa3"; -} - -.ti-file-zip:before { - content: "\ed4e"; -} - -.ti-files:before { - content: "\edef"; -} - -.ti-files-off:before { - content: "\edee"; -} - -.ti-filter:before { - content: "\eaa5"; -} - -.ti-filter-off:before { - content: "\ed2c"; -} - -.ti-fingerprint:before { - content: "\ebd1"; -} - -.ti-fingerprint-off:before { - content: "\f12a"; -} - -.ti-fire-hydrant:before { - content: "\f3a9"; -} - -.ti-fire-hydrant-off:before { - content: "\f3ec"; -} - -.ti-firetruck:before { - content: "\ebe8"; -} - -.ti-first-aid-kit:before { - content: "\ef5f"; -} - -.ti-first-aid-kit-off:before { - content: "\f3ed"; -} - -.ti-fish:before { - content: "\ef2b"; -} - -.ti-fish-bone:before { - content: "\f287"; -} - -.ti-fish-hook:before { - content: "\f1f9"; -} - -.ti-fish-hook-off:before { - content: "\f3ee"; -} - -.ti-fish-off:before { - content: "\f12b"; -} - -.ti-flag:before { - content: "\eaa6"; -} - -.ti-flag-2:before { - content: "\ee8c"; -} - -.ti-flag-2-off:before { - content: "\f12c"; -} - -.ti-flag-3:before { - content: "\ee8d"; -} - -.ti-flag-off:before { - content: "\f12d"; -} - -.ti-flame:before { - content: "\ec2c"; -} - -.ti-flame-off:before { - content: "\f12e"; -} - -.ti-flare:before { - content: "\ee8e"; -} - -.ti-flask:before { - content: "\ebd2"; -} - -.ti-flask-2:before { - content: "\ef60"; -} - -.ti-flask-2-off:before { - content: "\f12f"; -} - -.ti-flask-off:before { - content: "\f130"; -} - -.ti-flip-horizontal:before { - content: "\eaa7"; -} - -.ti-flip-vertical:before { - content: "\eaa8"; -} - -.ti-float-center:before { - content: "\ebb1"; -} - -.ti-float-left:before { - content: "\ebb2"; -} - -.ti-float-none:before { - content: "\ed13"; -} - -.ti-float-right:before { - content: "\ebb3"; -} - -.ti-flower:before { - content: "\eff6"; -} - -.ti-flower-off:before { - content: "\f131"; -} - -.ti-focus:before { - content: "\eb8d"; -} - -.ti-focus-2:before { - content: "\ebd3"; -} - -.ti-focus-centered:before { - content: "\f02a"; -} - -.ti-fold:before { - content: "\ed56"; -} - -.ti-fold-down:before { - content: "\ed54"; -} - -.ti-fold-up:before { - content: "\ed55"; -} - -.ti-folder:before { - content: "\eaad"; -} - -.ti-folder-minus:before { - content: "\eaaa"; -} - -.ti-folder-off:before { - content: "\ed14"; -} - -.ti-folder-plus:before { - content: "\eaab"; -} - -.ti-folder-x:before { - content: "\eaac"; -} - -.ti-folders:before { - content: "\eaae"; -} - -.ti-folders-off:before { - content: "\f133"; -} - -.ti-forbid:before { - content: "\ebd5"; -} - -.ti-forbid-2:before { - content: "\ebd4"; -} - -.ti-forklift:before { - content: "\ebe9"; -} - -.ti-forms:before { - content: "\ee8f"; -} - -.ti-fountain:before { - content: "\f09b"; -} - -.ti-fountain-off:before { - content: "\f134"; -} - -.ti-frame:before { - content: "\eaaf"; -} - -.ti-frame-off:before { - content: "\f135"; -} - -.ti-free-rights:before { - content: "\efb6"; -} - -.ti-fridge:before { - content: "\f1fa"; -} - -.ti-fridge-off:before { - content: "\f3ef"; -} - -.ti-friends:before { - content: "\eab0"; -} - -.ti-friends-off:before { - content: "\f136"; -} - -.ti-function:before { - content: "\f225"; -} - -.ti-function-off:before { - content: "\f3f0"; -} - -.ti-garden-cart:before { - content: "\f23e"; -} - -.ti-garden-cart-off:before { - content: "\f3f1"; -} - -.ti-gas-station:before { - content: "\ec7d"; -} - -.ti-gas-station-off:before { - content: "\f137"; -} - -.ti-gauge:before { - content: "\eab1"; -} - -.ti-gauge-off:before { - content: "\f138"; -} - -.ti-gavel:before { - content: "\ef90"; -} - -.ti-gender-agender:before { - content: "\f0e1"; -} - -.ti-gender-androgyne:before { - content: "\f0e2"; -} - -.ti-gender-bigender:before { - content: "\f0e3"; -} - -.ti-gender-demiboy:before { - content: "\f0e4"; -} - -.ti-gender-demigirl:before { - content: "\f0e5"; -} - -.ti-gender-epicene:before { - content: "\f0e6"; -} - -.ti-gender-female:before { - content: "\f0e7"; -} - -.ti-gender-femme:before { - content: "\f0e8"; -} - -.ti-gender-genderfluid:before { - content: "\f0e9"; -} - -.ti-gender-genderless:before { - content: "\f0ea"; -} - -.ti-gender-genderqueer:before { - content: "\f0eb"; -} - -.ti-gender-hermaphrodite:before { - content: "\f0ec"; -} - -.ti-gender-intergender:before { - content: "\f0ed"; -} - -.ti-gender-male:before { - content: "\f0ee"; -} - -.ti-gender-neutrois:before { - content: "\f0ef"; -} - -.ti-gender-third:before { - content: "\f0f0"; -} - -.ti-gender-transgender:before { - content: "\f0f1"; -} - -.ti-gender-trasvesti:before { - content: "\f0f2"; -} - -.ti-geometry:before { - content: "\ee90"; -} - -.ti-ghost:before { - content: "\eb8e"; -} - -.ti-ghost-off:before { - content: "\f3f2"; -} - -.ti-gif:before { - content: "\f257"; -} - -.ti-gift:before { - content: "\eb68"; -} - -.ti-gift-card:before { - content: "\f3aa"; -} - -.ti-gift-off:before { - content: "\f3f3"; -} - -.ti-git-branch:before { - content: "\eab2"; -} - -.ti-git-commit:before { - content: "\eab3"; -} - -.ti-git-compare:before { - content: "\eab4"; -} - -.ti-git-fork:before { - content: "\eb8f"; -} - -.ti-git-merge:before { - content: "\eab5"; -} - -.ti-git-pull-request:before { - content: "\eab6"; -} - -.ti-git-pull-request-closed:before { - content: "\ef7f"; -} - -.ti-git-pull-request-draft:before { - content: "\efb7"; -} - -.ti-gizmo:before { - content: "\f02b"; -} - -.ti-glass:before { - content: "\eab8"; -} - -.ti-glass-full:before { - content: "\eab7"; -} - -.ti-glass-off:before { - content: "\ee91"; -} - -.ti-globe:before { - content: "\eab9"; -} - -.ti-globe-off:before { - content: "\f139"; -} - -.ti-golf:before { - content: "\ed8c"; -} - -.ti-golf-off:before { - content: "\f13a"; -} - -.ti-gps:before { - content: "\ed7a"; -} - -.ti-gradienter:before { - content: "\f3ab"; -} - -.ti-grain:before { - content: "\ee92"; -} - -.ti-graph:before { - content: "\f288"; -} - -.ti-graph-off:before { - content: "\f3f4"; -} - -.ti-grid-dots:before { - content: "\eaba"; -} - -.ti-grid-pattern:before { - content: "\efc9"; -} - -.ti-grill:before { - content: "\efa9"; -} - -.ti-grill-fork:before { - content: "\f35b"; -} - -.ti-grill-off:before { - content: "\f3f5"; -} - -.ti-grill-spatula:before { - content: "\f35c"; -} - -.ti-grip-horizontal:before { - content: "\ec00"; -} - -.ti-grip-vertical:before { - content: "\ec01"; -} - -.ti-growth:before { - content: "\ee93"; -} - -.ti-guitar-pick:before { - content: "\f4c6"; -} - -.ti-h-1:before { - content: "\ec94"; -} - -.ti-h-2:before { - content: "\ec95"; -} - -.ti-h-3:before { - content: "\ec96"; -} - -.ti-h-4:before { - content: "\ec97"; -} - -.ti-h-5:before { - content: "\ec98"; -} - -.ti-h-6:before { - content: "\ec99"; -} - -.ti-hammer:before { - content: "\ef91"; -} - -.ti-hammer-off:before { - content: "\f13c"; -} - -.ti-hand-click:before { - content: "\ef4f"; -} - -.ti-hand-finger:before { - content: "\ee94"; -} - -.ti-hand-finger-off:before { - content: "\f13d"; -} - -.ti-hand-grab:before { - content: "\f091"; -} - -.ti-hand-little-finger:before { - content: "\ee95"; -} - -.ti-hand-middle-finger:before { - content: "\ec2d"; -} - -.ti-hand-move:before { - content: "\ef50"; -} - -.ti-hand-off:before { - content: "\ed15"; -} - -.ti-hand-ring-finger:before { - content: "\ee96"; -} - -.ti-hand-rock:before { - content: "\ee97"; -} - -.ti-hand-stop:before { - content: "\ec2e"; -} - -.ti-hand-three-fingers:before { - content: "\ee98"; -} - -.ti-hand-two-fingers:before { - content: "\ee99"; -} - -.ti-hanger:before { - content: "\ee9a"; -} - -.ti-hanger-2:before { - content: "\f09c"; -} - -.ti-hanger-off:before { - content: "\f13e"; -} - -.ti-hash:before { - content: "\eabc"; -} - -.ti-haze:before { - content: "\efaa"; -} - -.ti-heading:before { - content: "\ee9b"; -} - -.ti-heading-off:before { - content: "\f13f"; -} - -.ti-headphones:before { - content: "\eabd"; -} - -.ti-headphones-off:before { - content: "\ed1d"; -} - -.ti-headset:before { - content: "\eb90"; -} - -.ti-headset-off:before { - content: "\f3f6"; -} - -.ti-health-recognition:before { - content: "\f1fb"; -} - -.ti-heart:before { - content: "\eabe"; -} - -.ti-heart-broken:before { - content: "\ecba"; -} - -.ti-heart-handshake:before { - content: "\f0f3"; -} - -.ti-heart-minus:before { - content: "\f140"; -} - -.ti-heart-off:before { - content: "\f141"; -} - -.ti-heart-plus:before { - content: "\f142"; -} - -.ti-heart-rate-monitor:before { - content: "\ef61"; -} - -.ti-heartbeat:before { - content: "\ef92"; -} - -.ti-hearts:before { - content: "\f387"; -} - -.ti-hearts-off:before { - content: "\f3f7"; -} - -.ti-helicopter:before { - content: "\ed8e"; -} - -.ti-helicopter-landing:before { - content: "\ed8d"; -} - -.ti-helmet:before { - content: "\efca"; -} - -.ti-helmet-off:before { - content: "\f143"; -} - -.ti-help:before { - content: "\eabf"; -} - -.ti-help-off:before { - content: "\f3f8"; -} - -.ti-hexagon:before { - content: "\ec02"; -} - -.ti-hexagon-0:before { - content: "\f459"; -} - -.ti-hexagon-1:before { - content: "\f45a"; -} - -.ti-hexagon-2:before { - content: "\f45b"; -} - -.ti-hexagon-3:before { - content: "\f45c"; -} - -.ti-hexagon-3d:before { - content: "\f4c7"; -} - -.ti-hexagon-4:before { - content: "\f45d"; -} - -.ti-hexagon-5:before { - content: "\f45e"; -} - -.ti-hexagon-6:before { - content: "\f45f"; -} - -.ti-hexagon-7:before { - content: "\f460"; -} - -.ti-hexagon-8:before { - content: "\f461"; -} - -.ti-hexagon-9:before { - content: "\f462"; -} - -.ti-hexagon-a:before { - content: "\f463"; -} - -.ti-hexagon-b:before { - content: "\f464"; -} - -.ti-hexagon-c:before { - content: "\f465"; -} - -.ti-hexagon-d:before { - content: "\f466"; -} - -.ti-hexagon-e:before { - content: "\f467"; -} - -.ti-hexagon-f:before { - content: "\f468"; -} - -.ti-hexagon-g:before { - content: "\f469"; -} - -.ti-hexagon-h:before { - content: "\f46a"; -} - -.ti-hexagon-i:before { - content: "\f46b"; -} - -.ti-hexagon-j:before { - content: "\f46c"; -} - -.ti-hexagon-k:before { - content: "\f46d"; -} - -.ti-hexagon-l:before { - content: "\f46e"; -} - -.ti-hexagon-letter-v:before { - content: "\f4b3"; -} - -.ti-hexagon-m:before { - content: "\f46f"; -} - -.ti-hexagon-n:before { - content: "\f470"; -} - -.ti-hexagon-o:before { - content: "\f471"; -} - -.ti-hexagon-off:before { - content: "\ee9c"; -} - -.ti-hexagon-p:before { - content: "\f472"; -} - -.ti-hexagon-q:before { - content: "\f473"; -} - -.ti-hexagon-r:before { - content: "\f474"; -} - -.ti-hexagon-s:before { - content: "\f475"; -} - -.ti-hexagon-t:before { - content: "\f476"; -} - -.ti-hexagon-u:before { - content: "\f477"; -} - -.ti-hexagon-w:before { - content: "\f478"; -} - -.ti-hexagon-x:before { - content: "\f479"; -} - -.ti-hexagon-y:before { - content: "\f47a"; -} - -.ti-hexagon-z:before { - content: "\f47b"; -} - -.ti-hexagons:before { - content: "\f09d"; -} - -.ti-hexagons-off:before { - content: "\f3f9"; -} - -.ti-hierarchy:before { - content: "\ee9e"; -} - -.ti-hierarchy-2:before { - content: "\ee9d"; -} - -.ti-hierarchy-3:before { - content: "\f289"; -} - -.ti-hierarchy-off:before { - content: "\f3fa"; -} - -.ti-highlight:before { - content: "\ef3f"; -} - -.ti-highlight-off:before { - content: "\f144"; -} - -.ti-history:before { - content: "\ebea"; -} - -.ti-history-off:before { - content: "\f3fb"; -} - -.ti-history-toggle:before { - content: "\f1fc"; -} - -.ti-home:before { - content: "\eac1"; -} - -.ti-home-2:before { - content: "\eac0"; -} - -.ti-home-bolt:before { - content: "\f336"; -} - -.ti-home-cancel:before { - content: "\f350"; -} - -.ti-home-check:before { - content: "\f337"; -} - -.ti-home-cog:before { - content: "\f338"; -} - -.ti-home-dollar:before { - content: "\f339"; -} - -.ti-home-dot:before { - content: "\f33a"; -} - -.ti-home-down:before { - content: "\f33b"; -} - -.ti-home-eco:before { - content: "\f351"; -} - -.ti-home-edit:before { - content: "\f352"; -} - -.ti-home-exclamation:before { - content: "\f33c"; -} - -.ti-home-hand:before { - content: "\f504"; -} - -.ti-home-heart:before { - content: "\f353"; -} - -.ti-home-infinity:before { - content: "\f505"; -} - -.ti-home-link:before { - content: "\f354"; -} - -.ti-home-minus:before { - content: "\f33d"; -} - -.ti-home-move:before { - content: "\f33e"; -} - -.ti-home-off:before { - content: "\f145"; -} - -.ti-home-plus:before { - content: "\f33f"; -} - -.ti-home-question:before { - content: "\f340"; -} - -.ti-home-ribbon:before { - content: "\f355"; -} - -.ti-home-search:before { - content: "\f341"; -} - -.ti-home-share:before { - content: "\f342"; -} - -.ti-home-shield:before { - content: "\f343"; -} - -.ti-home-signal:before { - content: "\f356"; -} - -.ti-home-star:before { - content: "\f344"; -} - -.ti-home-stats:before { - content: "\f345"; -} - -.ti-home-up:before { - content: "\f346"; -} - -.ti-home-x:before { - content: "\f347"; -} - -.ti-horse-toy:before { - content: "\f28a"; -} - -.ti-hotel-service:before { - content: "\ef80"; -} - -.ti-hourglass:before { - content: "\ef93"; -} - -.ti-hourglass-empty:before { - content: "\f146"; -} - -.ti-hourglass-high:before { - content: "\f092"; -} - -.ti-hourglass-low:before { - content: "\f093"; -} - -.ti-hourglass-off:before { - content: "\f147"; -} - -.ti-ice-cream:before { - content: "\eac2"; -} - -.ti-ice-cream-2:before { - content: "\ee9f"; -} - -.ti-ice-cream-off:before { - content: "\f148"; -} - -.ti-ice-skating:before { - content: "\efcb"; -} - -.ti-icons:before { - content: "\f1d4"; -} - -.ti-icons-off:before { - content: "\f3fc"; -} - -.ti-id:before { - content: "\eac3"; -} - -.ti-id-badge:before { - content: "\eff7"; -} - -.ti-id-badge-2:before { - content: "\f076"; -} - -.ti-id-badge-off:before { - content: "\f3fd"; -} - -.ti-id-off:before { - content: "\f149"; -} - -.ti-inbox:before { - content: "\eac4"; -} - -.ti-inbox-off:before { - content: "\f14a"; -} - -.ti-indent-decrease:before { - content: "\eb91"; -} - -.ti-indent-increase:before { - content: "\eb92"; -} - -.ti-infinity:before { - content: "\eb69"; -} - -.ti-infinity-off:before { - content: "\f3fe"; -} - -.ti-info-circle:before { - content: "\eac5"; -} - -.ti-info-square:before { - content: "\eac6"; -} - -.ti-input-search:before { - content: "\f2a2"; -} - -.ti-ironing-1:before { - content: "\f2f4"; -} - -.ti-ironing-2:before { - content: "\f2f5"; -} - -.ti-ironing-3:before { - content: "\f2f6"; -} - -.ti-ironing-off:before { - content: "\f2f7"; -} - -.ti-ironing-steam:before { - content: "\f2f9"; -} - -.ti-ironing-steam-off:before { - content: "\f2f8"; -} - -.ti-italic:before { - content: "\eb93"; -} - -.ti-jewish-star:before { - content: "\f3ff"; -} - -.ti-jpg:before { - content: "\f3ac"; -} - -.ti-jump-rope:before { - content: "\ed8f"; -} - -.ti-karate:before { - content: "\ed32"; -} - -.ti-kayak:before { - content: "\f1d6"; -} - -.ti-kering:before { - content: "\efb8"; -} - -.ti-key:before { - content: "\eac7"; -} - -.ti-key-off:before { - content: "\f14b"; -} - -.ti-keyboard:before { - content: "\ebd6"; -} - -.ti-keyboard-hide:before { - content: "\ec7e"; -} - -.ti-keyboard-off:before { - content: "\eea0"; -} - -.ti-keyboard-show:before { - content: "\ec7f"; -} - -.ti-ladder:before { - content: "\efe2"; -} - -.ti-ladder-off:before { - content: "\f14c"; -} - -.ti-lamp:before { - content: "\efab"; -} - -.ti-lamp-2:before { - content: "\f09e"; -} - -.ti-lamp-off:before { - content: "\f14d"; -} - -.ti-language:before { - content: "\ebbe"; -} - -.ti-language-hiragana:before { - content: "\ef77"; -} - -.ti-language-katakana:before { - content: "\ef78"; -} - -.ti-language-off:before { - content: "\f14e"; -} - -.ti-lasso:before { - content: "\efac"; -} - -.ti-lasso-off:before { - content: "\f14f"; -} - -.ti-lasso-polygon:before { - content: "\f388"; -} - -.ti-layers-difference:before { - content: "\eac8"; -} - -.ti-layers-intersect:before { - content: "\eac9"; -} - -.ti-layers-intersect-2:before { - content: "\eff8"; -} - -.ti-layers-linked:before { - content: "\eea1"; -} - -.ti-layers-off:before { - content: "\f150"; -} - -.ti-layers-subtract:before { - content: "\eaca"; -} - -.ti-layers-union:before { - content: "\eacb"; -} - -.ti-layout:before { - content: "\eadb"; -} - -.ti-layout-2:before { - content: "\eacc"; -} - -.ti-layout-align-bottom:before { - content: "\eacd"; -} - -.ti-layout-align-center:before { - content: "\eace"; -} - -.ti-layout-align-left:before { - content: "\eacf"; -} - -.ti-layout-align-middle:before { - content: "\ead0"; -} - -.ti-layout-align-right:before { - content: "\ead1"; -} - -.ti-layout-align-top:before { - content: "\ead2"; -} - -.ti-layout-board:before { - content: "\ef95"; -} - -.ti-layout-board-split:before { - content: "\ef94"; -} - -.ti-layout-bottombar:before { - content: "\ead3"; -} - -.ti-layout-bottombar-collapse:before { - content: "\f28b"; -} - -.ti-layout-bottombar-expand:before { - content: "\f28c"; -} - -.ti-layout-cards:before { - content: "\ec13"; -} - -.ti-layout-collage:before { - content: "\f389"; -} - -.ti-layout-columns:before { - content: "\ead4"; -} - -.ti-layout-dashboard:before { - content: "\f02c"; -} - -.ti-layout-distribute-horizontal:before { - content: "\ead5"; -} - -.ti-layout-distribute-vertical:before { - content: "\ead6"; -} - -.ti-layout-grid:before { - content: "\edba"; -} - -.ti-layout-grid-add:before { - content: "\edb9"; -} - -.ti-layout-kanban:before { - content: "\ec3f"; -} - -.ti-layout-list:before { - content: "\ec14"; -} - -.ti-layout-navbar:before { - content: "\ead7"; -} - -.ti-layout-navbar-collapse:before { - content: "\f28d"; -} - -.ti-layout-navbar-expand:before { - content: "\f28e"; -} - -.ti-layout-off:before { - content: "\f151"; -} - -.ti-layout-rows:before { - content: "\ead8"; -} - -.ti-layout-sidebar:before { - content: "\eada"; -} - -.ti-layout-sidebar-left-collapse:before { - content: "\f004"; -} - -.ti-layout-sidebar-left-expand:before { - content: "\f005"; -} - -.ti-layout-sidebar-right:before { - content: "\ead9"; -} - -.ti-layout-sidebar-right-collapse:before { - content: "\f006"; -} - -.ti-layout-sidebar-right-expand:before { - content: "\f007"; -} - -.ti-leaf:before { - content: "\ed4f"; -} - -.ti-leaf-off:before { - content: "\f400"; -} - -.ti-lego:before { - content: "\eadc"; -} - -.ti-lego-off:before { - content: "\f401"; -} - -.ti-lemon:before { - content: "\ef10"; -} - -.ti-lemon-2:before { - content: "\ef81"; -} - -.ti-letter-a:before { - content: "\ec50"; -} - -.ti-letter-b:before { - content: "\ec51"; -} - -.ti-letter-c:before { - content: "\ec52"; -} - -.ti-letter-case:before { - content: "\eea5"; -} - -.ti-letter-case-lower:before { - content: "\eea2"; -} - -.ti-letter-case-toggle:before { - content: "\eea3"; -} - -.ti-letter-case-upper:before { - content: "\eea4"; -} - -.ti-letter-d:before { - content: "\ec53"; -} - -.ti-letter-e:before { - content: "\ec54"; -} - -.ti-letter-f:before { - content: "\ec55"; -} - -.ti-letter-g:before { - content: "\ec56"; -} - -.ti-letter-h:before { - content: "\ec57"; -} - -.ti-letter-i:before { - content: "\ec58"; -} - -.ti-letter-j:before { - content: "\ec59"; -} - -.ti-letter-k:before { - content: "\ec5a"; -} - -.ti-letter-l:before { - content: "\ec5b"; -} - -.ti-letter-m:before { - content: "\ec5c"; -} - -.ti-letter-n:before { - content: "\ec5d"; -} - -.ti-letter-o:before { - content: "\ec5e"; -} - -.ti-letter-p:before { - content: "\ec5f"; -} - -.ti-letter-q:before { - content: "\ec60"; -} - -.ti-letter-r:before { - content: "\ec61"; -} - -.ti-letter-s:before { - content: "\ec62"; -} - -.ti-letter-spacing:before { - content: "\eea6"; -} - -.ti-letter-t:before { - content: "\ec63"; -} - -.ti-letter-u:before { - content: "\ec64"; -} - -.ti-letter-v:before { - content: "\ec65"; -} - -.ti-letter-w:before { - content: "\ec66"; -} - -.ti-letter-x:before { - content: "\ec67"; -} - -.ti-letter-y:before { - content: "\ec68"; -} - -.ti-letter-z:before { - content: "\ec69"; -} - -.ti-license:before { - content: "\ebc0"; -} - -.ti-license-off:before { - content: "\f153"; -} - -.ti-lifebuoy:before { - content: "\eadd"; -} - -.ti-lifebuoy-off:before { - content: "\f154"; -} - -.ti-line:before { - content: "\ec40"; -} - -.ti-line-dashed:before { - content: "\eea7"; -} - -.ti-line-dotted:before { - content: "\eea8"; -} - -.ti-line-height:before { - content: "\eb94"; -} - -.ti-link:before { - content: "\eade"; -} - -.ti-link-off:before { - content: "\f402"; -} - -.ti-list:before { - content: "\eb6b"; -} - -.ti-list-check:before { - content: "\eb6a"; -} - -.ti-list-details:before { - content: "\ef40"; -} - -.ti-list-numbers:before { - content: "\ef11"; -} - -.ti-list-search:before { - content: "\eea9"; -} - -.ti-live-photo:before { - content: "\eadf"; -} - -.ti-live-photo-off:before { - content: "\f403"; -} - -.ti-live-view:before { - content: "\ec6b"; -} - -.ti-loader:before { - content: "\eca3"; -} - -.ti-loader-2:before { - content: "\f226"; -} - -.ti-loader-quarter:before { - content: "\eca2"; -} - -.ti-location:before { - content: "\eae0"; -} - -.ti-location-broken:before { - content: "\f2c4"; -} - -.ti-location-off:before { - content: "\f155"; -} - -.ti-lock:before { - content: "\eae2"; -} - -.ti-lock-access:before { - content: "\eeaa"; -} - -.ti-lock-access-off:before { - content: "\f404"; -} - -.ti-lock-off:before { - content: "\ed1e"; -} - -.ti-lock-open:before { - content: "\eae1"; -} - -.ti-lock-open-off:before { - content: "\f156"; -} - -.ti-lock-square:before { - content: "\ef51"; -} - -.ti-logic-and:before { - content: "\f240"; -} - -.ti-logic-buffer:before { - content: "\f241"; -} - -.ti-logic-nand:before { - content: "\f242"; -} - -.ti-logic-nor:before { - content: "\f243"; -} - -.ti-logic-not:before { - content: "\f244"; -} - -.ti-logic-or:before { - content: "\f245"; -} - -.ti-logic-xnor:before { - content: "\f246"; -} - -.ti-logic-xor:before { - content: "\f247"; -} - -.ti-login:before { - content: "\eba7"; -} - -.ti-logout:before { - content: "\eba8"; -} - -.ti-lollipop:before { - content: "\efcc"; -} - -.ti-lollipop-off:before { - content: "\f157"; -} - -.ti-luggage:before { - content: "\efad"; -} - -.ti-luggage-off:before { - content: "\f158"; -} - -.ti-lungs:before { - content: "\ef62"; -} - -.ti-lungs-off:before { - content: "\f405"; -} - -.ti-macro:before { - content: "\eeab"; -} - -.ti-macro-off:before { - content: "\f406"; -} - -.ti-magnet:before { - content: "\eae3"; -} - -.ti-magnet-off:before { - content: "\f159"; -} - -.ti-mail:before { - content: "\eae5"; -} - -.ti-mail-fast:before { - content: "\f069"; -} - -.ti-mail-forward:before { - content: "\eeac"; -} - -.ti-mail-off:before { - content: "\f15a"; -} - -.ti-mail-opened:before { - content: "\eae4"; -} - -.ti-mailbox:before { - content: "\eead"; -} - -.ti-mailbox-off:before { - content: "\f15b"; -} - -.ti-man:before { - content: "\eae6"; -} - -.ti-manual-gearbox:before { - content: "\ed7b"; -} - -.ti-map:before { - content: "\eae9"; -} - -.ti-map-2:before { - content: "\eae7"; -} - -.ti-map-off:before { - content: "\f15c"; -} - -.ti-map-pin:before { - content: "\eae8"; -} - -.ti-map-pin-off:before { - content: "\ecf3"; -} - -.ti-map-pins:before { - content: "\ed5e"; -} - -.ti-map-search:before { - content: "\ef82"; -} - -.ti-markdown:before { - content: "\ec41"; -} - -.ti-markdown-off:before { - content: "\f407"; -} - -.ti-marquee:before { - content: "\ec77"; -} - -.ti-marquee-2:before { - content: "\eeae"; -} - -.ti-marquee-off:before { - content: "\f15d"; -} - -.ti-mars:before { - content: "\ec80"; -} - -.ti-mask:before { - content: "\eeb0"; -} - -.ti-mask-off:before { - content: "\eeaf"; -} - -.ti-masks-theater:before { - content: "\f263"; -} - -.ti-masks-theater-off:before { - content: "\f408"; -} - -.ti-massage:before { - content: "\eeb1"; -} - -.ti-math:before { - content: "\ebeb"; -} - -.ti-math-1-divide-2:before { - content: "\f4e2"; -} - -.ti-math-1-divide-3:before { - content: "\f4e3"; -} - -.ti-math-avg:before { - content: "\f0f4"; -} - -.ti-math-equal-greater:before { - content: "\f4e4"; -} - -.ti-math-equal-lower:before { - content: "\f4e5"; -} - -.ti-math-function:before { - content: "\eeb2"; -} - -.ti-math-function-off:before { - content: "\f15e"; -} - -.ti-math-function-y:before { - content: "\f4e6"; -} - -.ti-math-greater:before { - content: "\f4e7"; -} - -.ti-math-integral:before { - content: "\f4e9"; -} - -.ti-math-integral-x:before { - content: "\f4e8"; -} - -.ti-math-integrals:before { - content: "\f4ea"; -} - -.ti-math-lower:before { - content: "\f4eb"; -} - -.ti-math-max:before { - content: "\f0f5"; -} - -.ti-math-min:before { - content: "\f0f6"; -} - -.ti-math-not:before { - content: "\f4ec"; -} - -.ti-math-off:before { - content: "\f409"; -} - -.ti-math-pi:before { - content: "\f4ee"; -} - -.ti-math-pi-divide-2:before { - content: "\f4ed"; -} - -.ti-math-symbols:before { - content: "\eeb3"; -} - -.ti-math-x-divide-2:before { - content: "\f4ef"; -} - -.ti-math-x-divide-y:before { - content: "\f4f1"; -} - -.ti-math-x-divide-y-2:before { - content: "\f4f0"; -} - -.ti-math-x-minus-x:before { - content: "\f4f2"; -} - -.ti-math-x-minus-y:before { - content: "\f4f3"; -} - -.ti-math-x-plus-x:before { - content: "\f4f4"; -} - -.ti-math-x-plus-y:before { - content: "\f4f5"; -} - -.ti-math-xy:before { - content: "\f4f6"; -} - -.ti-math-y-minus-y:before { - content: "\f4f7"; -} - -.ti-math-y-plus-y:before { - content: "\f4f8"; -} - -.ti-maximize:before { - content: "\eaea"; -} - -.ti-maximize-off:before { - content: "\f15f"; -} - -.ti-meat:before { - content: "\ef12"; -} - -.ti-meat-off:before { - content: "\f40a"; -} - -.ti-medal:before { - content: "\ec78"; -} - -.ti-medal-2:before { - content: "\efcd"; -} - -.ti-medical-cross:before { - content: "\ec2f"; -} - -.ti-medical-cross-off:before { - content: "\f160"; -} - -.ti-medicine-syrup:before { - content: "\ef63"; -} - -.ti-menu:before { - content: "\eaeb"; -} - -.ti-menu-2:before { - content: "\ec42"; -} - -.ti-message:before { - content: "\eaef"; -} - -.ti-message-2:before { - content: "\eaec"; -} - -.ti-message-2-code:before { - content: "\f012"; -} - -.ti-message-2-off:before { - content: "\f40b"; -} - -.ti-message-2-share:before { - content: "\f077"; -} - -.ti-message-chatbot:before { - content: "\f38a"; -} - -.ti-message-circle:before { - content: "\eaed"; -} - -.ti-message-circle-2:before { - content: "\ed3f"; -} - -.ti-message-circle-off:before { - content: "\ed40"; -} - -.ti-message-code:before { - content: "\f013"; -} - -.ti-message-dots:before { - content: "\eaee"; -} - -.ti-message-forward:before { - content: "\f28f"; -} - -.ti-message-language:before { - content: "\efae"; -} - -.ti-message-off:before { - content: "\ed41"; -} - -.ti-message-plus:before { - content: "\ec9a"; -} - -.ti-message-report:before { - content: "\ec9b"; -} - -.ti-message-share:before { - content: "\f078"; -} - -.ti-messages:before { - content: "\eb6c"; -} - -.ti-messages-off:before { - content: "\ed42"; -} - -.ti-meteor:before { - content: "\f1fd"; -} - -.ti-meteor-off:before { - content: "\f40c"; -} - -.ti-mickey:before { - content: "\f2a3"; -} - -.ti-microphone:before { - content: "\eaf0"; -} - -.ti-microphone-2:before { - content: "\ef2c"; -} - -.ti-microphone-2-off:before { - content: "\f40d"; -} - -.ti-microphone-off:before { - content: "\ed16"; -} - -.ti-microscope:before { - content: "\ef64"; -} - -.ti-microscope-off:before { - content: "\f40e"; -} - -.ti-microwave:before { - content: "\f248"; -} - -.ti-microwave-off:before { - content: "\f264"; -} - -.ti-military-award:before { - content: "\f079"; -} - -.ti-military-rank:before { - content: "\efcf"; -} - -.ti-milk:before { - content: "\ef13"; -} - -.ti-milk-off:before { - content: "\f40f"; -} - -.ti-milkshake:before { - content: "\f4c8"; -} - -.ti-minimize:before { - content: "\eaf1"; -} - -.ti-minus:before { - content: "\eaf2"; -} - -.ti-minus-vertical:before { - content: "\eeb4"; -} - -.ti-mist:before { - content: "\ec30"; -} - -.ti-mist-off:before { - content: "\f410"; -} - -.ti-moneybag:before { - content: "\f506"; -} - -.ti-mood-angry:before { - content: "\f2de"; -} - -.ti-mood-annoyed:before { - content: "\f2e0"; -} - -.ti-mood-annoyed-2:before { - content: "\f2df"; -} - -.ti-mood-boy:before { - content: "\ed2d"; -} - -.ti-mood-confuzed:before { - content: "\eaf3"; -} - -.ti-mood-crazy-happy:before { - content: "\ed90"; -} - -.ti-mood-cry:before { - content: "\ecbb"; -} - -.ti-mood-empty:before { - content: "\eeb5"; -} - -.ti-mood-happy:before { - content: "\eaf4"; -} - -.ti-mood-kid:before { - content: "\ec03"; -} - -.ti-mood-look-left:before { - content: "\f2c5"; -} - -.ti-mood-look-right:before { - content: "\f2c6"; -} - -.ti-mood-nerd:before { - content: "\f2e1"; -} - -.ti-mood-nervous:before { - content: "\ef96"; -} - -.ti-mood-neutral:before { - content: "\eaf5"; -} - -.ti-mood-off:before { - content: "\f161"; -} - -.ti-mood-sad:before { - content: "\eaf6"; -} - -.ti-mood-sad-2:before { - content: "\f2e2"; -} - -.ti-mood-sad-dizzy:before { - content: "\f2e3"; -} - -.ti-mood-sad-squint:before { - content: "\f2e4"; -} - -.ti-mood-sick:before { - content: "\f2e5"; -} - -.ti-mood-silence:before { - content: "\f2e6"; -} - -.ti-mood-sing:before { - content: "\f2c7"; -} - -.ti-mood-smile:before { - content: "\eaf7"; -} - -.ti-mood-smile-beam:before { - content: "\f2e7"; -} - -.ti-mood-smile-dizzy:before { - content: "\f2e8"; -} - -.ti-mood-suprised:before { - content: "\ec04"; -} - -.ti-mood-tongue:before { - content: "\eb95"; -} - -.ti-mood-tongue-wink:before { - content: "\f2ea"; -} - -.ti-mood-tongue-wink-2:before { - content: "\f2e9"; -} - -.ti-mood-unamused:before { - content: "\f2eb"; -} - -.ti-mood-wink:before { - content: "\f2ed"; -} - -.ti-mood-wink-2:before { - content: "\f2ec"; -} - -.ti-mood-wrrr:before { - content: "\f2ee"; -} - -.ti-mood-xd:before { - content: "\f2ef"; -} - -.ti-moon:before { - content: "\eaf8"; -} - -.ti-moon-2:before { - content: "\ece6"; -} - -.ti-moon-off:before { - content: "\f162"; -} - -.ti-moon-stars:before { - content: "\ece7"; -} - -.ti-moped:before { - content: "\ecbc"; -} - -.ti-motorbike:before { - content: "\eeb6"; -} - -.ti-mountain:before { - content: "\ef97"; -} - -.ti-mountain-off:before { - content: "\f411"; -} - -.ti-mouse:before { - content: "\eaf9"; -} - -.ti-mouse-2:before { - content: "\f1d7"; -} - -.ti-mouse-off:before { - content: "\f163"; -} - -.ti-moustache:before { - content: "\f4c9"; -} - -.ti-movie:before { - content: "\eafa"; -} - -.ti-movie-off:before { - content: "\f164"; -} - -.ti-mug:before { - content: "\eafb"; -} - -.ti-mug-off:before { - content: "\f165"; -} - -.ti-multiplier-0-5x:before { - content: "\ef41"; -} - -.ti-multiplier-1-5x:before { - content: "\ef42"; -} - -.ti-multiplier-1x:before { - content: "\ef43"; -} - -.ti-multiplier-2x:before { - content: "\ef44"; -} - -.ti-mushroom:before { - content: "\ef14"; -} - -.ti-mushroom-off:before { - content: "\f412"; -} - -.ti-music:before { - content: "\eafc"; -} - -.ti-music-off:before { - content: "\f166"; -} - -.ti-navigation:before { - content: "\f2c8"; -} - -.ti-navigation-off:before { - content: "\f413"; -} - -.ti-needle:before { - content: "\f508"; -} - -.ti-needle-thread:before { - content: "\f507"; -} - -.ti-network:before { - content: "\f09f"; -} - -.ti-network-off:before { - content: "\f414"; -} - -.ti-new-section:before { - content: "\ebc1"; -} - -.ti-news:before { - content: "\eafd"; -} - -.ti-news-off:before { - content: "\f167"; -} - -.ti-nfc:before { - content: "\eeb7"; -} - -.ti-nfc-off:before { - content: "\f168"; -} - -.ti-no-copyright:before { - content: "\efb9"; -} - -.ti-no-creative-commons:before { - content: "\efba"; -} - -.ti-no-derivatives:before { - content: "\efbb"; -} - -.ti-north-star:before { - content: "\f014"; -} - -.ti-note:before { - content: "\eb6d"; -} - -.ti-note-off:before { - content: "\f169"; -} - -.ti-notebook:before { - content: "\eb96"; -} - -.ti-notebook-off:before { - content: "\f415"; -} - -.ti-notes:before { - content: "\eb6e"; -} - -.ti-notes-off:before { - content: "\f16a"; -} - -.ti-notification:before { - content: "\eafe"; -} - -.ti-notification-off:before { - content: "\f16b"; -} - -.ti-number:before { - content: "\f1fe"; -} - -.ti-number-0:before { - content: "\edf0"; -} - -.ti-number-1:before { - content: "\edf1"; -} - -.ti-number-2:before { - content: "\edf2"; -} - -.ti-number-3:before { - content: "\edf3"; -} - -.ti-number-4:before { - content: "\edf4"; -} - -.ti-number-5:before { - content: "\edf5"; -} - -.ti-number-6:before { - content: "\edf6"; -} - -.ti-number-7:before { - content: "\edf7"; -} - -.ti-number-8:before { - content: "\edf8"; -} - -.ti-number-9:before { - content: "\edf9"; -} - -.ti-numbers:before { - content: "\f015"; -} - -.ti-nurse:before { - content: "\ef65"; -} - -.ti-octagon:before { - content: "\ecbd"; -} - -.ti-octagon-off:before { - content: "\eeb8"; -} - -.ti-old:before { - content: "\eeb9"; -} - -.ti-olympics:before { - content: "\eeba"; -} - -.ti-olympics-off:before { - content: "\f416"; -} - -.ti-omega:before { - content: "\eb97"; -} - -.ti-outbound:before { - content: "\f249"; -} - -.ti-outlet:before { - content: "\ebd7"; -} - -.ti-oval:before { - content: "\f02e"; -} - -.ti-oval-vertical:before { - content: "\f02d"; -} - -.ti-overline:before { - content: "\eebb"; -} - -.ti-package:before { - content: "\eaff"; -} - -.ti-package-off:before { - content: "\f16c"; -} - -.ti-packages:before { - content: "\f2c9"; -} - -.ti-packge-export:before { - content: "\f07a"; -} - -.ti-packge-import:before { - content: "\f07b"; -} - -.ti-pacman:before { - content: "\eebc"; -} - -.ti-page-break:before { - content: "\ec81"; -} - -.ti-paint:before { - content: "\eb00"; -} - -.ti-paint-off:before { - content: "\f16d"; -} - -.ti-palette:before { - content: "\eb01"; -} - -.ti-palette-off:before { - content: "\f16e"; -} - -.ti-panorama-horizontal:before { - content: "\ed33"; -} - -.ti-panorama-horizontal-off:before { - content: "\f417"; -} - -.ti-panorama-vertical:before { - content: "\ed34"; -} - -.ti-panorama-vertical-off:before { - content: "\f418"; -} - -.ti-paper-bag:before { - content: "\f02f"; -} - -.ti-paper-bag-off:before { - content: "\f16f"; -} - -.ti-paperclip:before { - content: "\eb02"; -} - -.ti-parachute:before { - content: "\ed7c"; -} - -.ti-parachute-off:before { - content: "\f170"; -} - -.ti-parentheses:before { - content: "\ebd8"; -} - -.ti-parentheses-off:before { - content: "\f171"; -} - -.ti-parking:before { - content: "\eb03"; -} - -.ti-parking-off:before { - content: "\f172"; -} - -.ti-password:before { - content: "\f4ca"; -} - -.ti-paw:before { - content: "\eff9"; -} - -.ti-paw-off:before { - content: "\f419"; -} - -.ti-peace:before { - content: "\ecbe"; -} - -.ti-pencil:before { - content: "\eb04"; -} - -.ti-pencil-minus:before { - content: "\f1eb"; -} - -.ti-pencil-off:before { - content: "\f173"; -} - -.ti-pencil-plus:before { - content: "\f1ec"; -} - -.ti-pennant:before { - content: "\ed7d"; -} - -.ti-pennant-2:before { - content: "\f06a"; -} - -.ti-pennant-off:before { - content: "\f174"; -} - -.ti-pentagon:before { - content: "\efe3"; -} - -.ti-pentagon-off:before { - content: "\f41a"; -} - -.ti-pepper:before { - content: "\ef15"; -} - -.ti-pepper-off:before { - content: "\f175"; -} - -.ti-percentage:before { - content: "\ecf4"; -} - -.ti-perfume:before { - content: "\f509"; -} - -.ti-perspective:before { - content: "\eebd"; -} - -.ti-perspective-off:before { - content: "\f176"; -} - -.ti-phone:before { - content: "\eb09"; -} - -.ti-phone-call:before { - content: "\eb05"; -} - -.ti-phone-calling:before { - content: "\ec43"; -} - -.ti-phone-check:before { - content: "\ec05"; -} - -.ti-phone-incoming:before { - content: "\eb06"; -} - -.ti-phone-off:before { - content: "\ecf5"; -} - -.ti-phone-outgoing:before { - content: "\eb07"; -} - -.ti-phone-pause:before { - content: "\eb08"; -} - -.ti-phone-plus:before { - content: "\ec06"; -} - -.ti-phone-x:before { - content: "\ec07"; -} - -.ti-photo:before { - content: "\eb0a"; -} - -.ti-photo-cancel:before { - content: "\f35d"; -} - -.ti-photo-check:before { - content: "\f35e"; -} - -.ti-photo-down:before { - content: "\f35f"; -} - -.ti-photo-edit:before { - content: "\f360"; -} - -.ti-photo-heart:before { - content: "\f361"; -} - -.ti-photo-minus:before { - content: "\f362"; -} - -.ti-photo-off:before { - content: "\ecf6"; -} - -.ti-photo-plus:before { - content: "\f363"; -} - -.ti-photo-search:before { - content: "\f364"; -} - -.ti-photo-shield:before { - content: "\f365"; -} - -.ti-photo-star:before { - content: "\f366"; -} - -.ti-photo-up:before { - content: "\f38b"; -} - -.ti-photo-x:before { - content: "\f367"; -} - -.ti-physotherapist:before { - content: "\eebe"; -} - -.ti-picture-in-picture:before { - content: "\ed35"; -} - -.ti-picture-in-picture-off:before { - content: "\ed43"; -} - -.ti-picture-in-picture-on:before { - content: "\ed44"; -} - -.ti-picture-in-picture-top:before { - content: "\efe4"; -} - -.ti-pig:before { - content: "\ef52"; -} - -.ti-pig-money:before { - content: "\f38c"; -} - -.ti-pig-off:before { - content: "\f177"; -} - -.ti-pill:before { - content: "\ec44"; -} - -.ti-pill-off:before { - content: "\f178"; -} - -.ti-pills:before { - content: "\ef66"; -} - -.ti-pin:before { - content: "\ec9c"; -} - -.ti-ping-pong:before { - content: "\f38d"; -} - -.ti-pinned:before { - content: "\ed60"; -} - -.ti-pinned-off:before { - content: "\ed5f"; -} - -.ti-pizza:before { - content: "\edbb"; -} - -.ti-pizza-off:before { - content: "\f179"; -} - -.ti-plane:before { - content: "\eb6f"; -} - -.ti-plane-arrival:before { - content: "\eb99"; -} - -.ti-plane-departure:before { - content: "\eb9a"; -} - -.ti-plane-inflight:before { - content: "\ef98"; -} - -.ti-plane-off:before { - content: "\f17a"; -} - -.ti-plane-tilt:before { - content: "\f1ed"; -} - -.ti-planet:before { - content: "\ec08"; -} - -.ti-planet-off:before { - content: "\f17b"; -} - -.ti-plant:before { - content: "\ed50"; -} - -.ti-plant-2:before { - content: "\ed7e"; -} - -.ti-plant-2-off:before { - content: "\f17c"; -} - -.ti-plant-off:before { - content: "\f17d"; -} - -.ti-play-card:before { - content: "\eebf"; -} - -.ti-play-card-off:before { - content: "\f17e"; -} - -.ti-player-eject:before { - content: "\efbc"; -} - -.ti-player-pause:before { - content: "\ed45"; -} - -.ti-player-play:before { - content: "\ed46"; -} - -.ti-player-record:before { - content: "\ed47"; -} - -.ti-player-skip-back:before { - content: "\ed48"; -} - -.ti-player-skip-forward:before { - content: "\ed49"; -} - -.ti-player-stop:before { - content: "\ed4a"; -} - -.ti-player-track-next:before { - content: "\ed4b"; -} - -.ti-player-track-prev:before { - content: "\ed4c"; -} - -.ti-playlist:before { - content: "\eec0"; -} - -.ti-playlist-add:before { - content: "\f008"; -} - -.ti-playlist-off:before { - content: "\f17f"; -} - -.ti-playlist-x:before { - content: "\f009"; -} - -.ti-playstation-circle:before { - content: "\f2ad"; -} - -.ti-playstation-square:before { - content: "\f2ae"; -} - -.ti-playstation-triangle:before { - content: "\f2af"; -} - -.ti-playstation-x:before { - content: "\f2b0"; -} - -.ti-plug:before { - content: "\ebd9"; -} - -.ti-plug-connected:before { - content: "\f00a"; -} - -.ti-plug-connected-x:before { - content: "\f0a0"; -} - -.ti-plug-off:before { - content: "\f180"; -} - -.ti-plug-x:before { - content: "\f0a1"; -} - -.ti-plus:before { - content: "\eb0b"; -} - -.ti-png:before { - content: "\f3ad"; -} - -.ti-podium:before { - content: "\f1d8"; -} - -.ti-podium-off:before { - content: "\f41b"; -} - -.ti-point:before { - content: "\eb0c"; -} - -.ti-point-off:before { - content: "\f181"; -} - -.ti-pointer:before { - content: "\f265"; -} - -.ti-pokeball:before { - content: "\eec1"; -} - -.ti-pokeball-off:before { - content: "\f41c"; -} - -.ti-polaroid:before { - content: "\eec2"; -} - -.ti-polygon:before { - content: "\efd0"; -} - -.ti-polygon-off:before { - content: "\f182"; -} - -.ti-poo:before { - content: "\f258"; -} - -.ti-pool:before { - content: "\ed91"; -} - -.ti-pool-off:before { - content: "\f41d"; -} - -.ti-power:before { - content: "\eb0d"; -} - -.ti-pray:before { - content: "\ecbf"; -} - -.ti-premium-rights:before { - content: "\efbd"; -} - -.ti-prescription:before { - content: "\ef99"; -} - -.ti-presentation:before { - content: "\eb70"; -} - -.ti-presentation-analytics:before { - content: "\eec3"; -} - -.ti-presentation-off:before { - content: "\f183"; -} - -.ti-printer:before { - content: "\eb0e"; -} - -.ti-printer-off:before { - content: "\f184"; -} - -.ti-prison:before { - content: "\ef79"; -} - -.ti-prompt:before { - content: "\eb0f"; -} - -.ti-propeller:before { - content: "\eec4"; -} - -.ti-propeller-off:before { - content: "\f185"; -} - -.ti-puzzle:before { - content: "\eb10"; -} - -.ti-puzzle-2:before { - content: "\ef83"; -} - -.ti-puzzle-off:before { - content: "\f186"; -} - -.ti-pyramid:before { - content: "\eec5"; -} - -.ti-pyramid-off:before { - content: "\f187"; -} - -.ti-qrcode:before { - content: "\eb11"; -} - -.ti-qrcode-off:before { - content: "\f41e"; -} - -.ti-question-mark:before { - content: "\ec9d"; -} - -.ti-quote:before { - content: "\efbe"; -} - -.ti-quote-off:before { - content: "\f188"; -} - -.ti-radar:before { - content: "\f017"; -} - -.ti-radar-2:before { - content: "\f016"; -} - -.ti-radar-off:before { - content: "\f41f"; -} - -.ti-radio:before { - content: "\ef2d"; -} - -.ti-radio-off:before { - content: "\f420"; -} - -.ti-radioactive:before { - content: "\ecc0"; -} - -.ti-radioactive-off:before { - content: "\f189"; -} - -.ti-radius-bottom-left:before { - content: "\eec6"; -} - -.ti-radius-bottom-right:before { - content: "\eec7"; -} - -.ti-radius-top-left:before { - content: "\eec8"; -} - -.ti-radius-top-right:before { - content: "\eec9"; -} - -.ti-rainbow:before { - content: "\edbc"; -} - -.ti-rainbow-off:before { - content: "\f18a"; -} - -.ti-rating-12-plus:before { - content: "\f266"; -} - -.ti-rating-14-plus:before { - content: "\f267"; -} - -.ti-rating-16-plus:before { - content: "\f268"; -} - -.ti-rating-18-plus:before { - content: "\f269"; -} - -.ti-rating-21-plus:before { - content: "\f26a"; -} - -.ti-razor:before { - content: "\f4b5"; -} - -.ti-razor-electric:before { - content: "\f4b4"; -} - -.ti-receipt:before { - content: "\edfd"; -} - -.ti-receipt-2:before { - content: "\edfa"; -} - -.ti-receipt-off:before { - content: "\edfb"; -} - -.ti-receipt-refund:before { - content: "\edfc"; -} - -.ti-receipt-tax:before { - content: "\edbd"; -} - -.ti-recharging:before { - content: "\eeca"; -} - -.ti-record-mail:before { - content: "\eb12"; -} - -.ti-record-mail-off:before { - content: "\f18b"; -} - -.ti-rectangle:before { - content: "\ed37"; -} - -.ti-rectangle-vertical:before { - content: "\ed36"; -} - -.ti-recycle:before { - content: "\eb9b"; -} - -.ti-recycle-off:before { - content: "\f18c"; -} - -.ti-refresh:before { - content: "\eb13"; -} - -.ti-refresh-alert:before { - content: "\ed57"; -} - -.ti-refresh-dot:before { - content: "\efbf"; -} - -.ti-refresh-off:before { - content: "\f18d"; -} - -.ti-regex:before { - content: "\f31f"; -} - -.ti-regex-off:before { - content: "\f421"; -} - -.ti-registered:before { - content: "\eb14"; -} - -.ti-relation-many-to-many:before { - content: "\ed7f"; -} - -.ti-relation-one-to-many:before { - content: "\ed80"; -} - -.ti-relation-one-to-one:before { - content: "\ed81"; -} - -.ti-reload:before { - content: "\f3ae"; -} - -.ti-repeat:before { - content: "\eb72"; -} - -.ti-repeat-off:before { - content: "\f18e"; -} - -.ti-repeat-once:before { - content: "\eb71"; -} - -.ti-replace:before { - content: "\ebc7"; -} - -.ti-replace-off:before { - content: "\f422"; -} - -.ti-report:before { - content: "\eece"; -} - -.ti-report-analytics:before { - content: "\eecb"; -} - -.ti-report-medical:before { - content: "\eecc"; -} - -.ti-report-money:before { - content: "\eecd"; -} - -.ti-report-off:before { - content: "\f18f"; -} - -.ti-report-search:before { - content: "\ef84"; -} - -.ti-resize:before { - content: "\eecf"; -} - -.ti-ripple:before { - content: "\ed82"; -} - -.ti-ripple-off:before { - content: "\f190"; -} - -.ti-road:before { - content: "\f018"; -} - -.ti-road-off:before { - content: "\f191"; -} - -.ti-road-sign:before { - content: "\ecdd"; -} - -.ti-robot:before { - content: "\f00b"; -} - -.ti-robot-off:before { - content: "\f192"; -} - -.ti-rocket:before { - content: "\ec45"; -} - -.ti-rocket-off:before { - content: "\f193"; -} - -.ti-roller-skating:before { - content: "\efd1"; -} - -.ti-rollercoaster:before { - content: "\f0a2"; -} - -.ti-rollercoaster-off:before { - content: "\f423"; -} - -.ti-rotate:before { - content: "\eb16"; -} - -.ti-rotate-2:before { - content: "\ebb4"; -} - -.ti-rotate-360:before { - content: "\ef85"; -} - -.ti-rotate-clockwise:before { - content: "\eb15"; -} - -.ti-rotate-clockwise-2:before { - content: "\ebb5"; -} - -.ti-rotate-dot:before { - content: "\efe5"; -} - -.ti-rotate-rectangle:before { - content: "\ec15"; -} - -.ti-route:before { - content: "\eb17"; -} - -.ti-route-2:before { - content: "\f4b6"; -} - -.ti-route-off:before { - content: "\f194"; -} - -.ti-router:before { - content: "\eb18"; -} - -.ti-router-off:before { - content: "\f424"; -} - -.ti-row-insert-bottom:before { - content: "\eed0"; -} - -.ti-row-insert-top:before { - content: "\eed1"; -} - -.ti-rss:before { - content: "\eb19"; -} - -.ti-ruler:before { - content: "\eb1a"; -} - -.ti-ruler-2:before { - content: "\eed2"; -} - -.ti-ruler-2-off:before { - content: "\f195"; -} - -.ti-ruler-3:before { - content: "\f290"; -} - -.ti-ruler-measure:before { - content: "\f291"; -} - -.ti-ruler-off:before { - content: "\f196"; -} - -.ti-run:before { - content: "\ec82"; -} - -.ti-sailboat:before { - content: "\ec83"; -} - -.ti-sailboat-off:before { - content: "\f425"; -} - -.ti-salad:before { - content: "\f50a"; -} - -.ti-salt:before { - content: "\ef16"; -} - -.ti-satellite:before { - content: "\eed3"; -} - -.ti-satellite-off:before { - content: "\f197"; -} - -.ti-sausage:before { - content: "\ef17"; -} - -.ti-scale:before { - content: "\ebc2"; -} - -.ti-scale-off:before { - content: "\f198"; -} - -.ti-scale-outline:before { - content: "\ef53"; -} - -.ti-scale-outline-off:before { - content: "\f199"; -} - -.ti-scan:before { - content: "\ebc8"; -} - -.ti-scan-eye:before { - content: "\f1ff"; -} - -.ti-schema:before { - content: "\f200"; -} - -.ti-schema-off:before { - content: "\f426"; -} - -.ti-school:before { - content: "\ecf7"; -} - -.ti-school-off:before { - content: "\f19a"; -} - -.ti-scissors:before { - content: "\eb1b"; -} - -.ti-scissors-off:before { - content: "\f19b"; -} - -.ti-scooter:before { - content: "\ec6c"; -} - -.ti-scooter-electric:before { - content: "\ecc1"; -} - -.ti-screen-share:before { - content: "\ed18"; -} - -.ti-screen-share-off:before { - content: "\ed17"; -} - -.ti-screenshot:before { - content: "\f201"; -} - -.ti-scribble:before { - content: "\f0a3"; -} - -.ti-scribble-off:before { - content: "\f427"; -} - -.ti-script:before { - content: "\f2da"; -} - -.ti-script-minus:before { - content: "\f2d7"; -} - -.ti-script-plus:before { - content: "\f2d8"; -} - -.ti-script-x:before { - content: "\f2d9"; -} - -.ti-scuba-mask:before { - content: "\eed4"; -} - -.ti-scuba-mask-off:before { - content: "\f428"; -} - -.ti-sdk:before { - content: "\f3af"; -} - -.ti-search:before { - content: "\eb1c"; -} - -.ti-search-off:before { - content: "\f19c"; -} - -.ti-section:before { - content: "\eed5"; -} - -.ti-section-sign:before { - content: "\f019"; -} - -.ti-seeding:before { - content: "\ed51"; -} - -.ti-seeding-off:before { - content: "\f19d"; -} - -.ti-select:before { - content: "\ec9e"; -} - -.ti-selector:before { - content: "\eb1d"; -} - -.ti-send:before { - content: "\eb1e"; -} - -.ti-send-off:before { - content: "\f429"; -} - -.ti-seo:before { - content: "\f26b"; -} - -.ti-separator:before { - content: "\ebda"; -} - -.ti-separator-horizontal:before { - content: "\ec79"; -} - -.ti-separator-vertical:before { - content: "\ec7a"; -} - -.ti-server:before { - content: "\eb1f"; -} - -.ti-server-2:before { - content: "\f07c"; -} - -.ti-server-bolt:before { - content: "\f320"; -} - -.ti-server-cog:before { - content: "\f321"; -} - -.ti-server-off:before { - content: "\f19e"; -} - -.ti-servicemark:before { - content: "\ec09"; -} - -.ti-settings:before { - content: "\eb20"; -} - -.ti-settings-automation:before { - content: "\eed6"; -} - -.ti-settings-off:before { - content: "\f19f"; -} - -.ti-shadow:before { - content: "\eed8"; -} - -.ti-shadow-off:before { - content: "\eed7"; -} - -.ti-shape:before { - content: "\eb9c"; -} - -.ti-shape-2:before { - content: "\eed9"; -} - -.ti-shape-3:before { - content: "\eeda"; -} - -.ti-shape-off:before { - content: "\f1a0"; -} - -.ti-share:before { - content: "\eb21"; -} - -.ti-share-off:before { - content: "\f1a1"; -} - -.ti-shield:before { - content: "\eb24"; -} - -.ti-shield-check:before { - content: "\eb22"; -} - -.ti-shield-checkered:before { - content: "\ef9a"; -} - -.ti-shield-chevron:before { - content: "\ef9b"; -} - -.ti-shield-half:before { - content: "\f358"; -} - -.ti-shield-half-filled:before { - content: "\f357"; -} - -.ti-shield-lock:before { - content: "\ed58"; -} - -.ti-shield-off:before { - content: "\ecf8"; -} - -.ti-shield-x:before { - content: "\eb23"; -} - -.ti-ship:before { - content: "\ec84"; -} - -.ti-ship-off:before { - content: "\f42a"; -} - -.ti-shirt:before { - content: "\ec0a"; -} - -.ti-shirt-off:before { - content: "\f1a2"; -} - -.ti-shirt-sport:before { - content: "\f26c"; -} - -.ti-shoe:before { - content: "\efd2"; -} - -.ti-shoe-off:before { - content: "\f1a4"; -} - -.ti-shopping-cart:before { - content: "\eb25"; -} - -.ti-shopping-cart-discount:before { - content: "\eedb"; -} - -.ti-shopping-cart-off:before { - content: "\eedc"; -} - -.ti-shopping-cart-plus:before { - content: "\eedd"; -} - -.ti-shopping-cart-x:before { - content: "\eede"; -} - -.ti-shovel:before { - content: "\f1d9"; -} - -.ti-shredder:before { - content: "\eedf"; -} - -.ti-sign-left:before { - content: "\f06b"; -} - -.ti-sign-right:before { - content: "\f06c"; -} - -.ti-signal-3g:before { - content: "\f1ee"; -} - -.ti-signal-4g:before { - content: "\f1ef"; -} - -.ti-signal-4g-plus:before { - content: "\f259"; -} - -.ti-signal-5g:before { - content: "\f1f0"; -} - -.ti-signature:before { - content: "\eee0"; -} - -.ti-signature-off:before { - content: "\f1a5"; -} - -.ti-sitemap:before { - content: "\eb9d"; -} - -.ti-sitemap-off:before { - content: "\f1a6"; -} - -.ti-skateboard:before { - content: "\ecc2"; -} - -.ti-skateboard-off:before { - content: "\f42b"; -} - -.ti-skull:before { - content: "\f292"; -} - -.ti-slash:before { - content: "\f4f9"; -} - -.ti-sleigh:before { - content: "\ef9c"; -} - -.ti-slice:before { - content: "\ebdb"; -} - -.ti-slideshow:before { - content: "\ebc9"; -} - -.ti-smart-home:before { - content: "\ecde"; -} - -.ti-smart-home-off:before { - content: "\f1a7"; -} - -.ti-smoking:before { - content: "\ecc4"; -} - -.ti-smoking-no:before { - content: "\ecc3"; -} - -.ti-snowflake:before { - content: "\ec0b"; -} - -.ti-snowflake-off:before { - content: "\f1a8"; -} - -.ti-snowman:before { - content: "\f26d"; -} - -.ti-soccer-field:before { - content: "\ed92"; -} - -.ti-social:before { - content: "\ebec"; -} - -.ti-social-off:before { - content: "\f1a9"; -} - -.ti-sock:before { - content: "\eee1"; -} - -.ti-sofa:before { - content: "\efaf"; -} - -.ti-sofa-off:before { - content: "\f42c"; -} - -.ti-sort-ascending:before { - content: "\eb26"; -} - -.ti-sort-ascending-2:before { - content: "\eee2"; -} - -.ti-sort-ascending-letters:before { - content: "\ef18"; -} - -.ti-sort-ascending-numbers:before { - content: "\ef19"; -} - -.ti-sort-descending:before { - content: "\eb27"; -} - -.ti-sort-descending-2:before { - content: "\eee3"; -} - -.ti-sort-descending-letters:before { - content: "\ef1a"; -} - -.ti-sort-descending-numbers:before { - content: "\ef1b"; -} - -.ti-sos:before { - content: "\f24a"; -} - -.ti-soup:before { - content: "\ef2e"; -} - -.ti-soup-off:before { - content: "\f42d"; -} - -.ti-source-code:before { - content: "\f4a2"; -} - -.ti-space:before { - content: "\ec0c"; -} - -.ti-space-off:before { - content: "\f1aa"; -} - -.ti-spacing-horizontal:before { - content: "\ef54"; -} - -.ti-spacing-vertical:before { - content: "\ef55"; -} - -.ti-spade:before { - content: "\effa"; -} - -.ti-speakerphone:before { - content: "\ed61"; -} - -.ti-speedboat:before { - content: "\ed93"; -} - -.ti-spider:before { - content: "\f293"; -} - -.ti-spiral:before { - content: "\f294"; -} - -.ti-spiral-off:before { - content: "\f42e"; -} - -.ti-sport-billard:before { - content: "\eee4"; -} - -.ti-spray:before { - content: "\f50b"; -} - -.ti-spy:before { - content: "\f227"; -} - -.ti-spy-off:before { - content: "\f42f"; -} - -.ti-square:before { - content: "\eb2c"; -} - -.ti-square-arrow-down:before { - content: "\f4b7"; -} - -.ti-square-arrow-left:before { - content: "\f4b8"; -} - -.ti-square-arrow-right:before { - content: "\f4b9"; -} - -.ti-square-arrow-up:before { - content: "\f4ba"; -} - -.ti-square-asterisk:before { - content: "\f01a"; -} - -.ti-square-check:before { - content: "\eb28"; -} - -.ti-square-dot:before { - content: "\ed59"; -} - -.ti-square-forbid:before { - content: "\ed5b"; -} - -.ti-square-forbid-2:before { - content: "\ed5a"; -} - -.ti-square-half:before { - content: "\effb"; -} - -.ti-square-letter-a:before { - content: "\f47c"; -} - -.ti-square-letter-b:before { - content: "\f47d"; -} - -.ti-square-letter-c:before { - content: "\f47e"; -} - -.ti-square-letter-d:before { - content: "\f47f"; -} - -.ti-square-letter-e:before { - content: "\f480"; -} - -.ti-square-letter-f:before { - content: "\f481"; -} - -.ti-square-letter-g:before { - content: "\f482"; -} - -.ti-square-letter-h:before { - content: "\f483"; -} - -.ti-square-letter-i:before { - content: "\f484"; -} - -.ti-square-letter-j:before { - content: "\f485"; -} - -.ti-square-letter-k:before { - content: "\f486"; -} - -.ti-square-letter-l:before { - content: "\f487"; -} - -.ti-square-letter-m:before { - content: "\f488"; -} - -.ti-square-letter-n:before { - content: "\f489"; -} - -.ti-square-letter-o:before { - content: "\f48a"; -} - -.ti-square-letter-p:before { - content: "\f48b"; -} - -.ti-square-letter-q:before { - content: "\f48c"; -} - -.ti-square-letter-r:before { - content: "\f48d"; -} - -.ti-square-letter-s:before { - content: "\f48e"; -} - -.ti-square-letter-t:before { - content: "\f48f"; -} - -.ti-square-letter-u:before { - content: "\f490"; -} - -.ti-square-letter-v:before { - content: "\f4bb"; -} - -.ti-square-letter-w:before { - content: "\f491"; -} - -.ti-square-letter-x:before { - content: "\f4bc"; -} - -.ti-square-letter-y:before { - content: "\f492"; -} - -.ti-square-letter-z:before { - content: "\f493"; -} - -.ti-square-minus:before { - content: "\eb29"; -} - -.ti-square-number-0:before { - content: "\eee5"; -} - -.ti-square-number-1:before { - content: "\eee6"; -} - -.ti-square-number-2:before { - content: "\eee7"; -} - -.ti-square-number-3:before { - content: "\eee8"; -} - -.ti-square-number-4:before { - content: "\eee9"; -} - -.ti-square-number-5:before { - content: "\eeea"; -} - -.ti-square-number-6:before { - content: "\eeeb"; -} - -.ti-square-number-7:before { - content: "\eeec"; -} - -.ti-square-number-8:before { - content: "\eeed"; -} - -.ti-square-number-9:before { - content: "\eeee"; -} - -.ti-square-off:before { - content: "\eeef"; -} - -.ti-square-plus:before { - content: "\eb2a"; -} - -.ti-square-root:before { - content: "\eef1"; -} - -.ti-square-root-2:before { - content: "\eef0"; -} - -.ti-square-rotated:before { - content: "\ecdf"; -} - -.ti-square-rotated-forbid:before { - content: "\f01c"; -} - -.ti-square-rotated-forbid-2:before { - content: "\f01b"; -} - -.ti-square-rotated-off:before { - content: "\eef2"; -} - -.ti-square-toggle:before { - content: "\eef4"; -} - -.ti-square-toggle-horizontal:before { - content: "\eef3"; -} - -.ti-square-x:before { - content: "\eb2b"; -} - -.ti-squares-diagonal:before { - content: "\eef5"; -} - -.ti-squares-filled:before { - content: "\eef6"; -} - -.ti-stack:before { - content: "\eb2d"; -} - -.ti-stack-2:before { - content: "\eef7"; -} - -.ti-stack-3:before { - content: "\ef9d"; -} - -.ti-stack-pop:before { - content: "\f234"; -} - -.ti-stack-push:before { - content: "\f235"; -} - -.ti-stairs:before { - content: "\eca6"; -} - -.ti-stairs-down:before { - content: "\eca4"; -} - -.ti-stairs-up:before { - content: "\eca5"; -} - -.ti-star:before { - content: "\eb2e"; -} - -.ti-star-half:before { - content: "\ed19"; -} - -.ti-star-off:before { - content: "\ed62"; -} - -.ti-stars:before { - content: "\ed38"; -} - -.ti-stars-off:before { - content: "\f430"; -} - -.ti-status-change:before { - content: "\f3b0"; -} - -.ti-steam:before { - content: "\f24b"; -} - -.ti-steering-wheel:before { - content: "\ec7b"; -} - -.ti-steering-wheel-off:before { - content: "\f431"; -} - -.ti-step-into:before { - content: "\ece0"; -} - -.ti-step-out:before { - content: "\ece1"; -} - -.ti-stereo-glasses:before { - content: "\f4cb"; -} - -.ti-stethoscope:before { - content: "\edbe"; -} - -.ti-stethoscope-off:before { - content: "\f432"; -} - -.ti-sticker:before { - content: "\eb2f"; -} - -.ti-storm:before { - content: "\f24c"; -} - -.ti-storm-off:before { - content: "\f433"; -} - -.ti-stretching:before { - content: "\f2db"; -} - -.ti-strikethrough:before { - content: "\eb9e"; -} - -.ti-submarine:before { - content: "\ed94"; -} - -.ti-subscript:before { - content: "\eb9f"; -} - -.ti-subtask:before { - content: "\ec9f"; -} - -.ti-sum:before { - content: "\eb73"; -} - -.ti-sum-off:before { - content: "\f1ab"; -} - -.ti-sun:before { - content: "\eb30"; -} - -.ti-sun-high:before { - content: "\f236"; -} - -.ti-sun-low:before { - content: "\f237"; -} - -.ti-sun-moon:before { - content: "\f4a3"; -} - -.ti-sun-off:before { - content: "\ed63"; -} - -.ti-sun-wind:before { - content: "\f238"; -} - -.ti-sunglasses:before { - content: "\f239"; -} - -.ti-sunrise:before { - content: "\ef1c"; -} - -.ti-sunset:before { - content: "\ec31"; -} - -.ti-sunset-2:before { - content: "\f23a"; -} - -.ti-superscript:before { - content: "\eba0"; -} - -.ti-svg:before { - content: "\f25a"; -} - -.ti-swimming:before { - content: "\ec92"; -} - -.ti-switch:before { - content: "\eb33"; -} - -.ti-switch-2:before { - content: "\edbf"; -} - -.ti-switch-3:before { - content: "\edc0"; -} - -.ti-switch-horizontal:before { - content: "\eb31"; -} - -.ti-switch-vertical:before { - content: "\eb32"; -} - -.ti-sword:before { - content: "\f030"; -} - -.ti-sword-off:before { - content: "\f434"; -} - -.ti-swords:before { - content: "\f132"; -} - -.ti-table:before { - content: "\eba1"; -} - -.ti-table-alias:before { - content: "\f25b"; -} - -.ti-table-export:before { - content: "\eef8"; -} - -.ti-table-import:before { - content: "\eef9"; -} - -.ti-table-off:before { - content: "\eefa"; -} - -.ti-table-options:before { - content: "\f25c"; -} - -.ti-table-shortcut:before { - content: "\f25d"; -} - -.ti-tag:before { - content: "\eb34"; -} - -.ti-tag-off:before { - content: "\efc0"; -} - -.ti-tags:before { - content: "\ef86"; -} - -.ti-tags-off:before { - content: "\efc1"; -} - -.ti-tallymark-1:before { - content: "\ec46"; -} - -.ti-tallymark-2:before { - content: "\ec47"; -} - -.ti-tallymark-3:before { - content: "\ec48"; -} - -.ti-tallymark-4:before { - content: "\ec49"; -} - -.ti-tallymarks:before { - content: "\ec4a"; -} - -.ti-tank:before { - content: "\ed95"; -} - -.ti-target:before { - content: "\eb35"; -} - -.ti-target-off:before { - content: "\f1ad"; -} - -.ti-telescope:before { - content: "\f07d"; -} - -.ti-telescope-off:before { - content: "\f1ae"; -} - -.ti-temperature:before { - content: "\eb38"; -} - -.ti-temperature-celsius:before { - content: "\eb36"; -} - -.ti-temperature-fahrenheit:before { - content: "\eb37"; -} - -.ti-temperature-minus:before { - content: "\ebed"; -} - -.ti-temperature-off:before { - content: "\f1af"; -} - -.ti-temperature-plus:before { - content: "\ebee"; -} - -.ti-template:before { - content: "\eb39"; -} - -.ti-template-off:before { - content: "\f1b0"; -} - -.ti-tent:before { - content: "\eefb"; -} - -.ti-tent-off:before { - content: "\f435"; -} - -.ti-terminal:before { - content: "\ebdc"; -} - -.ti-terminal-2:before { - content: "\ebef"; -} - -.ti-test-pipe:before { - content: "\eb3a"; -} - -.ti-test-pipe-2:before { - content: "\f0a4"; -} - -.ti-test-pipe-off:before { - content: "\f1b1"; -} - -.ti-tex:before { - content: "\f4e0"; -} - -.ti-text-caption:before { - content: "\f4a4"; -} - -.ti-text-color:before { - content: "\f2dc"; -} - -.ti-text-decrease:before { - content: "\f202"; -} - -.ti-text-direction-ltr:before { - content: "\eefc"; -} - -.ti-text-direction-rtl:before { - content: "\eefd"; -} - -.ti-text-increase:before { - content: "\f203"; -} - -.ti-text-orientation:before { - content: "\f2a4"; -} - -.ti-text-plus:before { - content: "\f2a5"; -} - -.ti-text-recognition:before { - content: "\f204"; -} - -.ti-text-resize:before { - content: "\ef87"; -} - -.ti-text-size:before { - content: "\f2b1"; -} - -.ti-text-spellcheck:before { - content: "\f2a6"; -} - -.ti-text-wrap:before { - content: "\ebdd"; -} - -.ti-text-wrap-disabled:before { - content: "\eca7"; -} - -.ti-thermometer:before { - content: "\ef67"; -} - -.ti-thumb-down:before { - content: "\eb3b"; -} - -.ti-thumb-down-off:before { - content: "\f436"; -} - -.ti-thumb-up:before { - content: "\eb3c"; -} - -.ti-thumb-up-off:before { - content: "\f437"; -} - -.ti-ticket:before { - content: "\eb3d"; -} - -.ti-ticket-off:before { - content: "\f1b2"; -} - -.ti-tie:before { - content: "\f07e"; -} - -.ti-tilde:before { - content: "\f4a5"; -} - -.ti-tilt-shift:before { - content: "\eefe"; -} - -.ti-tilt-shift-off:before { - content: "\f1b3"; -} - -.ti-timeline:before { - content: "\f031"; -} - -.ti-tir:before { - content: "\ebf0"; -} - -.ti-toggle-left:before { - content: "\eb3e"; -} - -.ti-toggle-right:before { - content: "\eb3f"; -} - -.ti-toilet-paper:before { - content: "\efd3"; -} - -.ti-toilet-paper-off:before { - content: "\f1b4"; -} - -.ti-tool:before { - content: "\eb40"; -} - -.ti-tools:before { - content: "\ebca"; -} - -.ti-tools-kitchen:before { - content: "\ed64"; -} - -.ti-tools-kitchen-2:before { - content: "\eeff"; -} - -.ti-tools-kitchen-2-off:before { - content: "\f1b5"; -} - -.ti-tools-kitchen-off:before { - content: "\f1b6"; -} - -.ti-tools-off:before { - content: "\f1b7"; -} - -.ti-tooltip:before { - content: "\f2dd"; -} - -.ti-tornado:before { - content: "\ece2"; -} - -.ti-tournament:before { - content: "\ecd0"; -} - -.ti-tower:before { - content: "\f2cb"; -} - -.ti-tower-off:before { - content: "\f2ca"; -} - -.ti-track:before { - content: "\ef00"; -} - -.ti-tractor:before { - content: "\ec0d"; -} - -.ti-trademark:before { - content: "\ec0e"; -} - -.ti-traffic-cone:before { - content: "\ec0f"; -} - -.ti-traffic-cone-off:before { - content: "\f1b8"; -} - -.ti-traffic-lights:before { - content: "\ed39"; -} - -.ti-traffic-lights-off:before { - content: "\f1b9"; -} - -.ti-train:before { - content: "\ed96"; -} - -.ti-transfer-in:before { - content: "\ef2f"; -} - -.ti-transfer-out:before { - content: "\ef30"; -} - -.ti-transform:before { - content: "\f38e"; -} - -.ti-transition-bottom:before { - content: "\f2b2"; -} - -.ti-transition-left:before { - content: "\f2b3"; -} - -.ti-transition-right:before { - content: "\f2b4"; -} - -.ti-transition-top:before { - content: "\f2b5"; -} - -.ti-trash:before { - content: "\eb41"; -} - -.ti-trash-off:before { - content: "\ed65"; -} - -.ti-trash-x:before { - content: "\ef88"; -} - -.ti-tree:before { - content: "\ef01"; -} - -.ti-trees:before { - content: "\ec10"; -} - -.ti-trending-down:before { - content: "\eb42"; -} - -.ti-trending-down-2:before { - content: "\edc1"; -} - -.ti-trending-down-3:before { - content: "\edc2"; -} - -.ti-trending-up:before { - content: "\eb43"; -} - -.ti-trending-up-2:before { - content: "\edc3"; -} - -.ti-trending-up-3:before { - content: "\edc4"; -} - -.ti-triangle:before { - content: "\eb44"; -} - -.ti-triangle-inverted:before { - content: "\f01d"; -} - -.ti-triangle-off:before { - content: "\ef02"; -} - -.ti-triangle-square-circle:before { - content: "\ece8"; -} - -.ti-triangles:before { - content: "\f0a5"; -} - -.ti-trident:before { - content: "\ecc5"; -} - -.ti-trolley:before { - content: "\f4cc"; -} - -.ti-trophy:before { - content: "\eb45"; -} - -.ti-trophy-off:before { - content: "\f438"; -} - -.ti-trowel:before { - content: "\f368"; -} - -.ti-truck:before { - content: "\ebc4"; -} - -.ti-truck-delivery:before { - content: "\ec4b"; -} - -.ti-truck-loading:before { - content: "\f1da"; -} - -.ti-truck-off:before { - content: "\ef03"; -} - -.ti-truck-return:before { - content: "\ec4c"; -} - -.ti-txt:before { - content: "\f3b1"; -} - -.ti-typography:before { - content: "\ebc5"; -} - -.ti-typography-off:before { - content: "\f1ba"; -} - -.ti-uf-off:before { - content: "\f26e"; -} - -.ti-ufo:before { - content: "\f26f"; -} - -.ti-umbrella:before { - content: "\ebf1"; -} - -.ti-umbrella-off:before { - content: "\f1bb"; -} - -.ti-underline:before { - content: "\eba2"; -} - -.ti-unlink:before { - content: "\eb46"; -} - -.ti-upload:before { - content: "\eb47"; -} - -.ti-urgent:before { - content: "\eb48"; -} - -.ti-usb:before { - content: "\f00c"; -} - -.ti-user:before { - content: "\eb4d"; -} - -.ti-user-check:before { - content: "\eb49"; -} - -.ti-user-circle:before { - content: "\ef68"; -} - -.ti-user-exclamation:before { - content: "\ec12"; -} - -.ti-user-minus:before { - content: "\eb4a"; -} - -.ti-user-off:before { - content: "\ecf9"; -} - -.ti-user-plus:before { - content: "\eb4b"; -} - -.ti-user-search:before { - content: "\ef89"; -} - -.ti-user-x:before { - content: "\eb4c"; -} - -.ti-users:before { - content: "\ebf2"; -} - -.ti-uv-index:before { - content: "\f3b2"; -} - -.ti-ux-circle:before { - content: "\f369"; -} - -.ti-vaccine:before { - content: "\ef04"; -} - -.ti-vaccine-bottle:before { - content: "\ef69"; -} - -.ti-vaccine-bottle-off:before { - content: "\f439"; -} - -.ti-vaccine-off:before { - content: "\f1bc"; -} - -.ti-variable:before { - content: "\ef05"; -} - -.ti-variable-minus:before { - content: "\f36a"; -} - -.ti-variable-off:before { - content: "\f1bd"; -} - -.ti-variable-plus:before { - content: "\f36b"; -} - -.ti-vector:before { - content: "\eca9"; -} - -.ti-vector-bezier:before { - content: "\ef1d"; -} - -.ti-vector-bezier-2:before { - content: "\f1a3"; -} - -.ti-vector-bezier-arc:before { - content: "\f4cd"; -} - -.ti-vector-bezier-circle:before { - content: "\f4ce"; -} - -.ti-vector-off:before { - content: "\f1be"; -} - -.ti-vector-triangle:before { - content: "\eca8"; -} - -.ti-vector-triangle-off:before { - content: "\f1bf"; -} - -.ti-venus:before { - content: "\ec86"; -} - -.ti-versions:before { - content: "\ed52"; -} - -.ti-versions-off:before { - content: "\f1c0"; -} - -.ti-video:before { - content: "\ed22"; -} - -.ti-video-minus:before { - content: "\ed1f"; -} - -.ti-video-off:before { - content: "\ed20"; -} - -.ti-video-plus:before { - content: "\ed21"; -} - -.ti-view-360:before { - content: "\ed84"; -} - -.ti-view-360-off:before { - content: "\f1c1"; -} - -.ti-viewfinder:before { - content: "\eb4e"; -} - -.ti-viewfinder-off:before { - content: "\f1c2"; -} - -.ti-viewport-narrow:before { - content: "\ebf3"; -} - -.ti-viewport-wide:before { - content: "\ebf4"; -} - -.ti-vinyl:before { - content: "\f00d"; -} - -.ti-vip:before { - content: "\f3b3"; -} - -.ti-vip-off:before { - content: "\f43a"; -} - -.ti-virus:before { - content: "\eb74"; -} - -.ti-virus-off:before { - content: "\ed66"; -} - -.ti-virus-search:before { - content: "\ed67"; -} - -.ti-vocabulary:before { - content: "\ef1e"; -} - -.ti-vocabulary-off:before { - content: "\f43b"; -} - -.ti-volume:before { - content: "\eb51"; -} - -.ti-volume-2:before { - content: "\eb4f"; -} - -.ti-volume-3:before { - content: "\eb50"; -} - -.ti-volume-off:before { - content: "\f1c3"; -} - -.ti-walk:before { - content: "\ec87"; -} - -.ti-wall:before { - content: "\ef7a"; -} - -.ti-wall-off:before { - content: "\f43c"; -} - -.ti-wallet:before { - content: "\eb75"; -} - -.ti-wallet-off:before { - content: "\f1c4"; -} - -.ti-wallpaper:before { - content: "\ef56"; -} - -.ti-wallpaper-off:before { - content: "\f1c5"; -} - -.ti-wand:before { - content: "\ebcb"; -} - -.ti-wand-off:before { - content: "\f1c6"; -} - -.ti-wash:before { - content: "\f311"; -} - -.ti-wash-dry:before { - content: "\f304"; -} - -.ti-wash-dry-1:before { - content: "\f2fa"; -} - -.ti-wash-dry-2:before { - content: "\f2fb"; -} - -.ti-wash-dry-3:before { - content: "\f2fc"; -} - -.ti-wash-dry-a:before { - content: "\f2fd"; -} - -.ti-wash-dry-dip:before { - content: "\f2fe"; -} - -.ti-wash-dry-f:before { - content: "\f2ff"; -} - -.ti-wash-dry-hang:before { - content: "\f300"; -} - -.ti-wash-dry-off:before { - content: "\f301"; -} - -.ti-wash-dry-p:before { - content: "\f302"; -} - -.ti-wash-dry-shade:before { - content: "\f303"; -} - -.ti-wash-dry-w:before { - content: "\f322"; -} - -.ti-wash-dryclean:before { - content: "\f305"; -} - -.ti-wash-dryclean-off:before { - content: "\f323"; -} - -.ti-wash-gentle:before { - content: "\f306"; -} - -.ti-wash-machine:before { - content: "\f25e"; -} - -.ti-wash-off:before { - content: "\f307"; -} - -.ti-wash-press:before { - content: "\f308"; -} - -.ti-wash-temperature-1:before { - content: "\f309"; -} - -.ti-wash-temperature-2:before { - content: "\f30a"; -} - -.ti-wash-temperature-3:before { - content: "\f30b"; -} - -.ti-wash-temperature-4:before { - content: "\f30c"; -} - -.ti-wash-temperature-5:before { - content: "\f30d"; -} - -.ti-wash-temperature-6:before { - content: "\f30e"; -} - -.ti-wash-tumble-dry:before { - content: "\f30f"; -} - -.ti-wash-tumble-off:before { - content: "\f310"; -} - -.ti-wave-saw-tool:before { - content: "\ecd3"; -} - -.ti-wave-sine:before { - content: "\ecd4"; -} - -.ti-wave-square:before { - content: "\ecd5"; -} - -.ti-webhook:before { - content: "\f01e"; -} - -.ti-webhook-off:before { - content: "\f43d"; -} - -.ti-wheelchair:before { - content: "\f1db"; -} - -.ti-wheelchair-off:before { - content: "\f43e"; -} - -.ti-wifi:before { - content: "\eb52"; -} - -.ti-wifi-0:before { - content: "\eba3"; -} - -.ti-wifi-1:before { - content: "\eba4"; -} - -.ti-wifi-2:before { - content: "\eba5"; -} - -.ti-wifi-off:before { - content: "\ecfa"; -} - -.ti-wind:before { - content: "\ec34"; -} - -.ti-wind-off:before { - content: "\f1c7"; -} - -.ti-windmill:before { - content: "\ed85"; -} - -.ti-windmill-off:before { - content: "\f1c8"; -} - -.ti-window:before { - content: "\ef06"; -} - -.ti-window-maximize:before { - content: "\f1f1"; -} - -.ti-window-minimize:before { - content: "\f1f2"; -} - -.ti-window-off:before { - content: "\f1c9"; -} - -.ti-windsock:before { - content: "\f06d"; -} - -.ti-wiper:before { - content: "\ecab"; -} - -.ti-wiper-wash:before { - content: "\ecaa"; -} - -.ti-woman:before { - content: "\eb53"; -} - -.ti-wood:before { - content: "\f359"; -} - -.ti-world:before { - content: "\eb54"; -} - -.ti-world-download:before { - content: "\ef8a"; -} - -.ti-world-latitude:before { - content: "\ed2e"; -} - -.ti-world-longitude:before { - content: "\ed2f"; -} - -.ti-world-off:before { - content: "\f1ca"; -} - -.ti-world-upload:before { - content: "\ef8b"; -} - -.ti-world-www:before { - content: "\f38f"; -} - -.ti-wrecking-ball:before { - content: "\ed97"; -} - -.ti-writing:before { - content: "\ef08"; -} - -.ti-writing-off:before { - content: "\f1cb"; -} - -.ti-writing-sign:before { - content: "\ef07"; -} - -.ti-writing-sign-off:before { - content: "\f1cc"; -} - -.ti-x:before { - content: "\eb55"; -} - -.ti-xbox-a:before { - content: "\f2b6"; -} - -.ti-xbox-b:before { - content: "\f2b7"; -} - -.ti-xbox-x:before { - content: "\f2b8"; -} - -.ti-xbox-y:before { - content: "\f2b9"; -} - -.ti-yin-yang:before { - content: "\ec35"; -} - -.ti-yoga:before { - content: "\f01f"; -} - -.ti-zeppelin:before { - content: "\f270"; -} - -.ti-zeppelin-off:before { - content: "\f43f"; -} - -.ti-zip:before { - content: "\f3b4"; -} - -.ti-zodiac-aquarius:before { - content: "\ecac"; -} - -.ti-zodiac-aries:before { - content: "\ecad"; -} - -.ti-zodiac-cancer:before { - content: "\ecae"; -} - -.ti-zodiac-capricorn:before { - content: "\ecaf"; -} - -.ti-zodiac-gemini:before { - content: "\ecb0"; -} - -.ti-zodiac-leo:before { - content: "\ecb1"; -} - -.ti-zodiac-libra:before { - content: "\ecb2"; -} - -.ti-zodiac-pisces:before { - content: "\ecb3"; -} - -.ti-zodiac-sagittarius:before { - content: "\ecb4"; -} - -.ti-zodiac-scorpio:before { - content: "\ecb5"; -} - -.ti-zodiac-taurus:before { - content: "\ecb6"; -} - -.ti-zodiac-virgo:before { - content: "\ecb7"; -} - -.ti-zoom-cancel:before { - content: "\ec4d"; -} - -.ti-zoom-check:before { - content: "\ef09"; -} - -.ti-zoom-code:before { - content: "\f07f"; -} - -.ti-zoom-exclamation:before { - content: "\f080"; -} - -.ti-zoom-in:before { - content: "\eb56"; -} - -.ti-zoom-in-area:before { - content: "\f1dc"; -} - -.ti-zoom-money:before { - content: "\ef0a"; -} - -.ti-zoom-out:before { - content: "\eb57"; -} - -.ti-zoom-out-area:before { - content: "\f1dd"; -} - -.ti-zoom-pan:before { - content: "\f1de"; -} - -.ti-zoom-question:before { - content: "\edeb"; -} - -.ti-zoom-replace:before { - content: "\f2a7"; -} - -.ti-zoom-reset:before { - content: "\f295"; -} - -.ti-zzz:before { - content: "\f228"; -} - -.ti-zzz-off:before { - content: "\f440"; -} diff --git a/public/assets/css/dash/index.css b/public/assets/css/dash/index.css deleted file mode 100644 index 61cdad1..0000000 --- a/public/assets/css/dash/index.css +++ /dev/null @@ -1,149 +0,0 @@ -section[class="index-header"] { - display: grid; - grid-template-columns: 1fr 1fr; - width: 100%; - max-width: 900px; - margin: 60px auto 0; -} - -section[class="index-recent-pages"] a { - width: 100%; - height: 100%; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[class="index-recent-pages"] a video { - width: 100%; - position: absolute; - object-fit: cover; - height: 100%; - border-radius: 5px; -} - -section[class="index-recent-pages"] a:nth-child(1) { - grid-column: 1/4; - grid-row: 1/3; -} - -section[class="index-recent-pages"] a:nth-child(2) { - grid-row: 3/6; -} - -section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 2/4; - grid-row: 3/5; -} - -section[class="index-header"] div[class="index-header-right"] { - display: flex; - justify-content: right; - align-items: center; -} - -section[class="index-header"] div[class="index-header-right"] a { - border-bottom: none; - margin-left: 5px; -} - -section[class="index-recent-pages"] { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - grid-auto-rows: minmax(200px, auto); - gap: 10px; - width: 100%; - max-width: 900px; - margin: 10px auto; -} - -section[class="index-recent-pages"] a button { - padding: 1px 5px; -} - -section[class="index-recent-pages"] button i { - font-size: 1.8em; -} - -section[class="index-recent-pages"] button[data-active="true"] { - background: var(--primary); -} - -section[class="index-recent-pages"] button[data-active="true"] i { - color: var(--tertiary); -} - -section[class="index-recent-pages"] button[data-active="false"] { - background: var(--secondary); -} - -section[class="index-recent-pages"] button[data-active="false"] i { - fill: var(--primary); -} - -section[class="index-recent-pages"] aside { - font-size: 1.1em; - color: var(--white); - text-shadow: 2px 2px 2px var(--black); - padding: 10px; - z-index: 10; -} - -section[class="index-recent-pages"] hr { - color: var(--white); - border: 0.1px solid; - margin: 7px 0; -} - -@media only screen and (max-width: 900px) { - section[class="index-header"], - section[class="index-recent-pages"] { - width: 97%; - } -} - -@media only screen and (max-width: 520px) { - section[class="index-recent-pages"] { - grid-template-columns: 1fr 1fr; - } - - section[class="index-recent-pages"] a:nth-child(1) { - grid-column: 1/3; - grid-row: 1/2; - } - - section[class="index-recent-pages"] a:nth-child(2) { - grid-row: 2/3; - grid-column: 1/2; - } - - section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 2/3; - grid-row: 2/3; - } -} - -@media only screen and (max-width: 350px) { - section[class="index-recent-pages"] a:nth-child(2) { - grid-column: 1/3; - grid-row: 2/3; - } - - section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 1/3; - grid-row: 3/4; - } - - section[class="index-recent-pages"] a:nth-child(4) { - grid-column: 1/3; - grid-row: 4/5; - } - - section[class="index-recent-pages"] a:nth-child(5) { - grid-column: 1/3; - grid-row: 5/6; - } -} diff --git a/public/assets/css/dash/init.css b/public/assets/css/dash/init.css deleted file mode 100644 index 5d23f4d..0000000 --- a/public/assets/css/dash/init.css +++ /dev/null @@ -1,113 +0,0 @@ -/* LOGIN */ - -section.login, -section[role="password-reset"], -section[role="restore-fresh"], -section[role="restore-backup"] { - margin: 15% auto; - padding: 10px; - width: 500px; - border-radius: 5px; - display: grid; - grid-template-columns: 28.5% 1fr; - gap: 10px; - visibility: visible; -} - -section[role="restore-backup"] { - display: none; - visibility: hidden; - color: var(--white); -} - -section.login form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -section.login form button { - padding: 10px 5px; - width: 82%; -} - -section.login form a { - padding: 10px 5px; - border-radius: 5px; - width: 10%; - height: 20px; - display: inline-block; - background: var(--tertiary); - vertical-align: top; - text-align: center; - margin: 0 0 0 10px; - font-weight: 600; -} - -/* PASSWORD-RESET */ - -section[role="password-reset"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="password-reset"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -/* SITE RESTORE */ - -section[role="restore-fresh"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="restore-fresh"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -section[role="restore-backup"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="restore-backup"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 500px) { - section.login, - section[role="password-reset"], - section[role="restore-fresh"], - section[role="restore-backup"] { - width: 97%; - } -} - -@media only screen and (max-width: 375px) { - section.login, - section[role="password-reset"], - section[role="restore-fresh"], - section[role="restore-backup"] { - grid-template-columns: 1fr; - } - - section.login img, - section[role="password-reset"] img, - section[role="restore-fresh"] img, - section[role="restore-backup"] img { - width: 50px; - } -} diff --git a/public/assets/css/dash/navigation.css b/public/assets/css/dash/navigation.css deleted file mode 100644 index fa5e0d6..0000000 --- a/public/assets/css/dash/navigation.css +++ /dev/null @@ -1,46 +0,0 @@ -article[role="navigation"] { - width: 100%; - max-width: 900px; - margin: 100px auto; -} - -article[role="navigation"] > section > div.nav-item { - display: block; - width: 98%; - background: var(--white); - border-radius: 3px; - color: var(--highlight); - margin: 0 0 10px; - font-size: 1.5em; - cursor: move; -} - -article[role="navigation"] > section > div.nav-item > label { - display: inline-block; - padding: 5px; - margin: 12px 0 0 10px; - vertical-align: top; - cursor: move; -} - -article[role="navigation"] > section > div.nav-item > div#nav-btns { - float: right; - padding: 5px; - position: relative; -} - -article[role="navigation"] > section > div.nav-item > div#nav-btns button { - margin-left: 5px; -} - -@media only screen and (max-width: 500px) { - article[role="navigation"] > section > div.nav-item > label { - width: 55%; - margin: 0; - font-size: 0.8em; - } - - article[role="navigation"] > section i { - font-size: 1.5em; - } -} diff --git a/public/assets/css/dash/notifications.css b/public/assets/css/dash/notifications.css deleted file mode 100644 index 8481c20..0000000 --- a/public/assets/css/dash/notifications.css +++ /dev/null @@ -1,81 +0,0 @@ -header > nav.top-nav { - display: grid; - text-align: right; - grid-template-columns: 50px auto auto; - height: 100%; - position: relative; - background: var(--white); - border-radius: 3px; - transform-style: preserve-3d; - transform-origin: 100% 50%; - transform: rotateX(0deg); - transition: all 0.1s ease-out; - perspective: 500px; - backface-visibility: hidden; - box-shadow: 2px 2px 0 rgba(var(--primary-rgb) / 30%); -} - -header > div.notify { - display: grid; - height: 100%; - position: relative; - background: var(--black); - border-radius: 3px; - transform-style: preserve-3d; - transform-origin: 100% 50%; - transform: rotateX(180deg); - transition: all 0.3s ease-out; - perspective: 500px; - backface-visibility: hidden; - margin-top: -50px; - box-shadow: 2px 2px 0 rgba(var(--primary-rgb) / 30%); -} - -header > div.notify > div.notify-message { - display: flex; - height: 86%; -} - -header > div.notify > div.notify-message div { - display: inline-block; - transition: all 0.2s linear; -} - -header > div.notify > div.notify-message > div.notify-text { - color: var(--white); - border-radius: 5px; - height: 79%; - margin-top: 8px; - opacity: 0; -} - -header > div.notify > div.notify-message > div.notify-icons { - margin: 5px; - width: 40px; - opacity: 0; -} - -header > div.notify > div.notify-message > div.notify-text span { - display: block; - padding: 5px; -} - -header > div.notify > div.notify-message i { - display: none; - color: var(--white); -} - -i.notify-working { - animation: 2s infinite linear spin; - height: 40px; - width: 40px; -} - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/public/assets/css/dash/page-editor-highlights.css b/public/assets/css/dash/page-editor-highlights.css deleted file mode 100644 index 177a07c..0000000 --- a/public/assets/css/dash/page-editor-highlights.css +++ /dev/null @@ -1,111 +0,0 @@ -code[class*="language-"], -pre[class*="language-"] { - color: var(--editor-primary); - background: none; - font-family: var(--mono-type); - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - tab-size: 4; - hyphens: none; -} - -pre[class*="language-"] { - margin: 0.1em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: var(--primary); -} - -:not(pre) { - & > code[class*="language-"] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; - } -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8292a2; -} - -.token.punctuation { - color: var(--editor-secondary); -} - -.token.namespace { - opacity: 0.6; -} - -.token.keyword { - color: #66d9ef; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.content { - color: var(--editor-tertiary); -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: var(--editor-tag); -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: var(--editor-string); -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.regex, -.token.important { - color: var(--editor-secondary); -} - -.token.important, -.token.bold { - font-weight: normal; -} diff --git a/public/assets/css/dash/page-editor.css b/public/assets/css/dash/page-editor.css deleted file mode 100644 index 94f7295..0000000 --- a/public/assets/css/dash/page-editor.css +++ /dev/null @@ -1,446 +0,0 @@ -/* FILE MANAGER */ -main > section[role="file-manager"] { - width: 100%; - background: var(--tertiary); - padding: 20px 0; - margin-top: 75px; -} - -main > section[role="file-manager"] label[role="list-title"] { - width: 100%; - max-width: 900px; - margin: 0 auto; - display: block; - color: var(--primary); -} - -main > section[role="file-manager"] > div[role="file-drop"] { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - min-height: 100px; - background: var(--white); - color: var(--primary); - vertical-align: middle; - border-radius: 5px; - max-width: 900px; - margin: 10px auto; -} - -main > section[role="file-manager"] > div[role="page-images-list"], -main > section[role="file-manager"] > div[role="page-files-list"] { - max-width: 900px; - width: 100%; - margin: 10px auto; - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - gap: 10px; -} - -main > section[role="file-manager"] > div[role="page-images-list"] > div, -main > section[role="file-manager"] > div[role="page-files-list"] > div { - width: 100%; - height: 150px; - border-radius: 3px; - overflow: hidden; - position: relative; - cursor: pointer; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div - > div.item-progress { - width: 100%; - height: 100%; - background: var(--primary); -} - -main > section[role="text-editor"] > div[role="text-editor-control"] button { - border-radius: 0; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - button - > i { - font-size: 1.6em; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(1) { - border-radius: 3px 0 0 3px; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(10) { - border-radius: 0 3px 3px 0; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div - > button.media-remove, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div - > button.media-remove { - color: var(--white); - margin: 5px; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div.video-item - > video { - object-fit: cover; - height: 100%; - width: 100%; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div.video-item - > button, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item - > button, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item - > button { - position: absolute; - top: 0; - left: 0; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item { - background: url("/assets/images/global/upload-audio.png") no-repeat center - center / cover; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item { - background: url("/assets/images/global/upload-doc.png") no-repeat center - center / cover; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item - > a { - position: absolute; - bottom: 0; - background: var(--secondary); - padding: 2px; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item - > audio { - height: 100%; - width: 100%; -} - -/* PAGE META */ - -main > section[role="page-meta"] { - width: 100%; - background: var(--highlight); -} - -main > section[role="page-meta"] > div[role="page-meta-wrapper"] { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 20px; - width: 100%; - max-width: 900px; - margin: 10px auto; - color: var(--white); -} - -main section[role="page-meta"] textarea#post-title-text { - background: var(--white); - font-family: var(--base-type); - width: 100%; - height: 80px; - font-size: 2em; - color: var(--primary); -} - -main section[role="page-meta"] textarea#post-tags { - background: var(--white); - font-family: var(--base-type); - width: 100%; - height: 80px; - color: var(--primary); -} - -main section[role="page-meta"] select { - background: var(--primary); - color: var(--secondary); - border-radius: 3px; - border-color: var(--primary); - width: 100%; - height: 45px; - padding: 5px; - font-size: 1.5em; -} - -main section[role="page-meta"] div[role="page-options"] { - width: 100%; -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button { - width: 25%; - height: 45px; - transition: all 0.3s linear; - margin: 0; - border-radius: 0; - display: inline-block; - vertical-align: top; - text-align: center; -} - -main - > section[role="page-meta"] - > div[role="page-meta-wrapper"] - > div[role="page-options"] - > button.post-option-btn:nth-child(3) { - border-radius: 3px 0 0 3px; -} - -main - > section[role="page-meta"] - > div[role="page-meta-wrapper"] - > div[role="page-options"] - > a - > button { - border-radius: 0 3px 3px 0; -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - button[data-active="false"] { - background: var(--primary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - button[data-active="false"] - svg { - fill: var(--secondary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button[data-active="true"] { - background: var(--tertiary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button[data-active="true"] - svg { - fill: var(--primary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-created"] - input { - display: none; - visibility: hidden; -} - -/* TEXT EDITOR */ - -main > section[role="text-editor"] { - width: 100%; - max-width: 900px; - margin: 0 auto; -} - -main section[role="text-editor"] .icon-hide { - display: none; - visibility: hidden; -} - -main > section[role="text-editor"] > div[role="text-editor-control"] { - display: grid; - grid-template-columns: repeat(10, 1fr); -} - -.control-freeze { - position: fixed; - z-index: 300; - width: 97%; - top: 65px; -} - -main > section[role="text-editor"] > div[role="edit-post-wrapper"] { - width: 100%; - max-width: 900px; - border-radius: 5px; - position: relative; - margin: 10px 0; -} - -main - > section[role="text-editor"] - > div[role="edit-post-wrapper"] - textarea:focus { - outline: none; - border-color: var(--highlight); -} - -main section[role="text-editor"] div[role="edit-post-wrapper"] #edit, -main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight { - font-family: var(--mono-type); - border: 0; - width: 100%; - min-height: 300px; - height: auto; - position: absolute; - top: 0; - left: 0; - overflow: auto; - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; - font-size: 1.1em; - line-height: 1.2; - padding: 0; - margin: 0; -} - -main - section[role="text-editor"] - div[role="edit-post-wrapper"] - #highlight-content { - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; -} - -main > section[role="text-editor"] > div[role="edit-post-wrapper"] > #edit { - z-index: 1; - background: transparent; - color: transparent; - caret-color: var(--highlight); -} - -main - > section[role="text-editor"] - > div[role="edit-post-wrapper"] - > #highlight { - z-index: 0; -} - -main section[role="text-editor"] div[role="edit-post-wrapper"] pre, -main section[role="text-editor"] div[role="edit-post-wrapper"] pre code { - padding: 0; - margin: 0; -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 900px) { - main > section[role="file-manager"] > div[role="file-drop"], - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"], - main > section[role="page-meta"] > div[role="page-meta-wrapper"], - main > section[role="text-editor"] { - width: 97%; - } -} - -@media only screen and (max-width: 480px) { - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"] { - grid-template-columns: 1fr 1fr 1fr; - } - - main > section[role="file-manager"] > div[role="file-drop"], - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"], - main > section[role="page-meta"] > div[role="page-meta-wrapper"], - main > section[role="text-editor"] { - width: 95%; - } - - main > section[role="page-meta"] > div[role="page-meta-wrapper"] { - grid-template-columns: 1fr; - } - - main > section[role="text-editor"] > div[role="text-editor-control"] { - display: grid; - grid-template-columns: repeat(5, 1fr); - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(1) { - border-radius: 3px 0; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(5) { - border-radius: 0 3px; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(6) { - border-radius: 0 0 0 3px; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(10) { - border-radius: 0 0 3px; - } - - main section[role="text-editor"] div[role="edit-post-wrapper"] #edit, - main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight { - font-size: 0.8em; - } -} diff --git a/public/assets/css/dash/settings.css b/public/assets/css/dash/settings.css deleted file mode 100644 index b4c3fbb..0000000 --- a/public/assets/css/dash/settings.css +++ /dev/null @@ -1,275 +0,0 @@ -article[class="settings"] { - margin: 100px auto; - width: 100%; - max-width: 900px; - transition: all 0.8s linear; -} - -article[class="settings"] h1 { - color: var(--white); -} - -article[class="settings"] label { - color: var(--secondary); - margin-bottom: 10px; - display: inline-block; - font-weight: 400; -} - -section[class="member-settings"] { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-auto-columns: auto; - gap: 15px; - width: 100%; - max-width: 900px; - margin: 10px auto; -} - -section[class="member-settings"] > div:nth-child(1) { - grid-column: 1/2; - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(2) { - grid-column: 2/4; - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(3) { - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(4) { - color: var(--white); -} - -section[class="member-settings"] > div:nth-child(4) a { - font-weight: bold; - text-decoration: underline; - color: var(--tertiary); -} - -section[class="member-settings"] > div:nth-child(5) { - grid-column: 2/4; -} - -section[class="member-settings"] > div:nth-child(6) { - grid-column: 1/3; -} - -section[class="member-settings"] > div:nth-child(7) { - grid-column: 3/5; - min-height: 325px; -} - -section[class="member-settings"] > div:nth-child(8) { - grid-column: 1/4; - color: var(--white); - word-wrap: break-word; -} - -section[class="member-settings"] > div[class="member-avatar"] div, -section[class="member-settings"] > div[class="site-background"] div { - height: 100%; - border-radius: 3px; -} - -section[class="member-settings"] div input[type="file"] { - display: none; - visibility: hidden; -} - -section[class="member-settings"] div input[type="text"] { - width: 98.4%; - height: 40px; - margin-bottom: 10px; -} - -section[class="member-settings"] div textarea { - width: 98.4%; - height: 63%; -} - -article[class="settings"] button { - width: 100%; - text-align: left; - height: 50px; - margin-bottom: 5px; -} - -article[class="settings"] button > span { - font-size: 0.8em; - display: inline; - top: -10px; - position: relative; -} - -section[class="member-settings"] - > div[class="features"] - button[data-enabled="true"] { - color: var(--white); -} - -section[class="member-settings"] - > div[class="features"] - button[data-enabled="false"] { - color: var(--primary); - background: var(--secondary); -} - -section[class="member-settings"] - > div[class="theme"] - button[data-enabled="true"] { - color: var(--white); - background: var(--highlight); - display: block; - border-radius: 3px; - padding: 3px; -} - -section[class="member-settings"] - > div[class="theme"] - button[data-enabled="false"] { - color: var(--primary); - background: var(--secondary); - display: block; - border-radius: 3px; - padding: 3px; -} - -section[class="member-settings"] > div[class="mail"] a { - margin-right: 3px; - color: var(--secondary); - display: inline-block; - height: 40px; - padding: 15px 0 0; - border-top: var(--primary) 1px solid; -} - -section[class="member-settings"] > div[class="mail"] a[data-enabled="true"] { - color: var(--tertiary); - font-weight: bold; - border-top: var(--highlight) 1px solid; -} - -section[class="member-settings"] > div[class="mail"] div[data-enabled="false"] { - visibility: hidden; - display: none; -} - -section[class="member-settings"] > div[class="mail"] input { - width: 98.4%; - height: 40px; - padding-left: 5px; - margin-bottom: 10px; -} - -section[class="data-settings"] { - color: var(--white); -} - -@media only screen and (max-width: 900px) { - main > article[class="settings"] { - width: 97%; - } -} - -@media only screen and (max-width: 650px) { - section[class="member-settings"] div input[type="text"] { - width: 99.3%; - height: 40px; - margin-bottom: 10px; - } - - section[class="member-settings"] { - grid-template-columns: 1fr 1fr; - } - - section[class="member-settings"] > div[class="mail"] input { - width: 97.7%; - height: 40px; - padding-left: 5px; - margin-bottom: 10px; - } - - section[class="member-settings"] div textarea { - height: 80px; - width: 99.3%; - } - - section[class="member-settings"] > div:nth-child(1) { - grid-column: 1/2; - grid-row: 1/3; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(2) { - grid-column: 2/3; - grid-row: 1/3; - } - - section[class="member-settings"] > div:nth-child(3) { - grid-column: 1/3; - grid-row: 3/5; - } - - section[class="member-settings"] > div:nth-child(4) { - grid-column: 1/2; - } - - section[class="member-settings"] > div:nth-child(5) { - grid-column: 2/3; - } - - section[class="member-settings"] > div:nth-child(6) { - grid-column: 1/2; - } - - section[class="member-settings"] > div:nth-child(7) { - grid-column: 2/3; - min-height: 325px; - } - - section[class="member-settings"] > div:nth-child(8) { - grid-column: 1/3; - } -} - -@media only screen and (max-width: 530px) { - section[class="member-settings"] > div[class="mail"] input { - width: 98.5%; - } - - section[class="member-settings"] { - grid-template-columns: 100%; - } - - section[class="member-settings"] div textarea { - height: 80px; - } - - section[class="member-settings"] > div:nth-child(1) { - grid-row: 1/3; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(2) { - grid-row: 3/5; - grid-column: 1; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(3) { - grid-column: 1; - grid-row: 5/7; - } - - section[class="member-settings"] > div:nth-child(4), - section[class="member-settings"] > div:nth-child(5), - section[class="member-settings"] > div:nth-child(6), - section[class="member-settings"] > div:nth-child(7), - section[class="member-settings"] > div:nth-child(8) { - grid-column: 1; - } -} diff --git a/public/assets/css/dash/start.css b/public/assets/css/dash/start.css deleted file mode 100644 index e07129a..0000000 --- a/public/assets/css/dash/start.css +++ /dev/null @@ -1,13 +0,0 @@ -@import url("colors.css"); -@import url("forms.css"); -@import url("typography.css"); -@import url("frame.css"); -@import url("icons.css"); -@import url("notifications.css"); -@import url("init.css"); -@import url("index.css"); -@import url("book.css"); -@import url("page-editor.css"); -@import url("page-editor-highlights.css"); -@import url("settings.css"); -@import url("navigation.css"); diff --git a/public/assets/css/dash/type/tabler-icons.ttf b/public/assets/css/dash/type/tabler-icons.ttf deleted file mode 100644 index 593c1d5..0000000 Binary files a/public/assets/css/dash/type/tabler-icons.ttf and /dev/null differ diff --git a/public/assets/css/dash/type/tabler-icons.woff b/public/assets/css/dash/type/tabler-icons.woff deleted file mode 100644 index 4dec2b8..0000000 Binary files a/public/assets/css/dash/type/tabler-icons.woff and /dev/null differ diff --git a/public/assets/css/dash/typography.css b/public/assets/css/dash/typography.css deleted file mode 100644 index d588aa4..0000000 --- a/public/assets/css/dash/typography.css +++ /dev/null @@ -1,29 +0,0 @@ -:root { - --base-type: helvetica, arial, sans-serif; - --mono-type: "Lucida Console", monaco, monospace; -} - -h1, -h2, -h3 { - color: var(--white); -} - -h1 { - font-size: 2em; - font-weight: 700; -} - -h2 { - font-size: 1.6em; - font-weight: 600; -} - -h3 { - font-size: 1.3em; - font-weight: 500; -} - -main > article > h1 { - color: var(--primary); -} diff --git a/public/assets/images/global/default-avi.png b/public/assets/images/global/default-avi.png deleted file mode 100644 index 99ee4bb..0000000 Binary files a/public/assets/images/global/default-avi.png and /dev/null differ diff --git a/public/assets/images/global/default-bg.jpg b/public/assets/images/global/default-bg.jpg deleted file mode 100644 index ff29737..0000000 Binary files a/public/assets/images/global/default-bg.jpg and /dev/null differ diff --git a/public/assets/images/global/fipamo-logo.svg b/public/assets/images/global/fipamo-logo.svg deleted file mode 100644 index b8504ab..0000000 --- a/public/assets/images/global/fipamo-logo.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 462 462" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> - <g transform="matrix(1.58717,0,0,1.58717,-403.964,-376.506)"> - <g transform="matrix(1,0,0,1,200.753,94.1743)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - <g transform="matrix(1,0,0,1,200.753,201.192)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - <g transform="matrix(1,0,0,1,307.732,201.192)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - <g transform="matrix(1,0,0,1,414.761,201.192)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(171,183,183);"/> - </g> - <g transform="matrix(1,0,0,1,200.753,308.228)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - <g transform="matrix(1,0,0,1,307.732,308.228)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(171,183,183);"/> - </g> - <g transform="matrix(1,0,0,1,414.761,308.228)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(171,183,183);"/> - </g> - <g transform="matrix(1,0,0,1,414.761,94.1743)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - <g transform="matrix(6.12323e-17,1,-1,6.12323e-17,581.547,183.453)"> - <circle cx="92.268" cy="181.547" r="38.502" style="fill:rgb(252,99,153);"/> - </g> - </g> -</svg> diff --git a/public/assets/images/global/rikc-logo.svg b/public/assets/images/global/rikc-logo.svg deleted file mode 100644 index 56bdf9d..0000000 --- a/public/assets/images/global/rikc-logo.svg +++ /dev/null @@ -1,13 +0,0 @@ -<svg width="305" height="305" viewBox="0 0 305 305" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g id="Group"> - <path id="Path" fill="none" stroke="#894262" stroke-width="30" stroke-linecap="round" stroke-linejoin="round" d="M 289.203003 152.102005 C 289.203003 227.82077 227.820801 289.203003 152.10199 289.203003 C 76.383202 289.203003 15.001002 227.82077 15.001002 152.102005 C 15.001002 76.383209 76.383202 15.001007 152.10199 15.001007 C 227.820801 15.001007 289.203003 76.383209 289.203003 152.102005 Z"/> - </g> - <g id="g1"> - <g id="g2"> - <path id="path1" fill="#894262" stroke="none" d="M 184.531082 78.841095 C 186.322433 78.841095 188.113785 79.097 189.649246 79.352905 C 190.928772 79.60881 192.208313 80.376541 192.976044 81.656067 C 193.99968 82.935608 194.51149 85.49469 194.51149 88.565598 L 194.51149 97.522369 C 194.51149 99.313721 194.51149 101.616898 194.767395 103.920074 C 194.767395 106.223251 194.51149 108.270508 193.743759 109.550049 C 192.976044 110.82959 192.208313 111.597305 190.928772 111.85321 C 189.649246 112.109131 188.113785 112.365036 186.578339 112.365036 C 184.786987 112.365036 183.251541 112.365036 181.460175 112.109131 C 179.668823 111.85321 177.877472 112.109131 176.342026 112.365036 C 175.062485 112.620941 174.038849 112.876846 172.759308 112.876846 C 171.479767 113.132751 170.456131 113.388672 169.432495 113.644577 C 166.617523 114.412308 164.058426 115.691849 161.243454 117.22728 C 158.428467 119.018646 156.381195 120.809998 154.845749 122.857269 C 154.078018 124.13681 153.054398 125.672256 152.286667 126.951797 C 151.263031 128.487244 150.23941 130.02269 149.47168 131.558136 C 148.959869 132.837677 148.448044 134.373123 148.192139 135.652664 C 147.680328 137.18811 147.168503 138.723557 146.912598 140.003098 C 146.656693 141.282639 146.400787 142.306274 146.400787 143.585815 C 146.400787 144.865356 146.144882 146.144897 145.888962 147.424423 C 145.633057 148.192154 145.633057 148.703964 145.888962 149.21579 C 145.888962 149.983521 145.888962 150.495331 145.633057 151.007141 L 145.633057 155.101669 C 145.377151 156.38121 145.121246 157.660751 145.377151 158.940292 C 145.633057 160.475739 145.633057 162.011185 145.633057 163.290726 L 145.633057 201.421021 C 145.633057 203.724182 145.633057 205.771454 145.377151 207.562805 C 145.121246 209.354156 144.609421 210.889618 143.841705 212.169159 C 143.5858 212.680969 143.073975 212.93689 142.306259 213.19278 C 141.538528 213.4487 140.514893 213.704605 139.747177 213.96051 L 138.467636 213.96051 C 137.699921 214.216415 136.676285 214.216415 135.652649 214.216415 L 121.833618 214.216415 C 120.809982 213.96051 119.786354 213.96051 118.762718 213.96051 L 115.180008 213.96051 C 114.412285 213.704605 113.388649 213.19278 112.620926 212.93689 C 111.853203 212.680969 111.08548 212.169159 110.829575 211.401428 C 110.061852 210.633698 109.805939 209.354156 109.805939 207.562805 C 109.550034 206.027359 109.550034 204.491913 109.550034 202.700562 L 109.550034 89.077408 C 109.550034 87.541962 109.805939 86.262421 110.573662 85.238785 C 111.341385 83.959244 112.620926 82.935608 114.412285 82.679703 C 116.203636 82.423798 118.2509 82.167892 120.554077 82.167892 L 133.605377 82.167892 C 135.652649 82.167892 137.444 82.167892 138.979446 82.423798 C 140.514893 82.679703 141.794449 83.703339 142.562164 84.98288 C 143.073975 85.75061 143.329895 87.030136 143.5858 88.565598 C 143.5858 90.101028 143.5858 91.63649 143.841705 92.916031 C 144.09761 94.451477 144.353516 95.731018 144.865341 97.010559 C 145.121246 98.2901 145.888962 98.80191 147.168503 98.80191 C 147.424423 98.546005 147.936234 98.2901 148.192139 98.2901 C 148.448044 98.2901 148.959869 98.034195 149.215775 97.778275 C 150.23941 97.010559 151.263031 95.986923 152.030762 94.707382 C 152.798492 93.683762 153.566208 92.660126 154.845749 91.892395 C 155.613464 91.380585 156.12529 90.868759 156.6371 90.101028 C 157.148926 89.589233 157.660736 89.077408 158.428467 88.565598 C 159.963898 87.541962 161.499359 86.518326 163.29071 85.49469 C 164.826157 84.471054 166.361603 83.447433 168.152969 82.679703 C 169.944321 81.911972 171.735672 81.400162 173.527023 80.888351 C 175.31839 80.376541 177.109741 79.864731 178.901093 79.352905 C 179.412918 79.097 180.436554 79.097 181.972 79.097 C 183.251541 79.352905 184.275162 79.097 184.531082 78.841095 Z"/> - </g> - <g id="g3"> - <path id="path2" fill="#894262" fill-rule="evenodd" stroke="none" d="M 194.653778 204.45752 C 194.653778 209.84726 190.284576 214.216522 184.894806 214.216522 C 179.505035 214.216522 175.135834 209.84726 175.135834 204.45752 C 175.135834 199.06778 179.505035 194.698517 184.894806 194.698517 C 190.284576 194.698517 194.653778 199.06778 194.653778 204.45752 Z"/> - </g> - </g> -</svg> diff --git a/public/assets/images/global/sprite.svg b/public/assets/images/global/sprite.svg deleted file mode 100644 index 565e7ab..0000000 --- a/public/assets/images/global/sprite.svg +++ /dev/null @@ -1,823 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><symbol viewBox='0 0 20 20' id='entypo-500px-with-circle'> - <path d="M8.349 9.257a2.55 2.55 0 0 0-.497-.293 1.257 1.257 0 0 0-.519-.117.907.907 0 0 0-.757.361 1.29 1.29 0 0 0-.281.812c0 .327.096.596.287.805s.455.314.791.314c.173 0 .345-.035.519-.104.173-.068.337-.154.491-.259.155-.104.301-.222.437-.354.137-.131.259-.262.368-.389a12.19 12.19 0 0 0-.382-.387 4.52 4.52 0 0 0-.457-.389zm4.278-.41a1.23 1.23 0 0 0-.525.117 2.309 2.309 0 0 0-.478.293c-.15.118-.293.248-.43.389-.137.141-.261.271-.368.389.118.137.245.272.382.402.137.133.281.25.438.355.153.104.314.188.483.252.168.064.349.096.539.096.337 0 .595-.109.777-.328a1.21 1.21 0 0 0 .272-.805c0-.318-.099-.592-.293-.818-.195-.228-.461-.342-.797-.342zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.835 10.562c-.108.309-.263.58-.463.811-.2.233-.448.414-.743.546a2.4 2.4 0 0 1-.989.197c-.282 0-.546-.043-.791-.129a3.097 3.097 0 0 1-.689-.342 4.17 4.17 0 0 1-.608-.49c-.19-.188-.372-.38-.546-.58-.19.2-.377.393-.559.58a3.86 3.86 0 0 1-.581.49 2.864 2.864 0 0 1-.668.342c-.24.086-.511.129-.812.129a2.39 2.39 0 0 1-.996-.197 2.328 2.328 0 0 1-.75-.532 2.266 2.266 0 0 1-.478-.798A3.022 3.022 0 0 1 5 9.994c0-.355.052-.684.157-.989.105-.305.258-.568.457-.792.2-.224.445-.399.737-.532a2.36 2.36 0 0 1 .982-.197c.3 0 .575.045.825.137.25.09.481.211.695.361.215.149.415.322.602.518s.37.402.552.621c.174-.209.354-.414.539-.613.188-.201.387-.376.602-.525.213-.15.445-.271.695-.361.25-.092.521-.137.81-.137.365 0 .692.062.984.191.291.127.536.301.736.524.2.224.354.483.463.784.11.301.164.627.164.982 0 .356-.054.688-.165.996z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-500px'> - <path d="M6.398 14.775c.481-.174.928-.4 1.337-.683.41-.282.797-.608 1.16-.982.363-.373.736-.759 1.118-1.159.346.4.71.786 1.092 1.159.382.374.787.7 1.214.982.428.282.887.509 1.379.683.49.173 1.017.259 1.582.259.727 0 1.387-.132 1.977-.396a4.175 4.175 0 0 0 1.487-1.092 5.03 5.03 0 0 0 .928-1.623A5.911 5.911 0 0 0 20 9.932c0-.71-.109-1.364-.328-1.964a4.735 4.735 0 0 0-.928-1.569 4.234 4.234 0 0 0-1.473-1.05c-.583-.256-1.238-.383-1.966-.383-.581 0-1.123.092-1.623.273-.5.182-.964.423-1.391.723-.428.3-.828.65-1.201 1.051-.372.399-.732.81-1.078 1.228a25.66 25.66 0 0 0-1.104-1.242 8.026 8.026 0 0 0-1.201-1.037 5.966 5.966 0 0 0-1.391-.723 4.796 4.796 0 0 0-1.65-.273c-.728 0-1.385.133-1.965.396a4.358 4.358 0 0 0-1.474 1.064 4.54 4.54 0 0 0-.914 1.583A6.05 6.05 0 0 0 0 9.985c0 .71.108 1.374.326 1.992.219.619.537 1.15.955 1.597.419.446.919.801 1.5 1.064.584.264 1.246.396 1.993.396.6 0 1.142-.086 1.624-.259zM3.164 11.65c-.383-.418-.573-.955-.573-1.609 0-.6.186-1.142.561-1.624.372-.48.876-.723 1.515-.723.345 0 .689.078 1.035.232.346.154.678.35.997.587.317.237.622.496.912.777.291.283.546.542.765.778-.219.255-.464.515-.737.776a6.18 6.18 0 0 1-.872.71c-.311.21-.637.382-.983.519a2.79 2.79 0 0 1-1.036.205c-.675 0-1.202-.209-1.584-.628zm11.092.438a4.655 4.655 0 0 1-.968-.505 6.23 6.23 0 0 1-.874-.709 12.192 12.192 0 0 1-.764-.806c.218-.236.463-.495.736-.778.273-.281.56-.54.859-.776.3-.237.619-.433.955-.587a2.505 2.505 0 0 1 1.051-.232c.673 0 1.204.227 1.596.683.392.454.587 1 .587 1.638 0 .637-.183 1.172-.546 1.608-.364.438-.882.655-1.555.655a3.047 3.047 0 0 1-1.077-.191z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-add-to-list'> - <path d="M19.4 9H16V5.6c0-.6-.4-.6-1-.6s-1 0-1 .6V9h-3.4c-.6 0-.6.4-.6 1s0 1 .6 1H14v3.4c0 .6.4.6 1 .6s1 0 1-.6V11h3.4c.6 0 .6-.4.6-1s0-1-.6-1zm-12 0H.6C0 9 0 9.4 0 10s0 1 .6 1h6.8c.6 0 .6-.4.6-1s0-1-.6-1zm0 5H.6c-.6 0-.6.4-.6 1s0 1 .6 1h6.8c.6 0 .6-.4.6-1s0-1-.6-1zm0-10H.6C0 4 0 4.4 0 5s0 1 .6 1h6.8C8 6 8 5.6 8 5s0-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-add-user'> - <path d="M15.989 19.129C16 17 13.803 15.74 11.672 14.822c-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.014-.234-.011-.871zM17 10V7h-2v3h-3v2h3v3h2v-3h3v-2h-3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-address'> - <path d="M19.799 5.165l-2.375-1.83a1.997 1.997 0 0 0-.521-.237A2.035 2.035 0 0 0 16.336 3H9.5l.801 5h6.035c.164 0 .369-.037.566-.098s.387-.145.521-.236l2.375-1.832c.135-.091.202-.212.202-.334s-.067-.243-.201-.335zM8.5 1h-1a.5.5 0 0 0-.5.5V5H3.664c-.166 0-.37.037-.567.099-.198.06-.387.143-.521.236L.201 7.165C.066 7.256 0 7.378 0 7.5c0 .121.066.242.201.335l2.375 1.832c.134.091.323.175.521.235.197.061.401.098.567.098H7v8.5a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-17a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-adjust'> - <path d="M19 9.199h-.98c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799H19c.552 0 1-.357 1-.799 0-.441-.449-.801-1-.801zM10 4.5A5.483 5.483 0 0 0 4.5 10c0 3.051 2.449 5.5 5.5 5.5 3.05 0 5.5-2.449 5.5-5.5S13.049 4.5 10 4.5zm0 9.5c-2.211 0-4-1.791-4-4 0-2.211 1.789-4 4-4v8zm-7-4c0-.441-.449-.801-1-.801H1c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799h1c.551 0 1-.358 1-.799zm7-7c.441 0 .799-.447.799-1V1c0-.553-.358-1-.799-1-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1zm0 14c-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1 .441 0 .799-.447.799-1v-1c0-.553-.358-1-.799-1zm7.365-13.234c.391-.391.454-.961.142-1.273s-.883-.248-1.272.143l-.7.699c-.391.391-.454.961-.142 1.273s.883.248 1.273-.143l.699-.699zM3.334 15.533l-.7.701c-.391.391-.454.959-.142 1.271s.883.25 1.272-.141l.7-.699c.391-.391.454-.961.142-1.274s-.883-.247-1.272.142zm.431-12.898c-.39-.391-.961-.455-1.273-.143s-.248.883.141 1.274l.7.699c.391.391.96.455 1.272.143s.249-.883-.141-1.273l-.699-.7zm11.769 14.031l.7.699c.391.391.96.453 1.272.143.312-.312.249-.883-.142-1.273l-.699-.699c-.391-.391-.961-.455-1.274-.143s-.248.882.143 1.273z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-air'> - <path d="M2.643 6.357c1.747-1.5 3.127-2.686 6.872-.57 1.799 1.016 3.25 1.4 4.457 1.398 2.115 0 3.486-1.176 4.671-2.193a1.037 1.037 0 0 0 .122-1.439.987.987 0 0 0-1.41-.125c-1.746 1.502-3.127 2.688-6.872.57-4.948-2.793-7.266-.803-9.128.797a1.037 1.037 0 0 0-.121 1.439.986.986 0 0 0 1.409.123zm14.712 2.178c-1.746 1.5-3.127 2.688-6.872.57-4.948-2.795-7.266-.804-9.128.795a1.037 1.037 0 0 0-.121 1.439.986.986 0 0 0 1.409.125c1.747-1.501 3.127-2.687 6.872-.572 1.799 1.018 3.25 1.4 4.457 1.4 2.115 0 3.486-1.176 4.671-2.195a1.035 1.035 0 0 0 .122-1.438.986.986 0 0 0-1.41-.124zm0 5.106c-1.746 1.502-3.127 2.688-6.872.572-4.948-2.795-7.266-.805-9.128.795a1.037 1.037 0 0 0-.121 1.439.985.985 0 0 0 1.409.123c1.747-1.5 3.127-2.685 6.872-.57 1.799 1.016 3.25 1.4 4.457 1.4 2.115 0 3.486-1.178 4.671-2.195a1.037 1.037 0 0 0 .122-1.439.988.988 0 0 0-1.41-.125z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft-landing'> - <path d="M18.752 16.038c-.097.266-.822 1.002-6.029-.878l-5.105-1.843C5.841 12.676 3.34 11.668 2.36 11.1c-.686-.397-.836-1.282-.836-1.282s-.163-2.956-.263-3.684c-.1-.728.095-.853.796-.492.436.225 1.865 2.562 2.464 3.567 1.512.381 2.862.761 3.493.949-.257-1.717-.74-4.928-.913-5.933-.166-.963.55-.535.55-.535.331.19.983.661 1.206 1.002 1.522 2.326 3.672 6.6 3.836 6.928.896.28 2.277.733 3.102 1.03 2.156.779 3.087 3.034 2.957 3.388z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft-take-off'> - <path d="M19.87 6.453c.119.257.127 1.29-4.884 3.642l-4.913 2.306c-1.71.803-4.191 1.859-5.285 2.151-.766.204-1.497-.316-1.497-.316S1.085 12.261.499 11.817c-.585-.444-.535-.67.215-.91.467-.149 3.13.493 4.265.78A91.697 91.697 0 0 1 8.12 9.889c-1.396-1.033-4.008-2.962-4.841-3.55-.799-.565.01-.768.01-.768.368-.099 1.162-.228 1.562-.144 2.721.569 7.263 2.071 7.611 2.186a90.641 90.641 0 0 1 2.922-1.465c2.075-.974 4.327-.037 4.486.305z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-aircraft'> - <path d="M12.496 17.414c-.394-1.096-1.805-4.775-2.39-6.297-1.103.737-2.334 1.435-3.512 1.928-.366 1.28-1.094 3.709-1.446 4.033-.604.557-.832.485-.925-.279-.093-.764-.485-3.236-.485-3.236s-2.162-1.219-2.84-1.568-.667-.591.057-.974c.422-.223 2.927-.085 4.242.005.861-.951 1.931-1.882 2.993-2.679-1.215-1.076-4.15-3.675-5.034-4.424-.776-.658.079-.797.079-.797.39-.07 1.222-.132 1.628-.009 2.524.763 6.442 2.068 7.363 2.376l1.162-.821c4.702-3.33 5.887-2.593 6.111-2.27s.503 1.701-4.199 5.032l-1.16.823c-.029.98-.157 5.151-.311 7.811-.025.428-.367 1.198-.565 1.544-.001 0-.423.765-.768-.198z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-bottom'> - <path d="M13 11h-2V3H9v8H7l3 3 3-3zm4.4 4H2.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h14.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-horizontal-middle'> - <path d="M8 10L5 7v2H1v2h4v2l3-3zm7 3v-2h4V9h-4V7l-3 3 3 3zm-5 5c.553 0 1-.049 1-.6V2.6c0-.553-.447-.6-1-.6-.552 0-1 .047-1 .6v14.8c0 .551.448.6 1 .6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-left'> - <path d="M6 10l3 3v-2h8V9H9V7l-3 3zM4 2c-.553 0-1 .047-1 .6v14.8c0 .551.447.6 1 .6.552 0 1-.049 1-.6V2.6c0-.553-.448-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-right'> - <path d="M11 7v2H3v2h8v2l3-3-3-3zm4-4.4v14.8c0 .551.448.6 1 .6.553 0 1-.049 1-.6V2.6c0-.553-.447-.6-1-.6-.552 0-1 .047-1 .6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-top'> - <path d="M10 6L7 9h2v8h2V9h2l-3-3zm8-2c0-.553-.048-1-.6-1H2.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h14.8c.552 0 .6-.447.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-align-vertical-middle'> - <path d="M10 12l-3 3h2v4h2v-4h2l-3-3zm3-7h-2V1H9v4H7l3 3 3-3zm5 5c0-.553-.048-1-.6-1H2.6c-.552 0-.6.447-.6 1 0 .551.048 1 .6 1h14.8c.552 0 .6-.449.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-app-store'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17.564 13.862c-.413.916-.612 1.325-1.144 2.135-.742 1.13-1.79 2.538-3.087 2.55-1.152.01-1.448-.75-3.013-.741-1.564.008-1.89.755-3.043.744-1.297-.012-2.29-1.283-3.033-2.414-2.077-3.16-2.294-6.87-1.013-8.843.91-1.401 2.347-2.221 3.697-2.221 1.375 0 2.24.754 3.376.754 1.103 0 1.775-.756 3.365-.756 1.2 0 2.474.655 3.381 1.785-2.972 1.629-2.49 5.873.514 7.007zM12.463 3.808c.577-.742 1.016-1.788.857-2.858-.944.065-2.047.665-2.692 1.448-.584.71-1.067 1.763-.88 2.787 1.03.031 2.096-.584 2.715-1.377z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-archive'> - <path d="M13.981 2H6.018s-.996 0-.996 1h9.955c0-1-.996-1-.996-1zm2.987 3c0-1-.995-1-.995-1H4.027s-.995 0-.995 1v1h13.936V5zm1.99 1l-.588-.592V7H1.63V5.408L1.041 6C.452 6.592.03 6.75.267 8c.236 1.246 1.379 8.076 1.549 9 .186 1.014 1.217 1 1.217 1h13.936s1.03.014 1.217-1c.17-.924 1.312-7.754 1.549-9 .235-1.25-.187-1.408-.777-2zM14 11.997c0 .554-.449 1.003-1.003 1.003H7.003A1.003 1.003 0 0 1 6 11.997V10h1v2h6v-2h1v1.997z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-area-graph'> - <path d="M20 2v16H.32c-.318 0-.416-.209-.216-.465l4.469-5.748a.526.526 0 0 1 .789-.062l1.419 1.334a.473.473 0 0 0 .747-.096l3.047-4.74a.466.466 0 0 1 .741-.09l2.171 2.096c.232.225.559.18.724-.1l5.133-7.785C19.51 2.062 19.75 2 20 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-down'> - <path d="M2.5 10H6V3h8v7h3.5L10 17.5 2.5 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-left'> - <path d="M10 2.5V6h7v8h-7v3.5L2.5 10 10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-right'> - <path d="M17.5 10L10 17.5V14H3V6h7V2.5l7.5 7.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-bold-up'> - <path d="M10 2.5l7.5 7.5H14v7H6v-7H2.5L10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-down'> - <path d="M10 17.5L3.5 11H7V3h6v8h3.5L10 17.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-left'> - <path d="M2.5 10L9 3.5V7h8v6H9v3.5L2.5 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-down'> - <path d="M10 19.25L4.5 14H8V1h4v13h3.5L10 19.25z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-left'> - <path d="M.75 10L6 4.5V8h13v4H6v3.5L.75 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-right'> - <path d="M14 15.5V12H1V8h13V4.5l5.25 5.5L14 15.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-long-up'> - <path d="M10 .75L15.5 6H12v13H8V6H4.5L10 .75z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-right'> - <path d="M11 16.5V13H3V7h8V3.5l6.5 6.5-6.5 6.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-up'> - <path d="M10 2.5L16.5 9H13v8H7V9H3.5L10 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-down'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM12 6H8v4H5.5l4.5 4.5 4.5-4.5H12V6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-left'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 5.5L5.5 10l4.5 4.5V12h4V8h-4V5.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-right'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 8H6v4h4v2.5l4.5-4.5L10 5.5V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-arrow-with-circle-up'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM10 5.5l4.5 4.5H12v4H8v-4H5.5L10 5.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-attachment'> - <path d="M5.602 19.8c-1.293 0-2.504-.555-3.378-1.44-1.695-1.716-2.167-4.711.209-7.116l9.748-9.87c.988-1 2.245-1.387 3.448-1.06 1.183.32 2.151 1.301 2.468 2.498.322 1.22-.059 2.493-1.046 3.493l-9.323 9.44c-.532.539-1.134.858-1.738.922-.599.064-1.17-.13-1.57-.535-.724-.736-.828-2.117.378-3.337l6.548-6.63c.269-.272.705-.272.974 0s.269.714 0 .986l-6.549 6.631c-.566.572-.618 1.119-.377 1.364.106.106.266.155.451.134.283-.029.606-.216.909-.521l9.323-9.439c.64-.648.885-1.41.69-2.145a2.162 2.162 0 0 0-1.493-1.513c-.726-.197-1.48.052-2.12.7l-9.748 9.87c-1.816 1.839-1.381 3.956-.209 5.143 1.173 1.187 3.262 1.629 5.079-.212l9.748-9.87a.683.683 0 0 1 .974 0 .704.704 0 0 1 0 .987L9.25 18.15c-1.149 1.162-2.436 1.65-3.648 1.65z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-awareness-ribbon'> - <path d="M16.574 16.338c-.757-1.051-2.851-3.824-4.57-6.106.696-.999 1.251-1.815 1.505-2.242 1.545-2.594.874-4.26.022-5.67C12.677.909 12.542.094 10 .094c-2.543 0-2.678.815-3.531 2.227-.854 1.41-1.524 3.076.021 5.67.254.426.809 1.243 1.506 2.242-1.72 2.281-3.814 5.055-4.571 6.106-.176.244-.16.664.009 1.082.13.322.63 1.762.752 2.064.156.389.664.67 1.082.092.241-.334 2.582-3.525 4.732-6.522 2.149 2.996 4.491 6.188 4.732 6.522.417.578.926.297 1.082-.092.122-.303.622-1.742.752-2.064.167-.419.184-.839.008-1.083zm-6.94-9.275C8.566 5.579 7.802 3.852 7.802 3.852s.42-.758 2.198-.758 2.198.758 2.198.758-.766 1.727-1.833 3.211L10 7.56a40.64 40.64 0 0 1-.366-.497z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-back-in-time'> - <path d="M11 1.799c-4.445 0-8.061 3.562-8.169 7.996V10H.459l3.594 3.894L7.547 10H4.875v-.205C4.982 6.492 7.683 3.85 11 3.85c3.386 0 6.131 2.754 6.131 6.15 0 3.396-2.745 6.15-6.131 6.15a6.099 6.099 0 0 1-3.627-1.193l-1.406 1.504A8.13 8.13 0 0 0 11 18.199c4.515 0 8.174-3.67 8.174-8.199S15.515 1.799 11 1.799zM10 5v5a1.01 1.01 0 0 0 .293.707l3.2 3.2c.283-.183.55-.389.787-.628L12 11V5h-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-back'> - <path d="M19 7v6c0 1.103-.896 2-2 2H3v-3h13V8H5v2L1 6.5 5 3v2h12a2 2 0 0 1 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-baidu'> - <path d="M17.412 6.937c-.36-.283-.924-.4-1.463-.365-.416.026-.761.034-1.005.182-1.116.677-1.217 4.353.182 4.934 2.974 1.236 4.057-3.35 2.286-4.751zm-4.479 3.838c-.963-1.119-1.64-2.681-3.563-2.376-1.706.272-1.924 1.67-2.833 2.65-1.08 1.164-3.105 2.018-3.564 3.838-.335 1.329.116 2.892.913 3.473 1.566 1.137 4.474-.125 6.58.09 1.26.13 2.225.573 3.198.55 2.262-.054 4.09-1.67 3.107-4.295-.48-1.286-2.6-2.494-3.838-3.93zm-.274-3.93c1.134.033 2.302-1.264 2.376-2.467.098-1.57-.93-3.143-2.467-2.741-.914.239-1.664 1.41-1.736 2.56-.083 1.331.617 2.615 1.827 2.649zM8.273 6.48C9.45 6.321 9.94 4.908 9.736 3.282 9.566 1.943 8.84.645 7.268 1.089 5.103 1.7 5.448 6.862 8.273 6.48zM4.16 10.592c2.583-.385 1.98-5.938-.822-5.3-2.41.55-2.087 5.735.822 5.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bar-graph'> - <path d="M17 1h-2a1 1 0 0 0-1 1v16.992h4V2a1 1 0 0 0-1-1zm-6 6H9a1 1 0 0 0-1 1v10.992h4V8a1 1 0 0 0-1-1zm-6 6H3a1 1 0 0 0-1 1v4.992h4V14a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-basecamp'> - <path d="M10 2C5.327 2 .7 8.481.7 14.422.7 15.799 5.234 18 10 18s9.3-2.201 9.3-3.578C19.3 8.481 14.673 2 10 2zm.006 13.615c-5.198 0-6.673-2.068-6.673-2.722 0-1.287 2.13-4.485 2.906-4.485.719 0 1.542 1.811 2.314 1.811 1.241 0 2.567-3.954 3.579-3.954s4.601 5.178 4.601 6.749c0 .271-1.084 2.601-6.727 2.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-battery'> - <path d="M15.408 10c0-2.766 1.277-4.32 2.277-4.32H19C18.332 4.621 17.779 4 15.342 4H5.334C1.6 4 0 7.441 0 10s1.6 6 5.334 6h10.008c2.438 0 2.99-.621 3.658-1.68h-1.315c-1 0-2.277-1.554-2.277-4.32zm-2.72 1.795c-.164.25-.676.016-.676.016l-2.957-1.338s-.264.67-.467 1.141c-.205.471-.361 1.004-1.209.408-.849-.598-3.581-3.25-3.581-3.25s-.345-.284-.173-.551c.163-.252.676-.016.676-.016l2.956 1.336s.265-.668.468-1.139c.205-.47.361-1.006 1.209-.408.849.596 3.58 3.25 3.58 3.25s.345.283.174.551zm6.186-3.867h-.749c-.559 0-1.105.754-1.105 1.979 0 1.227.547 1.98 1.105 1.98h.749c.56 0 1.126-.754 1.126-1.98 0-1.225-.566-1.979-1.126-1.979z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-beamed-note'> - <path d="M17 1l-.002 13c0 1.243-1.301 3-3.748 3-1.243 0-2.25-.653-2.25-1.875 0-1.589 1.445-2.55 3-2.55.432 0 .754.059 1 .123V5.364L8 6.637V16h-.002c0 1.243-1.301 3-3.748 3C3.007 19 2 18.347 2 17.125c0-1.589 1.445-2.55 3-2.55.432 0 .754.059 1 .123V3l11-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-behance'> - <path d="M8.072 9.301s1.892-.147 1.892-2.459c0-2.315-1.548-3.441-3.51-3.441H0v12.926h6.454s3.941.129 3.941-3.816c-.001-.001.171-3.21-2.323-3.21zM2.844 5.697h3.61s.878 0 .878 1.344c0 1.346-.516 1.541-1.102 1.541H2.844V5.697zm3.427 8.332H2.844v-3.455h3.61s1.308-.018 1.308 1.775c0 1.512-.977 1.669-1.491 1.68zm9.378-7.341c-4.771 0-4.767 4.967-4.767 4.967s-.326 4.941 4.767 4.941c0 0 4.243.254 4.243-3.437H17.71s.072 1.391-1.988 1.391c0 0-2.184.152-2.184-2.25h6.423c.001-.001.709-5.612-4.312-5.612zm1.941 3.886h-4.074s.266-1.992 2.182-1.992 1.892 1.992 1.892 1.992zm.507-6.414H12.98v1.594h5.117V4.16z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bell'> - <path d="M14.65 8.512c-2.28-4.907-3.466-6.771-7.191-6.693-1.327.027-1.009-.962-2.021-.587-1.01.375-.143.924-1.177 1.773-2.902 2.383-2.635 4.587-1.289 9.84.567 2.213-1.367 2.321-.602 4.465.559 1.564 4.679 2.219 9.025.607 4.347-1.613 7.086-4.814 6.527-6.378-.765-2.145-2.311-.961-3.272-3.027zm-3.726 8.083c-3.882 1.44-7.072.594-7.207.217-.232-.65 1.253-2.816 5.691-4.463 4.438-1.647 6.915-1.036 7.174-.311.153.429-1.775 3.116-5.658 4.557zm-1.248-3.494c-2.029.753-3.439 1.614-4.353 2.389.643.584 1.847.726 3.046.281 1.527-.565 2.466-1.866 2.095-2.904l-.016-.036c-.251.082-.508.171-.772.27z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-blackboard'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M2.539 20H6l1.406-3.698-2.966-1.004L2.539 20zm10.055-3.698L14 20h3.461l-1.901-4.702-2.966 1.004zM18 2h-6.5L11 0H9l-.5 2H2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-block'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zM2.399 10a7.6 7.6 0 0 1 12.417-5.877L4.122 14.817A7.568 7.568 0 0 1 2.399 10zm7.6 7.599a7.56 7.56 0 0 1-4.815-1.722L15.878 5.184a7.6 7.6 0 0 1-5.879 12.415z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-book'> - <path d="M17 5.95v10.351c0 .522-.452.771-1 1.16-.44.313-1-.075-1-.587V6.76c0-.211-.074-.412-.314-.535-.24-.123-7.738-4.065-7.738-4.065-.121-.045-.649-.378-1.353-.016-.669.344-1.033.718-1.126.894l8.18 4.482c.217.114.351.29.351.516v10.802a.67.67 0 0 1-.369.585.746.746 0 0 1-.333.077.736.736 0 0 1-.386-.104c-.215-.131-7.774-4.766-8.273-5.067-.24-.144-.521-.439-.527-.658L3 3.385c0-.198-.023-.547.289-1.032C3.986 1.269 6.418.036 7.649.675l8.999 4.555c.217.112.352.336.352.72z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bookmark'> - <path d="M14 2v17l-4-4-4 4V2c0-.553.585-1.02 1-1h6c.689-.02 1 .447 1 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bookmarks'> - <path d="M15 0h-4a1 1 0 0 0-1 1l.023.222c1.102 0 2 .897 2 2v11.359L13 13.4l3 3.6V1a1 1 0 0 0-1-1zM9.023 3H5a1 1 0 0 0-1 1v16l3-3.6 3 3.6V4c0-.553-.424-1-.977-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bowl'> - <path d="M16.949 7.472c-2.176 2.902-4.095 3.002-7.046 3.152h-.101c-3.591-.002-6.138-1.336-6.138-1.832-.002-.471 2.298-1.697 5.605-1.819l.59-1.473-.057-.002c-4.908 0-7.791 1.562-7.791 3.051v2c0 .918.582 8.949 7.582 8.949s8-8.031 8-8.949v-2c0-.391-.201-.787-.584-1.158l-.06.081zm.64-4.77a1 1 0 0 0-1.399.201l-3.608 4.809 2.336-5.838a1 1 0 1 0-1.857-.742L9.802 9.274c2.882-.147 4.277-.227 6.067-2.611l1.919-2.561a1 1 0 0 0-.199-1.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-box'> - <path d="M18.399 2H1.6c-.332 0-.6.267-.6.6V5h18V2.6a.6.6 0 0 0-.601-.6zM2 16.6c0 .77.629 1.4 1.399 1.4h13.2c.77 0 1.4-.631 1.4-1.4V6H2v10.6zM7 8h6v2H7V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-briefcase'> - <path d="M9 10h2v2h9s-.149-4.459-.2-5.854C19.75 4.82 19.275 4 17.8 4h-3.208l-1.197-2.256C13.064 1.121 12.951 1 12.216 1H7.783c-.735 0-.847.121-1.179.744-.165.311-.7 1.318-1.196 2.256H2.199c-1.476 0-1.945.82-2 2.146C.145 7.473 0 12 0 12h9v-2zM7.649 2.916c.23-.432.308-.516.817-.516h3.067c.509 0 .588.084.816.516L12.924 4h-5.85l.575-1.084zM11 15H9v-2H.5s.124 1.797.199 3.322C.73 16.955.917 18 2.499 18H17.5c1.582 0 1.765-1.047 1.8-1.678.087-1.568.2-3.322.2-3.322H11v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-browser'> - <path d="M18 2H2C.9 2 0 2.9 0 4v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM4.5 3.75a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5zm-2.75.75a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0zM18 16H2V7h16v9zm0-11H6V4h12.019L18 5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-brush'> - <path d="M2.763 13.563c-1.515 1.488-.235 3.016-2.247 5.279-.908 1.023 3.738.711 6.039-1.551.977-.961.701-2.359-.346-3.389-1.047-1.028-2.47-1.3-3.446-.339zM19.539.659C18.763-.105 10.16 6.788 7.6 9.305c-1.271 1.25-1.695 1.92-2.084 2.42-.17.219.055.285.154.336.504.258.856.496 1.311.943.456.447.699.793.959 1.289.053.098.121.318.342.152.51-.383 1.191-.801 2.462-2.049C13.305 9.88 20.317 1.422 19.539.659z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bucket'> - <path d="M11 1C6.092 1 3.002 2.592 3.21 3.95c.06.389.225 1.945.434 3.273C1.239 8.157.442 9.672.549 10.907c.127 1.461 1.441 3.025 4.328 3.295 1.648.154 3.631-.75 4.916-2.295a1.4 1.4 0 1 1 1.238.691c-1.529 1.973-3.858 3.164-6.064 3.025.051.324.07.947.096 1.113.09.579 2.347 2.26 5.937 2.264 3.59-.004 5.847-1.685 5.938-2.263.088-.577 1.641-11.409 1.852-12.787C18.998 2.592 15.907 1 11 1zm-9.057 9.785c-.055-.643.455-1.498 1.924-2.139l.643 4.074c-1.604-.313-2.498-1.149-2.567-1.935zM11 6.024C7.41 6.022 4.863 4.69 4.863 4.192 4.861 3.698 7.41 2.402 11 2.404c3.59-.002 6.139 1.294 6.137 1.788 0 .498-2.547 1.83-6.137 1.832z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-bug'> - <path d="M10 1a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4zm9 9h-3V7.503c0-.028-.007-.053-.008-.08l2.215-2.216a1 1 0 1 0-1.414-1.414l-2.215 2.215c-.028-.001-.053-.008-.08-.008H5.502c-.028 0-.053.007-.08.008L3.206 3.793a1 1 0 1 0-1.414 1.414l2.215 2.215C4.007 7.45 4 7.475 4 7.503V10H1a1 1 0 0 0 0 2h3c0 .78.156 1.52.427 2.204-.044.031-.094.05-.134.089L1.464 17.12a1 1 0 0 0 1.415 1.415l2.601-2.602A5.995 5.995 0 0 0 9 17.91V8h2v9.91a5.995 5.995 0 0 0 3.52-1.976l2.601 2.602a1 1 0 0 0 1.415-1.415l-2.829-2.828c-.04-.04-.09-.058-.134-.09A5.956 5.956 0 0 0 16 12h3a1 1 0 0 0 0-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cake'> - <path d="M9.584 6.036c1.952 0 2.591-1.381 1.839-2.843-.871-1.693 1.895-3.155.521-3.155-1.301 0-3.736 1.418-4.19 3.183-.339 1.324.296 2.815 1.83 2.815zm5.212 8.951l-.444-.383a1.355 1.355 0 0 0-1.735 0l-.442.382a3.326 3.326 0 0 1-2.174.801 3.325 3.325 0 0 1-2.173-.8l-.444-.384a1.353 1.353 0 0 0-1.734.001l-.444.383c-1.193 1.028-2.967 1.056-4.204.1V19a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-3.912c-1.237.954-3.011.929-4.206-.101zM10 7c-7.574 0-9 3.361-9 5v.469l1.164 1.003a1.355 1.355 0 0 0 1.735 0l.444-.383a3.353 3.353 0 0 1 4.345 0l.444.384c.484.417 1.245.42 1.735-.001l.442-.382a3.352 3.352 0 0 1 4.346-.001l.444.383c.487.421 1.25.417 1.735 0L19 12.469V12c0-1.639-1.426-5-9-5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-calculator'> - <path d="M14.6 1H5.398C4.629 1 4 1.629 4 2.4v15.2c0 .77.629 1.4 1.398 1.4H14.6c.769 0 1.4-.631 1.4-1.4V2.4c0-.771-.631-1.4-1.4-1.4zM7 12c.689 0 1.25.447 1.25 1S7.689 14 7 14c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM7 15c.689 0 1.25.447 1.25 1S7.689 17 7 17c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm3-3c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM10 15c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm3-3c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zm-1.25-2c0-.553.56-1 1.25-1 .689 0 1.25.447 1.25 1 0 .553-.561 1-1.25 1-.69 0-1.25-.447-1.25-1zM13 15c.689 0 1.25.447 1.25 1s-.561 1-1.25 1c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1zM5 7V4h10v3H5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-calendar'> - <path d="M17 3h-1v2h-3V3H7v2H4V3H3c-1.101 0-2 .9-2 2v12c0 1.1.899 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 14H3V9h14v8zM6.5 1h-2v3.5h2V1zm9 0h-2v3.5h2V1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-camera'> - <path d="M10 8a3 3 0 1 0 0 6 3 3 0 0 0 0-6zm8-3h-2.4a.888.888 0 0 1-.789-.57l-.621-1.861A.89.89 0 0 0 13.4 2H6.6c-.33 0-.686.256-.789.568L5.189 4.43A.889.889 0 0 1 4.4 5H2C.9 5 0 5.9 0 7v9c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-8 11a5 5 0 0 1-5-5 5 5 0 1 1 10 0 5 5 0 0 1-5 5zm7.5-7.8a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ccw'> - <path d="M.685 10h2.372v-.205c.108-4.434 3.724-7.996 8.169-7.996 4.515 0 8.174 3.672 8.174 8.201s-3.659 8.199-8.174 8.199a8.13 8.13 0 0 1-5.033-1.738l1.406-1.504a6.099 6.099 0 0 0 3.627 1.193c3.386 0 6.131-2.754 6.131-6.15 0-3.396-2.745-6.15-6.131-6.15-3.317 0-6.018 2.643-6.125 5.945V10h2.672l-3.494 3.894L.685 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chat'> - <path d="M5.8 12.2V6H2C.9 6 0 6.9 0 8v6c0 1.1.9 2 2 2h1v3l3-3h5c1.1 0 2-.9 2-2v-1.82a.943.943 0 0 1-.2.021h-7V12.2zM18 1H9c-1.1 0-2 .9-2 2v8h7l3 3v-3h1c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-check'> - <path d="M8.294 16.998c-.435 0-.847-.203-1.111-.553L3.61 11.724a1.392 1.392 0 0 1 .27-1.951 1.392 1.392 0 0 1 1.953.27l2.351 3.104 5.911-9.492a1.396 1.396 0 0 1 1.921-.445c.653.406.854 1.266.446 1.92L9.478 16.34a1.39 1.39 0 0 1-1.12.656c-.022.002-.042.002-.064.002z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-down'> - <path d="M4.516 7.548c.436-.446 1.043-.481 1.576 0L10 11.295l3.908-3.747c.533-.481 1.141-.446 1.574 0 .436.445.408 1.197 0 1.615-.406.418-4.695 4.502-4.695 4.502a1.095 1.095 0 0 1-1.576 0S4.924 9.581 4.516 9.163c-.409-.418-.436-1.17 0-1.615z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-left'> - <path d="M12.452 4.516c.446.436.481 1.043 0 1.576L8.705 10l3.747 3.908c.481.533.446 1.141 0 1.574-.445.436-1.197.408-1.615 0-.418-.406-4.502-4.695-4.502-4.695a1.095 1.095 0 0 1 0-1.576s4.084-4.287 4.502-4.695c.418-.409 1.17-.436 1.615 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-right'> - <path d="M9.163 4.516c.418.408 4.502 4.695 4.502 4.695a1.095 1.095 0 0 1 0 1.576s-4.084 4.289-4.502 4.695c-.418.408-1.17.436-1.615 0-.446-.434-.481-1.041 0-1.574L11.295 10 7.548 6.092c-.481-.533-.446-1.141 0-1.576.445-.436 1.197-.409 1.615 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-down'> - <path d="M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11l3.418-3.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-left'> - <path d="M12.141 13.418a.695.695 0 0 1 0 .978.68.68 0 0 1-.969 0l-3.83-3.908a.697.697 0 0 1 0-.979l3.83-3.908a.68.68 0 0 1 .969 0 .695.695 0 0 1 0 .978L9 10l3.141 3.418z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-right'> - <path d="M11 10L7.859 6.58a.695.695 0 0 1 0-.978.68.68 0 0 1 .969 0l3.83 3.908a.697.697 0 0 1 0 .979l-3.83 3.908a.68.68 0 0 1-.969 0 .695.695 0 0 1 0-.978L11 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-small-up'> - <path d="M6.582 12.141a.695.695 0 0 1-.978 0 .68.68 0 0 1 0-.969l3.908-3.83a.697.697 0 0 1 .979 0l3.908 3.83a.68.68 0 0 1 0 .969.697.697 0 0 1-.979 0L10 9l-3.418 3.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-down'> - <path d="M17.418 6.109a.697.697 0 0 1 .979 0 .68.68 0 0 1 0 .969l-7.908 7.83a.697.697 0 0 1-.979 0l-7.908-7.83a.68.68 0 0 1 0-.969.697.697 0 0 1 .979 0L10 13.25l7.418-7.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-left'> - <path d="M13.891 17.418a.697.697 0 0 1 0 .979.68.68 0 0 1-.969 0l-7.83-7.908a.697.697 0 0 1 0-.979l7.83-7.908a.68.68 0 0 1 .969 0 .697.697 0 0 1 0 .979L6.75 10l7.141 7.418z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-right'> - <path d="M13.25 10L6.109 2.58a.697.697 0 0 1 0-.979.68.68 0 0 1 .969 0l7.83 7.908a.697.697 0 0 1 0 .979l-7.83 7.908a.68.68 0 0 1-.969 0 .697.697 0 0 1 0-.979L13.25 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-thin-up'> - <path d="M2.582 13.891c-.272.268-.709.268-.979 0s-.271-.701 0-.969l7.908-7.83a.697.697 0 0 1 .979 0l7.908 7.83a.68.68 0 0 1 0 .969.695.695 0 0 1-.978 0L10 6.75l-7.418 7.141z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-up'> - <path d="M15.484 12.452c-.436.446-1.043.481-1.576 0L10 8.705l-3.908 3.747c-.533.481-1.141.446-1.574 0-.436-.445-.408-1.197 0-1.615.406-.418 4.695-4.502 4.695-4.502a1.095 1.095 0 0 1 1.576 0s4.287 4.084 4.695 4.502c.409.418.436 1.17 0 1.615z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-down'> - <path d="M12.505 8.698L10 11 7.494 8.698a.512.512 0 0 0-.718 0 .5.5 0 0 0 0 .71l2.864 2.807a.51.51 0 0 0 .717 0l2.864-2.807a.498.498 0 0 0 0-.71.51.51 0 0 0-.716 0zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-left'> - <path d="M11.302 6.776a.5.5 0 0 0-.71 0L7.785 9.641a.51.51 0 0 0 0 .717l2.807 2.864a.498.498 0 0 0 .71 0 .51.51 0 0 0 0-.717L9 10l2.302-2.506a.512.512 0 0 0 0-.718zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-right'> - <path d="M11 10L8.698 7.494a.512.512 0 0 1 0-.718.5.5 0 0 1 .71 0l2.807 2.864a.51.51 0 0 1 0 .717l-2.807 2.864a.498.498 0 0 1-.71 0 .51.51 0 0 1 0-.717L11 10zM10 .4a9.6 9.6 0 0 1 9.6 9.6c0 5.303-4.298 9.6-9.6 9.6S.4 15.303.4 10A9.6 9.6 0 0 1 10 .4zm0 17.954a8.354 8.354 0 1 0 0-16.709 8.354 8.354 0 0 0 0 16.709z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-chevron-with-circle-up'> - <path d="M10.359 7.785a.51.51 0 0 0-.717 0l-2.864 2.807a.498.498 0 0 0 0 .71.51.51 0 0 0 .717 0L10 9l2.506 2.302a.512.512 0 0 0 .718 0 .5.5 0 0 0 0-.71l-2.865-2.807zM10 .4A9.6 9.6 0 0 0 .4 10c0 5.303 4.298 9.6 9.6 9.6s9.6-4.297 9.6-9.6A9.6 9.6 0 0 0 10 .4zm0 17.954A8.353 8.353 0 0 1 1.646 10 8.354 8.354 0 1 1 10 18.354z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-cross'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm4.789 11.461L13.06 14.79 10 11.729l-3.061 3.06L5.21 13.06 8.272 10 5.211 6.939 6.94 5.211 10 8.271l3.061-3.061 1.729 1.729L11.728 10l3.061 3.061z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-minus'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm5 9.4H5V9h10v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle-with-plus'> - <path d="M10 1.6a8.4 8.4 0 1 0 0 16.8 8.4 8.4 0 0 0 0-16.8zm5 9.4h-4v4H9v-4H5V9h4V5h2v4h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circle'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199A7.6 7.6 0 1 1 10 2.4a7.6 7.6 0 1 1 0 15.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-circular-graph'> - <path d="M17.584 9.372h2a9.554 9.554 0 0 0-.668-2.984L17.16 7.402c.224.623.371 1.283.424 1.97zm-3.483-8.077a9.492 9.492 0 0 0-3.086-.87v2.021a7.548 7.548 0 0 1 2.084.585l1.002-1.736zm2.141 4.327l1.741-1.005a9.643 9.643 0 0 0-2.172-2.285l-1.006 1.742a7.625 7.625 0 0 1 1.437 1.548zm-6.228 11.949a7.6 7.6 0 0 1-7.6-7.6c0-3.858 2.877-7.036 6.601-7.526V.424C4.182.924.414 5.007.414 9.971a9.6 9.6 0 0 0 9.601 9.601c4.824 0 8.807-3.563 9.486-8.2H17.48c-.658 3.527-3.748 6.199-7.466 6.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clapperboard'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M20 3v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h1l3 3h2.5l-3-3h3l3 3H13l-3-3h3l3 3h2.5l-3-3H19a1 1 0 0 1 1 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-classic-computer'> - <path d="M16 0H4C2.9 0 2 .899 2 2v15a1 1 0 0 0 1 1v2h14v-2a1 1 0 0 0 1-1V2c0-1.101-.899-2-2-2zm-2 15h-4v-1h4v1zm1-4H5V3h10v8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clipboard'> - <path d="M15.6 2l-1.2 3H5.6L4.4 2C3.629 2 3 2.629 3 3.4v15.2c0 .77.629 1.4 1.399 1.4h11.2c.77 0 1.4-.631 1.4-1.4V3.4C17 2.629 16.369 2 15.6 2zm-2 2l.9-2h-2.181L11.6 0H8.4l-.72 2H5.5l.899 2H13.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-clock'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm-.001 17.2a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2zM11 9.33V4H9v6.245l-3.546 2.048 1 1.732 4.115-2.377A.955.955 0 0 0 11 10.9v-.168l4.24-4.166a6.584 6.584 0 0 0-.647-.766L11 9.33z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cloud'> - <path d="M20 11.32c0 2.584-2.144 4.68-4.787 4.68H3.617C1.619 16 0 14.416 0 12.463c0-1.951 1.619-3.535 3.617-3.535.146 0 .288.012.429.027a5.076 5.076 0 0 1-.057-.756C3.989 5.328 6.37 3 9.309 3c2.407 0 4.439 1.562 5.096 3.707a5 5 0 0 1 .809-.066C17.856 6.641 20 8.734 20 11.32z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-code'> - <path d="M5.719 14.75a.997.997 0 0 1-.664-.252L-.005 10l5.341-4.748a1 1 0 0 1 1.328 1.495L3.005 10l3.378 3.002a1 1 0 0 1-.664 1.748zm8.945-.002L20.005 10l-5.06-4.498a.999.999 0 1 0-1.328 1.495L16.995 10l-3.659 3.252a1 1 0 0 0 1.328 1.496zm-4.678 1.417l2-12a1 1 0 1 0-1.972-.329l-2 12a1 1 0 1 0 1.972.329z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cog'> - <path d="M16.783 10c0-1.049.646-1.875 1.617-2.443a8.932 8.932 0 0 0-.692-1.672c-1.089.285-1.97-.141-2.711-.883-.741-.74-.968-1.621-.683-2.711a8.732 8.732 0 0 0-1.672-.691c-.568.97-1.595 1.615-2.642 1.615-1.048 0-2.074-.645-2.643-1.615a8.697 8.697 0 0 0-1.671.691c.285 1.09.059 1.971-.684 2.711-.74.742-1.621 1.168-2.711.883A8.797 8.797 0 0 0 1.6 7.557c.97.568 1.615 1.394 1.615 2.443 0 1.047-.645 2.074-1.615 2.643a8.89 8.89 0 0 0 .691 1.672c1.09-.285 1.971-.059 2.711.682.741.742.969 1.623.684 2.711a8.841 8.841 0 0 0 1.672.693c.568-.973 1.595-1.617 2.643-1.617 1.047 0 2.074.645 2.643 1.617a8.963 8.963 0 0 0 1.672-.693c-.285-1.088-.059-1.969.683-2.711.741-.74 1.622-1.166 2.711-.883a8.811 8.811 0 0 0 .692-1.672c-.973-.569-1.619-1.395-1.619-2.442zM10 13.652a3.652 3.652 0 1 1 0-7.306 3.653 3.653 0 0 1 0 7.306z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-colours'> - <path d="M3.179 5.998a1.005 1.005 0 0 0-1.408.132L.494 7.669a1.004 1.004 0 0 0 .131 1.407l7.888 6.542-3.807-8.354-1.527-1.266zm3.834-3.315l-1.82.829a1.005 1.005 0 0 0-.495 1.324l4.25 9.325.213-9.179-.822-1.804c-.23-.5-.826-.723-1.326-.495zm7.198.204a1.003 1.003 0 0 0-.976-1.023l-2-.046a1.003 1.003 0 0 0-1.022.976l-.239 10.243 4.19-8.167.047-1.983zm4.98.95l-1.779-.913a1.005 1.005 0 0 0-1.347.434L9.674 15.814a1.004 1.004 0 0 0 .434 1.347l1.779.913a1.003 1.003 0 0 0 1.346-.433l6.391-12.456a1.005 1.005 0 0 0-.433-1.348zm-6.392 12.456a1 1 0 1 1-1.78-.911 1 1 0 0 1 1.78.911z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-compass'> - <path d="M5.454 14.548s4.568-.627 6.518-2.576 2.576-6.518 2.576-6.518-4.569.627-6.518 2.576-2.576 6.518-2.576 6.518zm3.563-5.533c.818-.818 2.385-1.4 3.729-1.762-.361 1.342-.945 2.92-1.76 3.732a1.39 1.39 0 0 1-1.969 0 1.391 1.391 0 0 1 0-1.97zM10.001.4C4.698.4.4 4.698.4 10a9.6 9.6 0 0 0 9.601 9.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zM10 17.6a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 1 1 0 15.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-fast-backward'> - <path d="M17.959 4.571L10.756 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.38 1.041.099 1.041-.626V5.196c0-.727-.469-1.008-1.041-.625zm-9.076 0L1.68 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.381 1.041.1 1.041-.625v-9.61c0-.727-.469-1.008-1.041-.625z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-fast-forward'> - <path d="M9.244 9.52L2.041 4.571C1.469 4.188 1 4.469 1 5.196v9.609c0 .725.469 1.006 1.041.625l7.203-4.951s.279-.199.279-.478c0-.28-.279-.481-.279-.481zm9.356.481c0 .279-.279.478-.279.478l-7.203 4.951c-.572.381-1.041.1-1.041-.625V5.196c0-.727.469-1.008 1.041-.625L18.32 9.52s.28.201.28.481z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-jump-to-start'> - <path d="M14.959 4.571L7.756 9.52s-.279.201-.279.481.279.479.279.479l7.203 4.951c.572.38 1.041.099 1.041-.626V5.196c0-.727-.469-1.008-1.041-.625zM6 4H5c-.553 0-1 .048-1 .6v10.8c0 .552.447.6 1 .6h1c.553 0 1-.048 1-.6V4.6c0-.552-.447-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-next'> - <path d="M12.244 9.52L5.041 4.571C4.469 4.188 4 4.469 4 5.196v9.609c0 .725.469 1.006 1.041.625l7.203-4.951s.279-.199.279-.478c0-.28-.279-.481-.279-.481zM14 4h1c.553 0 1 .048 1 .6v10.8c0 .552-.447.6-1 .6h-1c-.553 0-1-.048-1-.6V4.6c0-.552.447-.6 1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-paus'> - <path d="M15 3h-2c-.553 0-1 .048-1 .6v12.8c0 .552.447.6 1 .6h2c.553 0 1-.048 1-.6V3.6c0-.552-.447-.6-1-.6zM7 3H5c-.553 0-1 .048-1 .6v12.8c0 .552.447.6 1 .6h2c.553 0 1-.048 1-.6V3.6c0-.552-.447-.6-1-.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-play'> - <path d="M15 10.001c0 .299-.305.514-.305.514l-8.561 5.303C5.51 16.227 5 15.924 5 15.149V4.852c0-.777.51-1.078 1.135-.67l8.561 5.305c-.001 0 .304.215.304.514z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-record'> - <path d="M10 3a7 7 0 1 0 .001 13.999A7 7 0 0 0 10 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-stop'> - <path d="M16 4.995v9.808c0 .661-.536 1.197-1.196 1.197H4.997A.997.997 0 0 1 4 15.003V5.196C4 4.536 4.536 4 5.196 4h9.808c.55 0 .996.446.996.995z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-controller-volume'> - <path d="M19 13.805c0 .657-.538 1.195-1.195 1.195H1.533c-.88 0-.982-.371-.229-.822l16.323-9.055C18.382 4.67 19 5.019 19 5.9v7.905z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-copy'> - <path d="M11 0H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h5v2h2v-2H8.001v-2H10v-2H8v2H4V2h6v4h2V1a1 1 0 0 0-1-1zM8 7v1h2V6H9a1 1 0 0 0-1 1zm4 13h2v-2h-2v2zm0-12h2V6h-2v2zM8 19a1 1 0 0 0 1 1h1v-2H8v1zm9-13h-1v2h2V7a1 1 0 0 0-1-1zm-1 14h1a1 1 0 0 0 1-1v-1h-2v2zm0-8h2v-2h-2v2zm0 4h2v-2h-2v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-cloud'> - <path d="M12.6 3c-1.966 0-3.74.813-5.012 2.119A6 6 0 1 0 6.4 17h6.2a7 7 0 1 0 0-14zM6.4 15.728a4.7 4.7 0 0 1-3.344-1.385C2.164 13.45 1.672 12.262 1.672 11s.492-2.45 1.385-3.343c.893-.893 2.08-1.385 3.343-1.385s2.45.492 3.344 1.385l1.874 1.875a.7.7 0 0 1-.99.99L8.754 8.646c-1.258-1.256-3.449-1.256-4.707 0-.629.63-.975 1.465-.975 2.354s.346 1.724.975 2.354c.785.784 1.933 1.078 2.991.884.324.424.689.815 1.1 1.155a4.723 4.723 0 0 1-1.738.335zm10.289-1.639a5.748 5.748 0 0 1-4.089 1.694 5.749 5.749 0 0 1-4.09-1.694L5.801 11.38a.7.7 0 0 1 .99-.99L9.5 13.099c.828.828 1.929 1.284 3.1 1.284s2.271-.456 3.099-1.284S16.983 11.17 16.983 10s-.456-2.271-1.284-3.099-1.928-1.284-3.099-1.284c-.873 0-1.707.255-2.418.727a6.056 6.056 0 0 0-1.251-.779c1.035-.858 2.309-1.349 3.67-1.349 1.544 0 2.996.602 4.089 1.694 1.093 1.093 1.694 2.545 1.694 4.089s-.602 2.998-1.695 4.09z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-attribution'> - <path d="M12.6 7.6v3.9h-1.1v4.6h-3v-4.6H7.4V7.6c0-.3.3-.6.6-.6h4c.3 0 .6.3.6.6zM10 6.5c.7 0 1.3-.6 1.3-1.3 0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3 0 .7.6 1.3 1.3 1.3zm9.6 3.5c0 2.7-.9 4.9-2.7 6.7-1.9 1.9-4.2 2.9-6.9 2.9-2.6 0-4.9-.9-6.8-2.8C1.3 14.9.4 12.7.4 10c0-2.6.9-4.9 2.8-6.8C5.1 1.3 7.3.4 10 .4s5 .9 6.8 2.8c1.9 1.8 2.8 4.1 2.8 6.8zm-1.7 0c0-2.2-.8-4-2.3-5.6C14 2.9 12.2 2.1 10 2.1c-2.2 0-4 .8-5.5 2.3C2.9 6 2.1 7.9 2.1 10c0 2.1.8 4 2.3 5.5s3.4 2.3 5.6 2.3c2.1 0 4-.8 5.6-2.4 1.5-1.4 2.3-3.2 2.3-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noderivs'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-9-4.7h7v1.7h-7v-1.7zm0-3.1h7v1.7h-7V7.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noncommercial-eu'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-.9.1-1.8.4-2.6L5 8.5h-.1v1.1h.9v.8h-.9v1.1h1c.1.9.5 1.5.9 2.1.9 1.2 2.3 1.8 3.9 1.8 1 0 2-.3 2.5-.6l-.4-1.8c-.3.2-1.1.4-1.8.4-.8 0-1.6-.2-2.1-.8-.2-.3-.4-.6-.5-1.1H12l5 2.2c-.4.7-.9 1.3-1.4 1.8zm-6.3-5zm3.1-.8h.1V8.6H9.8l-1.1-.5.3-.6c.5-.6 1.2-.9 2-.9.7 0 1.4.2 1.8.4l.5-1.8c-.6-.3-1.4-.5-2.4-.5-1.6 0-2.9.6-3.8 1.7-.2.2-.4.5-.5.7L3.4 5.8c.3-.5.7-.9 1.1-1.3C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 .7-.1 1.4-.2 2l-5.3-2.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-noncommercial-us'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10s.9 4.9 2.8 6.8c1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7s-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-.9.1-1.8.4-2.6l4.9 2.2c.5.2 1 .4 1.5.7l1.1.5.9.4c.2.1.3.3.3.6 0 .7-.6 1-1.2 1-.9 0-1.5-.3-2.1-.9l-1.3 1.3c.8.7 1.8 1.1 2.9 1.1v1.5h1.1v-1.5c1.3-.1 2.4-.9 2.6-2.1l3.6 1.6c-.2.6-.7 1.2-1.2 1.7zm-2.9-5.6c-.5-.2-1-.4-1.5-.7l-.8-.4-1.3-.5c0-.1-.1-.2-.1-.3 0-.6.7-.7 1.2-.7.6 0 1.2.2 1.6.6l1.3-1.3c-.8-.6-1.7-.8-2.4-.9V4.2H9.6v1.5c-1.2 0-2.2.6-2.5 1.7L3.4 5.7c.3-.5.7-.9 1.1-1.3C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 .7-.1 1.4-.2 2.1l-5-2.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-public-domain'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zM8.1 7.3H5.5v5.3h1.3v-1.7h1c1.8 0 2.2-1.1 2.2-1.8.1-1.1-.4-1.8-1.9-1.8zm-.2 2.6H6.8V8.3h1.1c.6 0 .9.3.9.8 0 .4-.3.8-.9.8zm4.6-2.6h-2.1v5.3h2.1c1.6 0 2.7-.8 2.7-2.7 0-1.8-1.1-2.6-2.7-2.6zm0 4.2h-.8V8.4h.8c1 0 1.4.7 1.4 1.5 0 .9-.4 1.6-1.4 1.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-remix'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm.7-5.3l-1.9-.8V7L8.5 4.6 5.9 5.7v2.7l-2.3 1v2.5L6.1 13l2.5-1h.1l5 2.1h.2l2.3-1 .2-.1v-2.7l-.1-.1zm-2.7 3.1l-4.4-1.8V9.8l4.4 1.8V13.3zm.2-2.2l-1.4-.6 1.6-.6 1.4.6-1.6.6zm2.1 1.5l-1.7.7v-1.7l1.7-.7v1.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-share'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10c0 2.6.9 4.9 2.8 6.8 1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7 0-2.7-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10c0-2.1.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-1.7-8.3h-2.1v-2c0-.3-.2-.5-.5-.5H6.1c-.3 0-.5.3-.5.5v7.1c0 .3.2.5.5.5h2.1v2.1c0 .3.2.5.5.5h5.2c.3 0 .5-.2.5-.5V7.8c.1-.3-.2-.6-.5-.6zm-5.3 0c-.3 0-.5.3-.5.5v3.9H6.6v-6h4.2v1.6H8.6c.1 0 .1 0 0 0zm4.8 7.1H9.2v-6h4.2v6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons-sharealike'> - <path d="M16.8 3.2C15 1.3 12.7.4 10 .4s-4.9.9-6.8 2.8C1.3 5.1.4 7.4.4 10s.9 4.9 2.8 6.8c1.9 1.9 4.1 2.8 6.8 2.8 2.6 0 4.9-1 6.9-2.9 1.8-1.8 2.7-4.1 2.7-6.7s-.9-5-2.8-6.8zm-1.2 12.3c-1.6 1.6-3.5 2.4-5.6 2.4-2.1 0-4-.8-5.6-2.3C2.9 14 2.1 12.1 2.1 10s.8-4 2.4-5.6C6 2.9 7.8 2.1 10 2.1s4 .8 5.6 2.3c1.5 1.5 2.3 3.4 2.3 5.6 0 2.2-.8 4-2.3 5.5zm-.7-5.4c0 2.9-2 5.1-5 5.1-2.1 0-3.9-1.3-4.2-3.8h2.4c.1 1.3.9 1.7 2.1 1.7 1.4 0 2.3-1.3 2.3-3.2 0-2-.8-3.1-2.2-3.1-1.1 0-2 .4-2.2 1.7h.7l-1.9 1.9L5 8.6h.8c.4-2.4 2.1-3.7 4.2-3.7 3 0 4.9 2.3 4.9 5.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-creative-commons'> - <path d="M8.8 10.8l1.1.6c-.2.4-.6.8-1 1.1-.4.3-.9.4-1.4.4-.8 0-1.5-.2-2-.8-.5-.5-.7-1.2-.7-2.1 0-.9.3-1.6.8-2.1.4-.5 1.1-.8 1.9-.8 1.1 0 2 .4 2.4 1.3l-1.2.7c-.2-.3-.3-.5-.5-.6s-.4-.1-.5-.1c-.8 0-1.2.5-1.2 1.6 0 .5.1.9.3 1.2.2.3.5.4.9.4.5 0 .9-.2 1.1-.8zm4.2.8c-.4 0-.7-.1-.9-.4-.2-.3-.3-.7-.3-1.2 0-1.1.4-1.6 1.2-1.6.2 0 .4.1.5.2.2.1.4.3.5.6l1.2-.6c-.5-.9-1.3-1.3-2.4-1.3-.8 0-1.4.3-1.9.8s-.8 1.2-.8 2.1c0 .9.2 1.6.7 2.1.5.5 1.2.8 2 .8.5 0 1-.1 1.4-.4.4-.3.8-.6 1-1.1L14 11c-.1.4-.5.6-1 .6zm6.6-1.6c0 2.7-.9 4.9-2.7 6.7-1.9 1.9-4.2 2.9-6.9 2.9-2.6 0-4.9-.9-6.8-2.8C1.3 14.9.4 12.7.4 10c0-2.6.9-4.9 2.8-6.8C5.1 1.3 7.3.4 10 .4s5 .9 6.8 2.8c1.9 1.8 2.8 4.1 2.8 6.8zm-1.7 0c0-2.2-.8-4-2.3-5.6C14 2.9 12.2 2.1 10 2.1c-2.2 0-4 .8-5.5 2.3C2.9 6 2.1 7.9 2.1 10c0 2.1.8 4 2.3 5.5 1.6 1.6 3.4 2.3 5.6 2.3 2.1 0 4-.8 5.6-2.4 1.5-1.4 2.3-3.2 2.3-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-credit-card'> - <path d="M18 3H2C.899 3 0 3.9 0 5v10c0 1.1.899 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H2V9h16v6zm0-9H2V5h16v1zM4 11.1v.6h.6v-.6H4zm3.6 1.199v.601h1.2v-.601h.6v-.6h.6v-.6H8.8v.6h-.601v.6H7.6zm2.4.601v-.601h-.601v.601H10zm-3 0v-.601H5.8v.601H7zm.6-1.201h.6v-.6H7v1.199h.6v-.599zm-2.401.6H5.8v-.6h.6v-.6H5.2v.6h-.6v.6H4v.601h1.199v-.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-credit'> - <path d="M11 16.755V19H9v-2.143c-1.712-.1-3.066-.589-4.241-1.797l1.718-1.74c.859.87 2.023 1.16 3.282 1.16 1.565 0 2.405-.599 2.405-1.702 0-.483-.133-.889-.42-1.16-.267-.251-.572-.387-1.202-.483L8.9 10.903c-1.164-.174-2.022-.541-2.634-1.141-.648-.657-.973-1.546-.973-2.707 0-2.155 1.382-3.743 3.707-4.1V1h2v1.932c1.382.145 2.465.62 3.415 1.551l-1.679 1.682c-.859-.832-1.889-.947-2.787-.947-1.412 0-2.099.792-2.099 1.74 0 .348.115.716.401.986.267.252.706.464 1.26.541l1.602.232c1.241.174 2.023.522 2.596 1.063.726.696 1.05 1.702 1.05 2.92 0 2.25-1.567 3.662-3.759 4.055z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-crop'> - <path d="M6 14V1H4v3H1v2h3v8c0 1.1.899 2 2 2h8v3h2v-3h3v-2H6zm8-1h2V6c0-1.1-.899-2-2-2H7v2h7v7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cross'> - <path d="M14.348 14.849a1.2 1.2 0 0 1-1.697 0L10 11.819l-2.651 3.029a1.2 1.2 0 1 1-1.697-1.697l2.758-3.15-2.759-3.152a1.2 1.2 0 1 1 1.697-1.697L10 8.183l2.651-3.031a1.2 1.2 0 1 1 1.697 1.697l-2.758 3.152 2.758 3.15a1.2 1.2 0 0 1 0 1.698z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cup'> - <path d="M10 1C5.721 1 3.06 2.41 3.205 3.555l1.442 13.467c.058.46 2.221 1.976 5.353 1.978 3.131-.002 5.295-1.518 5.351-1.979l1.442-13.467C16.938 2.41 14.279 1 10 1zm0 4.291c-3.132-.002-5.353-1.117-5.353-1.535C4.646 3.342 6.869 2.225 10 2.227c3.131-.002 5.354 1.115 5.351 1.529 0 .418-2.22 1.533-5.351 1.535z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cw'> - <path d="M19.315 10h-2.372v-.205c-.108-4.434-3.724-7.996-8.169-7.996C4.259 1.799.6 5.471.6 10s3.659 8.199 8.174 8.199a8.13 8.13 0 0 0 5.033-1.738l-1.406-1.504a6.099 6.099 0 0 1-3.627 1.193c-3.386 0-6.131-2.754-6.131-6.15s2.745-6.15 6.131-6.15c3.317 0 6.018 2.643 6.125 5.945V10h-2.672l3.494 3.894L19.315 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-cycle'> - <path d="M5.516 14.224c-2.262-2.432-2.222-6.244.128-8.611a6.074 6.074 0 0 1 3.414-1.736L8.989 1.8a8.112 8.112 0 0 0-4.797 2.351c-3.149 3.17-3.187 8.289-.123 11.531l-1.741 1.752 5.51.301-.015-5.834-2.307 2.323zm6.647-11.959l.015 5.834 2.307-2.322c2.262 2.434 2.222 6.246-.128 8.611a6.07 6.07 0 0 1-3.414 1.736l.069 2.076a8.122 8.122 0 0 0 4.798-2.35c3.148-3.172 3.186-8.291.122-11.531l1.741-1.754-5.51-.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-database'> - <path d="M16.726 12.641c-.843 1.363-3.535 2.361-6.726 2.361s-5.883-.998-6.727-2.361c-.178-.29-.273-.135-.273.007v2.002c0 1.94 3.134 3.95 7 3.95s7-2.01 7-3.949v-2.002c0-.143-.096-.298-.274-.008zm.011-5.116c-.83 1.205-3.532 2.09-6.737 2.09s-5.908-.885-6.738-2.09C3.091 7.277 3 7.412 3 7.523V9.88c0 1.762 3.134 3.189 7 3.189s7-1.428 7-3.189V7.523c0-.111-.092-.246-.263.002zM10 1C6.134 1 3 2.18 3 3.633v1.26c0 1.541 3.134 2.791 7 2.791s7-1.25 7-2.791v-1.26C17 2.18 13.866 1 10 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dial-pad'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M6 0H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zm5 0h-2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zM6 5H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm5 0h-2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM6 10H4a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm5 0H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm0 6H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1zm5-6h-2a1 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"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-direction'> - <path d="M18.06 1.941c-.586-.586-1.144-.033-3.041.879C9.944 5.259 1.1 10.216 1.1 10.216L8.699 11.3l1.085 7.599s4.958-8.843 7.396-13.916c.912-1.898 1.465-2.456.88-3.042zm-1.824 1.955l-5.519 10.247-.561-4.655 6.08-5.592z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-document-landscape'> - <path d="M19 3H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-1 12H2V5h16v10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-document'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H5V3h10v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-documents'> - <path d="M19.398 7.415l-7.444-1.996L10.651.558c-.109-.406-.545-.642-.973-.529L.602 2.461c-.428.114-.686.538-.577.944l3.23 12.051c.109.406.544.643.971.527l3.613-.967-.492 1.838c-.109.406.149.83.577.943l8.11 2.174c.428.115.862-.121.972-.529l2.97-11.084c.108-.406-.15-.83-.578-.943zM1.633 3.631l7.83-2.096 2.898 10.818-7.83 2.096L1.633 3.631zm14.045 14.832L8.864 16.6l.536-2.002 3.901-1.047c.428-.113.688-.537.578-.943l-1.508-5.627 5.947 1.631-2.64 9.851z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dot-single'> - <path d="M7.8 10a2.2 2.2 0 0 0 4.4 0 2.2 2.2 0 0 0-4.4 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-three-horizontal'> - <path d="M10.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 10 7.8zm-7 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 3 7.8zm14 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 17 7.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-three-vertical'> - <path d="M10.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 10 7.8zm0-2.6A2.2 2.2 0 1 0 9.999.8a2.2 2.2 0 0 0 .002 4.4zm0 9.6a2.2 2.2 0 1 0 0 4.402 2.2 2.2 0 0 0 0-4.402z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-two-horizontal'> - <path d="M14.001 7.8a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 14 7.8zm-8 0a2.2 2.2 0 1 0 0 4.402A2.2 2.2 0 0 0 6 7.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dots-two-vertical'> - <path d="M10.001 8.2a2.2 2.2 0 1 0-.002-4.4 2.2 2.2 0 0 0 .002 4.4zm0 3.6a2.2 2.2 0 1 0 0 4.402 2.2 2.2 0 0 0 0-4.402z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-download'> - <path d="M15 7h-3V1H8v6H5l5 5 5-5zm4.338 6.532c-.21-.224-1.611-1.723-2.011-2.114A1.503 1.503 0 0 0 16.285 11h-1.757l3.064 2.994h-3.544a.274.274 0 0 0-.24.133L12.992 16H7.008l-.816-1.873a.276.276 0 0 0-.24-.133H2.408L5.471 11H3.715c-.397 0-.776.159-1.042.418-.4.392-1.801 1.891-2.011 2.114-.489.521-.758.936-.63 1.449l.561 3.074c.128.514.691.936 1.252.936h16.312c.561 0 1.124-.422 1.252-.936l.561-3.074c.126-.513-.142-.928-.632-1.449z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dribbble-with-circle'> - <path d="M10.26 9.982c.033-.012.068-.021.103-.031a14.738 14.738 0 0 0-.279-.584c-1.88.557-3.68.562-4.001.557-.003.025-.003.051-.003.076 0 .945.34 1.853.958 2.566.206-.332 1.298-1.961 3.222-2.584zm-2.637 3.131a3.913 3.913 0 0 0 3.871.512 16.511 16.511 0 0 0-.822-2.922c-2.121.75-2.922 2.162-3.049 2.41zm4.932-6.086a3.92 3.92 0 0 0-3.405-.853 20.08 20.08 0 0 1 1.421 2.223c1.283-.493 1.863-1.204 1.984-1.37zm-2.85 1.637A23.654 23.654 0 0 0 8.29 6.473a3.938 3.938 0 0 0-2.113 2.658h.017c.406 0 1.849-.033 3.511-.467zm1.809 1.832c.465 1.293.679 2.367.74 2.711a3.933 3.933 0 0 0 1.609-2.543 5.81 5.81 0 0 0-1.592-.221c-.258 0-.513.018-.757.053zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 14.297A4.703 4.703 0 0 1 5.301 10 4.703 4.703 0 0 1 10 5.301 4.704 4.704 0 0 1 14.698 10 4.702 4.702 0 0 1 10 14.697zm.922-5.623c.087.18.168.357.242.531l.071.17c.277-.033.573-.049.882-.049a9.72 9.72 0 0 1 1.801.172 3.93 3.93 0 0 0-.852-2.34c-.16.206-.818.963-2.144 1.516z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dribbble'> - <path d="M9.565 7.421C8.207 5.007 6.754 3.038 6.648 2.893A7.876 7.876 0 0 0 2.311 8.38c.206.004 3.482.043 7.254-.959zm.978 2.64a11 11 0 0 1 .309-.094 26.219 26.219 0 0 0-.637-1.336C6.169 9.843 2.287 9.755 2.15 9.751c-.003.084-.007.166-.007.25 0 2.019.763 3.861 2.016 5.252l-.005-.006s2.15-3.814 6.389-5.186zm-5.372 6.133v-.004c-.058-.045-.12-.086-.178-.135.106.085.178.139.178.139zM8.118 2.372a.546.546 0 0 1-.015.004c.006-.002.014-.002.014-.002l.001-.002zm7.071 1.732A7.83 7.83 0 0 0 10 2.143c-.639 0-1.258.078-1.852.221.12.16 1.595 2.119 2.938 4.584 2.962-1.109 4.081-2.812 4.103-2.844zM10 19.2a9.2 9.2 0 0 1-9.199-9.199A9.199 9.199 0 0 1 10 .8a9.2 9.2 0 0 1 9.2 9.201A9.2 9.2 0 0 1 10 19.2zm1.336-7.914c-4.611 1.607-6.134 4.838-6.165 4.904a7.818 7.818 0 0 0 4.828 1.666 7.83 7.83 0 0 0 3.067-.621c-.116-.689-.573-3.096-1.679-5.967a1.464 1.464 0 0 1-.051.018zm.354-3.166c.184.373.358.754.523 1.139.059.135.114.272.17.406 2.713-.342 5.385.238 5.473.256a7.84 7.84 0 0 0-1.787-4.912c-.018.023-1.279 1.843-4.379 3.111zm1.171 2.785c1.031 2.836 1.449 5.142 1.529 5.611a7.858 7.858 0 0 0 3.367-5.27c-.156-.05-2.356-.747-4.896-.341z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drink'> - <path d="M17.538 2.639C17.932 2.094 18 1 18 1H2s.068 1.094.462 1.639L9 11v6H7c-2 0-2 2-2 2h10s0-2-2-2h-2v-6l6.538-8.361zM9.4 6a1.599 1.599 0 1 1 3.2 0 1.6 1.6 0 0 1-3.2 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drive'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zm-2.1 4.347a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-drop'> - <path d="M10.203.561c-.027-.215-.38-.215-.406 0-.883 7.107-5.398 8.572-5.398 13.512 0 3.053 2.564 5.527 5.601 5.527 3.036 0 5.6-2.475 5.6-5.527 0-4.94-4.514-6.405-5.397-13.512zM9.35 8.418c-.059.219-.123.444-.189.678-.401 1.424-.856 3.039-.856 4.906 0 1.012-.598 1.371-1.156 1.371a1.161 1.161 0 0 1-1.156-1.166c0-2.207 1.062-3.649 2-4.92.295-.398.572-.775.797-1.15.103-.172.38-.164.506.006.059.08.079.182.054.275z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-dropbox'> - <path d="M6.109.902L.4 4.457l3.911 3.279L10 4.043 6.109.902zm7.343 15.09a.44.44 0 0 1-.285-.102L10 13.262l-3.167 2.629a.447.447 0 0 1-.529.03l-2.346-1.533v.904L10 19.098l6.042-3.807v-.904l-2.346 1.533a.44.44 0 0 1-.244.072zM19.6 4.457L13.89.902 10 4.043l5.688 3.693L19.6 4.457zM10 11.291l3.528 2.928 5.641-3.688-3.481-2.795L10 11.291zm-3.528 2.928L10 11.291 4.311 7.736l-3.48 2.795 5.641 3.688z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-edit'> - <path d="M17.561 2.439c-1.442-1.443-2.525-1.227-2.525-1.227L8.984 7.264 2.21 14.037 1.2 18.799l4.763-1.01 6.774-6.771 6.052-6.052c-.001 0 .216-1.083-1.228-2.527zM5.68 17.217l-1.624.35a3.71 3.71 0 0 0-.69-.932 3.742 3.742 0 0 0-.932-.691l.35-1.623.47-.469s.883.018 1.881 1.016c.997.996 1.016 1.881 1.016 1.881l-.471.468z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-email'> - <path d="M14.608 12.172c0 .84.239 1.175.864 1.175 1.393 0 2.28-1.775 2.28-4.727 0-4.512-3.288-6.672-7.393-6.672-4.223 0-8.064 2.832-8.064 8.184 0 5.112 3.36 7.896 8.52 7.896 1.752 0 2.928-.192 4.727-.792l.386 1.607c-1.776.577-3.674.744-5.137.744-6.768 0-10.393-3.72-10.393-9.456 0-5.784 4.201-9.72 9.985-9.72 6.024 0 9.215 3.6 9.215 8.016 0 3.744-1.175 6.6-4.871 6.6-1.681 0-2.784-.672-2.928-2.161-.432 1.656-1.584 2.161-3.145 2.161-2.088 0-3.84-1.609-3.84-4.848 0-3.264 1.537-5.28 4.297-5.28 1.464 0 2.376.576 2.782 1.488l.697-1.272h2.016v7.057h.002zm-2.951-3.168c0-1.319-.985-1.872-1.801-1.872-.888 0-1.871.719-1.871 2.832 0 1.68.744 2.616 1.871 2.616.792 0 1.801-.504 1.801-1.896v-1.68z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-flirt'> - <path d="M7.5 9.75C8.329 9.75 9 8.967 9 8s-.671-1.75-1.5-1.75S6 7.034 6 8s.672 1.75 1.5 1.75zM10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm4.341-6.263a.756.756 0 0 0-1.008.32c-.034.065-.869 1.593-3.332 1.593-2.451 0-3.291-1.513-3.333-1.592a.75.75 0 0 0-1.339.678c.05.099 1.248 2.414 4.672 2.414 3.425 0 4.621-2.316 4.67-2.415a.745.745 0 0 0-.33-.998zM11.25 8.75h2.5a.75.75 0 0 0 0-1.5h-2.5a.75.75 0 0 0 0 1.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-happy'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199A7.6 7.6 0 1 1 10 2.4a7.6 7.6 0 1 1 0 15.199zM7.501 9.75C8.329 9.75 9 8.967 9 8s-.672-1.75-1.5-1.75S6 7.033 6 8s.672 1.75 1.501 1.75zm4.999 0c.829 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75S11 7.034 11 8s.672 1.75 1.5 1.75zm1.841 1.586a.756.756 0 0 0-1.008.32c-.034.066-.869 1.593-3.332 1.593-2.451 0-3.291-1.513-3.333-1.592a.75.75 0 0 0-1.339.678c.05.099 1.248 2.414 4.672 2.414 3.425 0 4.621-2.316 4.67-2.415a.745.745 0 0 0-.33-.998z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-neutral'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm2.5-11.348c-.828 0-1.5.783-1.5 1.749s.672 1.75 1.5 1.75c.829 0 1.5-.783 1.5-1.75s-.671-1.749-1.5-1.749zM7.501 9.75C8.329 9.75 9 8.967 9 8s-.672-1.75-1.5-1.75S6 7.033 6 8s.672 1.75 1.501 1.75zM13 12.25H7a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-emoji-sad'> - <path d="M10.001.4C4.698.4.4 4.698.4 10a9.6 9.6 0 0 0 9.601 9.601c5.301 0 9.6-4.298 9.6-9.601-.001-5.302-4.3-9.6-9.6-9.6zM10 17.599a7.6 7.6 0 1 1 0-15.2 7.6 7.6 0 0 1 0 15.2zm2.501-7.849c.828 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75-1.5.783-1.5 1.75.671 1.75 1.5 1.75zm-5 0c.828 0 1.5-.783 1.5-1.75s-.672-1.75-1.5-1.75-1.5.783-1.5 1.75.671 1.75 1.5 1.75zm2.501 1.5c-3.424 0-4.622 2.315-4.672 2.414a.75.75 0 0 0 1.342.672c.008-.017.822-1.586 3.33-1.586 2.463 0 3.298 1.527 3.328 1.585a.75.75 0 1 0 1.342-.67c-.049-.099-1.246-2.415-4.67-2.415z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-erase'> - <path d="M18 3H8.446c-.44 0-1.071.236-1.402.525L.248 9.473a.682.682 0 0 0 0 1.053l6.796 5.947c.331.289.962.527 1.402.527H18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2.809 11l-2.557-2.557L10.078 14l-1.443-1.443L11.191 10 8.635 7.443 10.078 6l2.557 2.555L15.19 6l1.444 1.443L14.078 10l2.557 2.555L15.191 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eraser'> - <path d="M16.998 4.18l-3.154-2.425a2.01 2.01 0 0 0-2.807.365l-8.4 10.897a2.003 2.003 0 0 0 .365 2.803l3.153 2.425a2.01 2.01 0 0 0 2.807-.365l8.401-10.897a2.003 2.003 0 0 0-.365-2.803zm-8.45 12.287l-.537.681a.8.8 0 0 1-.639.31.793.793 0 0 1-.485-.164l-3.153-2.425a.792.792 0 0 1-.303-.53.788.788 0 0 1 .157-.589l.537-.681a.801.801 0 0 1 .64-.311c.124 0 .309.029.485.164l3.154 2.425a.802.802 0 0 1 .144 1.12z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-evernote'> - <path d="M17.3 4.3c0-1.2-1.7-1.3-1.7-1.3l-4.1-.3s-.1-1.1-.9-1.5C9.8.9 8.9 1 8.3 1c-.7 0-.8.9-.8 1.6v2.2c0 1-.4 1.4-1.6 1.4H3.6c-.6 0-1.1.1-1.1.6s.8 5 1.8 6c.6.6 4.3 1 5.1 1s.5-2.3.7-2.3.5 1.3 1.7 1.6c1.2.3 2.9.2 3 1.1.1 1.2.2 2.6-.5 2.7l-1.7.1c-1.2-.1-.9-1.4-.3-1.4h.8l.1-1.4s-2.7-.3-2.8 1.5c-.1 1.7.2 2.4.4 2.6.2.2.6.5 3.9.5 4.3.2 2.6-13.3 2.6-14.5zm-1.9 6c-.1.2-.8-.3-1.4-.3-.6 0-1.3.3-1.5.1-.2-.2.1-2 1.3-2s1.8 2 1.6 2.2zM5.3 4.6H2.4l3.5-3.4s-.1 2.8-.1 3c0 .2-.1.4-.5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-export'> - <path d="M15 15H2V6h2.595s.689-.896 2.17-2H1a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-3.746l-2 1.645V15zm-1.639-6.95v3.551L20 6.4l-6.639-4.999v3.131C5.3 4.532 5.3 12.5 5.3 12.5c2.282-3.748 3.686-4.45 8.061-4.45z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eye-with-line'> - <path d="M18.521 1.478a1 1 0 0 0-1.414 0L1.48 17.107a1 1 0 1 0 1.414 1.414L18.52 2.892a1 1 0 0 0 0-1.414zM3.108 13.498l2.56-2.56A4.18 4.18 0 0 1 5.555 10c0-2.379 1.99-4.309 4.445-4.309.286 0 .564.032.835.082l1.203-1.202A12.645 12.645 0 0 0 10 4.401C3.44 4.4 0 9.231 0 10c0 .423 1.057 2.09 3.108 3.497zm13.787-6.993l-2.562 2.56c.069.302.111.613.111.935 0 2.379-1.989 4.307-4.444 4.307-.284 0-.56-.032-.829-.081l-1.204 1.203c.642.104 1.316.17 2.033.17 6.56 0 10-4.833 10-5.599 0-.424-1.056-2.09-3.105-3.495z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-eye'> - <path d="M10 4.4C3.439 4.4 0 9.232 0 10c0 .766 3.439 5.6 10 5.6 6.56 0 10-4.834 10-5.6 0-.768-3.44-5.6-10-5.6zm0 9.907c-2.455 0-4.445-1.928-4.445-4.307 0-2.379 1.99-4.309 4.445-4.309s4.444 1.93 4.444 4.309c0 2.379-1.989 4.307-4.444 4.307zM10 10c-.407-.447.663-2.154 0-2.154-1.228 0-2.223.965-2.223 2.154s.995 2.154 2.223 2.154c1.227 0 2.223-.965 2.223-2.154 0-.547-1.877.379-2.223 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-facebook-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.274 6.634h-1.443c-.171 0-.361.225-.361.524V8.6h1.805l-.273 1.486H10.47v4.461H8.767v-4.461H7.222V8.6h1.545v-.874c0-1.254.87-2.273 2.064-2.273h1.443v1.581z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-facebook'> - <path d="M17 1H3c-1.1 0-2 .9-2 2v14c0 1.101.9 2 2 2h7v-7H8V9.525h2v-2.05c0-2.164 1.212-3.684 3.766-3.684l1.803.002v2.605h-1.197c-.994 0-1.372.746-1.372 1.438v1.69h2.568L15 12h-2v7h4c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-feather'> - <path d="M4.254 19.567c.307-.982.77-2.364 1.391-4.362 2.707-.429 3.827.341 5.546-2.729-1.395.427-3.077-.792-2.987-1.321.091-.528 3.913.381 6.416-3.173-3.155.696-4.164-.836-3.757-1.067.939-.534 3.726-.222 5.212-1.669.766-.745 1.125-2.556.813-3.202-.374-.781-2.656-1.946-3.914-1.836-1.258.109-3.231 4.79-3.817 4.754-.584-.037-.703-2.098.319-4.013-1.077.477-3.051 1.959-3.67 3.226-1.153 2.357.108 7.766-.296 7.958-.405.193-1.766-2.481-2.172-3.694-.555 1.859-.568 3.721 1.053 6.194-.611 1.623-.945 3.491-.996 4.441-.024.759.724.922.859.493z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-fingerprint'> - <path d="M9.68 7.85c-.374.094-.607.497-.52.9.717 3.328.873 6.815.452 10.086-.053.41.212.79.592.846a.655.655 0 0 0 .097.007c.341 0 .639-.271.688-.646.444-3.452.28-7.128-.475-10.632-.087-.405-.46-.653-.834-.56zm-1.611 4.223c-.382.038-.663.404-.628.816.17 1.968.125 3.91-.132 5.772-.056.41.206.791.585.852a.612.612 0 0 0 .103.008c.339 0 .636-.267.687-.64.273-1.98.32-4.043.141-6.13-.035-.413-.386-.72-.756-.678zm1.09-6.659c-.784.197-1.45.712-1.876 1.449a3.445 3.445 0 0 0-.379 2.454c.088.41.168.82.237 1.229.068.408.44.677.809.603.378-.075.627-.466.558-.873a30.238 30.238 0 0 0-.25-1.299 1.853 1.853 0 0 1 .205-1.32c.23-.398.589-.676 1.01-.781.872-.22 1.741.37 1.943 1.309.746 3.461.942 6.93.58 10.309-.043.411.23.783.612.83a.647.647 0 0 0 .08.006c.349 0 .649-.282.69-.664.379-3.551.174-7.192-.608-10.82-.375-1.743-1.991-2.834-3.612-2.432zm-2.411.533a.79.79 0 0 0-.114-1.054.661.661 0 0 0-.976.123 5.744 5.744 0 0 0-.34.524 6.095 6.095 0 0 0-.67 4.343c.594 2.757.733 5.588.401 8.19-.052.41.214.788.594.845a.714.714 0 0 0 .096.006c.342 0 .64-.272.688-.647.353-2.78.207-5.8-.425-8.733a4.51 4.51 0 0 1 .746-3.597zm8.362 6.872c-.383.02-.68.372-.66.786a34.322 34.322 0 0 1-.059 4.131c-.032.414.253.775.636.81a.742.742 0 0 0 .057.002c.359 0 .663-.297.692-.69.107-1.422.128-2.878.062-4.327-.019-.414-.354-.723-.728-.712zm-.17-1.035a.649.649 0 0 0 .087-.006c.381-.05.65-.425.604-.836a37.924 37.924 0 0 0-.606-3.663c-.552-2.574-2.75-4.443-5.223-4.443-.391 0-.782.047-1.164.142-.316.08-.625.19-.921.327-.352.165-.514.607-.362.987.153.38.563.555.914.39.219-.102.45-.184.682-.242.278-.07.564-.104.85-.104 1.835 0 3.462 1.38 3.87 3.283.25 1.158.446 2.338.58 3.508.044.38.344.657.69.657zm2.342-5.068a8.344 8.344 0 0 0-2.02-3.913.66.66 0 0 0-.983 0 .8.8 0 0 0-.002 1.067 6.86 6.86 0 0 1 1.651 3.208c.647 3.003.937 6.085.861 9.098-.01.414.292.824.676.824h.019c.375 0 .684-.375.695-.782a40.575 40.575 0 0 0-.897-9.502zM3.39 12.855a.664.664 0 0 0 .102-.008c.38-.06.642-.442.587-.851a25.027 25.027 0 0 0-.332-1.887 7.148 7.148 0 0 1 .785-5.098c.883-1.53 2.267-2.598 3.894-3.006a5.846 5.846 0 0 1 4.193.558c.342.187.76.037.933-.333.173-.37.035-.821-.308-1.007a7.153 7.153 0 0 0-5.13-.68c-1.99.5-3.682 1.805-4.762 3.674a8.742 8.742 0 0 0-.96 6.232c.128.594.233 1.187.311 1.765.05.373.348.64.687.64zM3.597 14h-.023c-.384 0-.684.25-.672.663.027.848.004 1.58-.07 2.39-.037.412.242.778.624.818a.647.647 0 0 0 .069.003.671.671 0 0 0 .69-.625c.08-.875.106-1.723.077-2.637C4.28 14.207 3.97 14 3.597 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flag'> - <path d="M18.926 5.584c-9.339 13.568-6.142-.26-14.037 6.357L6.684 19H4.665L1 4.59l1.85-.664c8.849-6.471 4.228 5.82 15.637 1.254.364-.147.655.09.439.404z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flash'> - <path d="M6.803 18.998c-.194-.127 3.153-7.16 3.038-7.469-.116-.309-3.665-1.436-3.838-1.979-.174-.543 7.007-8.707 7.196-8.549.188.158-3.129 7.238-3.039 7.469.091.23 3.728 1.404 3.838 1.979.111.575-7.002 8.676-7.195 8.549z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flashlight'> - <path d="M17.115 2.884c-1.676-1.676-3.779-2.288-4.449-1.618L9.97 3.962c-.409.41-.766 1.779-.602 3.164l-8.161 8.161c-.484.484-.092 1.66.876 2.629.968.969 2.146 1.359 2.629.877l8.161-8.162c1.386.164 2.755-.193 3.164-.601l2.696-2.697c.67-.67.058-2.774-1.618-4.449zm-8.974 8.155c-.373-.372-.251-1.096.269-1.617.521-.521 1.246-.643 1.618-.27.372.371.251 1.097-.27 1.617-.521.522-1.245.643-1.617.27zm6.75-5.931c-1.298-1.297-1.623-3.01-1.508-3.125.115-.116 1.76.277 3.059 1.575 1.298 1.298 1.688 2.946 1.575 3.059-.112.112-1.829-.21-3.126-1.509z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flat-brush'> - <path d="M1.844 14.889c.498.376 1.594-1.178 1.942-.915.348.263-.82 1.762-.528 1.982.292.22 1.513-1.239 1.852-.984.338.255-.803 1.774-.437 2.051.367.277 1.562-1.202 1.852-.983.29.219-.773 1.797-.437 2.05.336.254 1.481-1.263 1.76-1.052.28.211-.844 1.743-.346 2.119.498.375 5.37-8.964 5.37-8.964L8.996 7.254s-7.65 7.26-7.152 7.635zM13.023.831L9.661 5.987l4.121 3.109 4.396-4.246c-.527-1.503-3.44-3.843-5.155-4.019z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flattr'> - <path d="M5.598 8.541c0-1.637.434-2.678 1.889-2.912.508-.1 1.566-.064 2.239-.064v2.5c0 .024.003.064.009.084a.236.236 0 0 0 .228.175c.061 0 .118-.031.178-.09L16.377 2H7.548C3.874 2 2 4.115 2 8.066v8.287l3.598-3.602v-4.21zM14.4 7.248v4.209c0 1.637-.434 2.68-1.889 2.912-.508.1-1.566.065-2.238.065v-2.5a.48.48 0 0 0-.009-.084.242.242 0 0 0-.228-.176c-.062 0-.118.033-.179.092l-6.235 6.232L7.809 18h4.643C16.125 18 18 15.885 18 11.934V3.647l-3.6 3.601z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flickr-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM7.436 12a1.99 1.99 0 0 1-1.982-2c0-1.105.887-2 1.982-2 1.094 0 1.982.895 1.982 2s-.889 2-1.982 2zm5.129 0a1.991 1.991 0 0 1-1.983-2c0-1.105.888-2 1.983-2a1.99 1.99 0 0 1 1.982 2c0 1.105-.887 2-1.982 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flickr'> - <path d="M5 14c-2.188 0-3.96-1.789-3.96-4 0-2.211 1.772-4 3.96-4 2.187 0 3.96 1.789 3.96 4 0 2.211-1.773 4-3.96 4zM15 14c-2.188 0-3.96-1.789-3.96-4 0-2.211 1.772-4 3.96-4 2.187 0 3.96 1.789 3.96 4 0 2.211-1.773 4-3.96 4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-branch'> - <path d="M16.4 4a2.4 2.4 0 1 0-4.8 0c0 .961.568 1.784 1.384 2.167-.082 1.584-1.27 2.122-3.335 2.896-.87.327-1.829.689-2.649 1.234V6.176A2.396 2.396 0 0 0 6 1.6a2.397 2.397 0 1 0-1 4.576v7.649A2.393 2.393 0 0 0 3.6 16a2.4 2.4 0 1 0 4.8 0c0-.961-.568-1.784-1.384-2.167.082-1.583 1.271-2.122 3.335-2.896 2.03-.762 4.541-1.711 4.64-4.756A2.398 2.398 0 0 0 16.4 4zM6 2.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm0 14.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm8-12a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-cascade'> - <path d="M14 14.6c-.967 0-1.796.576-2.176 1.4H8.5A1.5 1.5 0 0 1 7 14.5v-3.85c.456.218.961.35 1.5.35h3.324a2.396 2.396 0 0 0 4.576-1 2.397 2.397 0 1 0-4.576-1H8.5A1.5 1.5 0 0 1 7 7.5V5.176A2.396 2.396 0 0 0 6 .6a2.397 2.397 0 1 0-1 4.576V14.5A3.5 3.5 0 0 0 8.5 18h3.324a2.396 2.396 0 0 0 4.576-1 2.4 2.4 0 0 0-2.4-2.4zm0-5.985a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm-8-7a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm8 16.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-line'> - <path d="M11 13.824V6.176A2.395 2.395 0 0 0 12.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649A2.393 2.393 0 0 0 7.6 16a2.4 2.4 0 1 0 4.8 0c0-.967-.575-1.796-1.4-2.176zM10 2.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm0 14.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-parallel'> - <path d="M8.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649A2.393 2.393 0 0 0 3.6 16a2.4 2.4 0 1 0 4.8 0c0-.967-.576-1.796-1.4-2.176V6.176A2.396 2.396 0 0 0 8.4 4zM7.384 16a1.385 1.385 0 1 1-2.77 0 1.385 1.385 0 0 1 2.77 0zM6 5.385a1.385 1.385 0 1 1 .001-2.77A1.385 1.385 0 0 1 6 5.386zm9 8.439V6.176A2.395 2.395 0 0 0 16.4 4a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176v7.649a2.395 2.395 0 0 0-1.4 2.176 2.4 2.4 0 1 0 4.8 0c0-.968-.575-1.797-1.4-2.177zM12.616 4a1.384 1.384 0 1 1 2.769 0 1.385 1.385 0 0 1-2.769 0zM14 17.385a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flow-tree'> - <path d="M18 14.824V12.5A3.5 3.5 0 0 0 14.5 9h-2A1.5 1.5 0 0 1 11 7.5V5.176A2.395 2.395 0 0 0 12.4 3a2.4 2.4 0 1 0-4.8 0c0 .967.576 1.796 1.4 2.176V7.5A1.5 1.5 0 0 1 7.5 9h-2A3.5 3.5 0 0 0 2 12.5v2.324A2.396 2.396 0 0 0 3 19.4a2.397 2.397 0 1 0 1-4.576V12.5A1.5 1.5 0 0 1 5.5 11h2c.539 0 1.044-.132 1.5-.35v4.174a2.396 2.396 0 0 0 1 4.576 2.397 2.397 0 1 0 1-4.576V10.65c.456.218.961.35 1.5.35h2a1.5 1.5 0 0 1 1.5 1.5v2.324A2.395 2.395 0 0 0 14.6 17a2.4 2.4 0 1 0 4.8 0c0-.967-.575-1.796-1.4-2.176zM10 1.615a1.384 1.384 0 1 1 0 2.768 1.384 1.384 0 0 1 0-2.768zm-7 16.77a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm7 0a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77zm7 0a1.385 1.385 0 1 1 0-2.77 1.385 1.385 0 0 1 0 2.77z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-flower'> - <path d="M12.66 8.76c.439-1.087-.364-2.509-1.21-3.406.328-1.19.371-2.822-.526-3.575-.897-.754-2.497-.43-3.613.098-1.03-.68-2.568-1.226-3.563-.606-.994.62-1.18 2.243-1.023 3.467-.964.769-1.959 2.064-1.676 3.201s1.768 1.816 2.98 2.044c.434 1.155 1.358 2.501 2.527 2.584.828.058 1.62-.531 2.224-1.263 1.22 1.52 2.082 3.127 2.555 4.706C10.612 14.93 9.115 14 6 14c0 4.155 3.042 5.003 5 5.003l3.2.002c0-2.723-.986-5.91-3.29-8.901.783-.247 1.479-.677 1.75-1.344zm-4.377-.22a2.447 2.447 0 1 1-2.591-4.153 2.447 2.447 0 0 1 2.59 4.153zm5.737 3.708c1.083 2.17 1.669 4.453 1.678 6.705C18.996 16.582 19 12.206 19 8.003c0 0-3.67 1.034-4.98 4.245z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-images'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zm-6.974 3.375a.938.938 0 1 1 0 1.876.938.938 0 0 1 0-1.876zM5.5 14l2.486-5.714 2.827 4.576 2.424-1.204L14.5 14h-9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-music'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zm-7.47 7.521c-.128.265-.258.279-.202 0 .146-.721.047-2.269-1.043-2.441v3.294c0 .674-.311 1.262-1.136 1.528-.802.256-1.699-.011-1.908-.586-.21-.576.261-1.276 1.052-1.564.442-.161.954-.203 1.299-.07V8h.694c-.001 1.633 2.818 1.275 1.244 4.521z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder-video'> - <path d="M18.405 2.799c-.112-.44-.656-.799-1.21-.799H2.805c-.555 0-1.099.359-1.21.799L1.394 4h17.211l-.2-1.201zM19.412 5H.587a.58.58 0 0 0-.577.635l.923 11.669a.77.77 0 0 0 .766.696H18.3a.77.77 0 0 0 .766-.696l.923-11.669A.58.58 0 0 0 19.412 5zM8 14V9l4.383 2.5L8 14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-folder'> - <path d="M18.405 4.799c-.111-.44-.655-.799-1.21-.799h-6.814c-.554 0-1.33-.318-1.722-.707l-.596-.588C7.671 2.316 6.896 2 6.342 2H3.087c-.555 0-1.059.447-1.12.994L1.675 6h16.931l-.201-1.201zM19.412 7H.588a.58.58 0 0 0-.577.635l.923 9.669A.77.77 0 0 0 1.7 18h16.6a.77.77 0 0 0 .766-.696l.923-9.669A.58.58 0 0 0 19.412 7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-forward'> - <path d="M12 11.874v4.357l7-6.69-7-6.572v3.983c-8.775 0-11 9.732-11 9.732 2.484-4.388 6.237-4.81 11-4.81z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-foursquare'> - <path d="M4.92 1a.92.92 0 0 0-.92.92v16.516c0 .625.765.926 1.192.47l4.471-4.79A.357.357 0 0 1 9.927 14h3.237c.486 0 .905-.343 1.001-.82l2.111-10.514A1.392 1.392 0 0 0 14.911 1H4.92zm3.918 11.19L6 15.527V3.343C6 3.154 6.154 3 6.343 3h7.14a.54.54 0 0 1 .53.648L13.6 5.703a.369.369 0 0 1-.362.297h-3.71A.527.527 0 0 0 9 6.528v1.22c0 .139.113.252.253.252h3.294c.306 0 .536.28.476.581l-.614 3.058a.452.452 0 0 1-.442.361H9.25a.54.54 0 0 0-.412.19z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-funnel'> - <path d="M10 1C5.092 1 2 2.512 2 4.001v2c0 .918 6 6 6 6v6c-.001.684 1 1 2 1s2.001-.316 2-1v-6s6-5.082 6-6v-2C18 2.512 14.908 1 10 1zm0 5.123C6.409 6.122 3.862 4.79 3.862 4.292 3.86 3.797 6.41 2.461 10 2.463c3.59-.002 6.14 1.334 6.138 1.828 0 .499-2.547 1.831-6.138 1.832z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-game-controller'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M19.444 9.361c-.882-4.926-2.854-6.379-3.903-6.379-1.637 0-2.057 1.217-5.541 1.258-3.484-.041-3.904-1.258-5.541-1.258-1.049 0-3.022 1.453-3.904 6.379-.503 2.812-1.049 7.01.252 7.514 1.619.627 2.168-.941 3.946-2.266C6.558 13.266 7.424 12.95 10 12.95s3.442.316 5.247 1.659c1.778 1.324 2.327 2.893 3.946 2.266 1.301-.504.755-4.701.251-7.514zM6 10a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm7 0a1 1 0 1 1 0-2 1 1 0 1 1 0 2zm2-2a1 1 0 1 1 0-2 1 1 0 1 1 0 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-gauge'> - <path d="M8.127 13.6c-.689 1.197-.225 2.18.732 2.732.956.553 2.041.465 2.732-.732.689-1.195 5.047-11.865 4.668-12.084-.379-.219-7.442 8.888-8.132 10.084zM10 6c.438 0 .864.037 1.281.109.438-.549.928-1.154 1.405-1.728A9.664 9.664 0 0 0 10 4C4.393 4 0 8.729 0 14.766c0 .371.016.742.049 1.103.049.551.54.955 1.084.908.551-.051.957-.535.908-1.086A10.462 10.462 0 0 1 2 14.766C2 9.85 5.514 6 10 6zm7.219 1.25c-.279.75-.574 1.514-.834 2.174C17.4 10.894 18 12.738 18 14.766c0 .316-.015.635-.043.943a1.001 1.001 0 0 0 1.992.182c.033-.37.051-.748.051-1.125 0-2.954-1.053-5.59-2.781-7.516z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-github-with-circle'> - <path d="M10.015 9.949h-.03c-1.191 0-2.24-.303-2.861.268a1.57 1.57 0 0 0-.527 1.197c0 1.852 1.483 2.08 3.389 2.08h.029c1.905 0 3.389-.229 3.389-2.08 0-.443-.156-.856-.527-1.197-.622-.571-1.671-.268-2.862-.268zM8.393 12.48c-.363 0-.656-.408-.656-.91s.293-.908.656-.908c.363 0 .657.406.657.908.001.502-.293.91-.657.91zm3.213 0c-.363 0-.657-.408-.657-.91s.294-.908.657-.908c.362 0 .656.406.656.908.001.502-.293.91-.656.91zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm.876 13.539c-.172 0-.514 0-.876.002-.362-.002-.704-.002-.876-.002-.76 0-3.772-.059-3.772-3.689 0-.834.286-1.445.755-1.955-.074-.184-.078-1.232.32-2.236 0 0 .916.1 2.301 1.051.289-.081.781-.122 1.272-.122s.982.041 1.273.121c1.385-.951 2.301-1.051 2.301-1.051.398 1.004.395 2.053.32 2.236.469.51.755 1.121.755 1.955-.001 3.632-3.013 3.69-3.773 3.69z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-github'> - <path d="M13.18 11.309c-.718 0-1.3.807-1.3 1.799 0 .994.582 1.801 1.3 1.801s1.3-.807 1.3-1.801c-.001-.992-.582-1.799-1.3-1.799zm4.526-4.683c.149-.365.155-2.439-.635-4.426 0 0-1.811.199-4.551 2.08-.575-.16-1.548-.238-2.519-.238-.973 0-1.945.078-2.52.238C4.74 2.399 2.929 2.2 2.929 2.2c-.789 1.987-.781 4.061-.634 4.426C1.367 7.634.8 8.845.8 10.497c0 7.186 5.963 7.301 7.467 7.301l1.734.002 1.732-.002c1.506 0 7.467-.115 7.467-7.301 0-1.652-.566-2.863-1.494-3.871zm-7.678 10.289h-.056c-3.771 0-6.709-.449-6.709-4.115 0-.879.31-1.693 1.047-2.369C5.537 9.304 7.615 9.9 9.972 9.9h.056c2.357 0 4.436-.596 5.664.531.735.676 1.045 1.49 1.045 2.369 0 3.666-2.937 4.115-6.709 4.115zm-3.207-5.606c-.718 0-1.3.807-1.3 1.799 0 .994.582 1.801 1.3 1.801.719 0 1.301-.807 1.301-1.801 0-.992-.582-1.799-1.301-1.799z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-globe'> - <path d="M10 .4C4.705.4.399 4.707.399 10c0 5.293 4.306 9.6 9.601 9.6 5.293 0 9.6-4.307 9.6-9.6 0-5.293-4.307-9.6-9.6-9.6zm8.188 9.6c0 1.873-.636 3.6-1.696 4.98-.3-.234-.619-.867-.319-1.523.303-.66.382-2.188.312-2.783-.066-.594-.375-2.025-1.214-2.039-.838-.012-1.413-.289-1.911-1.283-1.033-2.068 1.939-2.465.906-3.609-.289-.322-1.783 1.322-2.002-.869-.014-.157.135-.392.336-.636 3.244 1.09 5.588 4.157 5.588 7.762zM8.875 1.893c-.196.382-.713.537-1.027.824-.684.619-.978.533-1.346 1.127-.371.594-1.567 1.449-1.567 1.879s.604.936.906.838c.302-.1 1.099-.094 1.567.07.469.166 3.914.332 2.816 3.244-.348.926-1.873.77-2.279 2.303-.061.225-.272 1.186-.285 1.5-.025.486.344 2.318-.125 2.318-.471 0-1.738-1.639-1.738-1.936 0-.297-.328-1.338-.328-2.23 0-.891-1.518-.877-1.518-2.062 0-1.068.823-1.6.638-2.113-.181-.51-1.627-.527-2.23-.59a8.213 8.213 0 0 1 6.516-5.172zM7.424 17.77c.492-.26.542-.596.988-.613.51-.023.925-.199 1.5-.326.51-.111 1.423-.629 2.226-.695.678-.055 2.015.035 2.375.689a8.159 8.159 0 0 1-7.089.945z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google+-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm-.553 13.721c-.603.293-1.252.324-1.503.324h-.075-.054c-.392 0-2.343-.09-2.343-1.867 0-1.746 2.125-1.883 2.776-1.883h.017c-.376-.502-.298-1.008-.298-1.008a2.34 2.34 0 0 1-.14.004c-.245 0-.718-.039-1.124-.301-.498-.32-.75-.865-.75-1.619 0-2.131 2.327-2.217 2.35-2.219h2.324v.051c0 .26-.467.311-.785.354-.108.016-.325.037-.386.068.589.315.684.809.684 1.545 0 .838-.328 1.281-.676 1.592-.216.193-.385.344-.385.547 0 .199.232.402.502.639.441.389 1.046.918 1.046 1.811 0 .923-.397 1.583-1.18 1.962zM14.5 10H13v1.5h-1V10h-1.5V9H12V7.5h1V9h1.5v1zm-6.277 1.15a2.08 2.08 0 0 0-.157.006 1.918 1.918 0 0 0-1.15.469c-.294.266-.444.602-.423.941.045.711.808 1.127 1.735 1.061.912-.066 1.52-.592 1.476-1.303-.042-.668-.623-1.174-1.481-1.174zm.874-3.865c-.242-.85-.632-1.102-1.238-1.102a.75.75 0 0 0-.194.027c-.263.075-.472.294-.588.62-.119.33-.126.674-.024 1.066.185.701.683 1.209 1.185 1.209a.664.664 0 0 0 .194-.027c.549-.154.893-.992.665-1.793z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google+'> - <path d="M1.989 5.589c0 1.494.499 2.572 1.482 3.205.806.52 1.74.598 2.226.598.118 0 .213-.006.279-.01 0 0-.154 1.004.59 1.996h-.034c-1.289 0-5.493.269-5.493 3.727 0 3.516 3.861 3.695 4.636 3.695.061 0 .097-.002.097-.002.008 0 .063.002.158.002.497 0 1.782-.062 2.975-.643 1.548-.75 2.333-2.059 2.333-3.885 0-1.764-1.196-2.814-2.069-3.582-.533-.469-.994-.873-.994-1.266 0-.4.337-.701.762-1.082.689-.615 1.339-1.492 1.339-3.15 0-1.457-.189-2.436-1.354-3.057.121-.062.551-.107.763-.137.631-.086 1.554-.184 1.554-.699V1.2H6.64c-.046.002-4.651.172-4.651 4.389zm7.424 9.013c.088 1.406-1.115 2.443-2.922 2.574-1.835.135-3.345-.691-3.433-2.096-.043-.676.254-1.336.835-1.863.589-.533 1.398-.863 2.278-.928.104-.006.207-.012.31-.012 1.699.001 2.849.999 2.932 2.325zM8.212 4.626c.451 1.588-.23 3.246-1.316 3.553a1.417 1.417 0 0 1-.384.052c-.994 0-1.979-1.006-2.345-2.393-.204-.776-.187-1.458.047-2.112.229-.645.643-1.078 1.163-1.225.125-.035.254-.053.385-.053 1.2 0 1.972.498 2.45 2.178zM16 8V5h-2v3h-3v2h3v3h2v-3h3V8h-3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-drive'> - <path d="M8.175 13l-3.324 6h11.824L20 13H8.175zM5.865 2.299L0 12.914l3.372 6.084L9.238 8.383 5.865 2.299zM19.445 12L13.349 1H6.604l6.088 11h6.753z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-hangouts'> - <path d="M10 0C5.25 0 1.4 3.806 1.4 8.5S5.25 17 10 17v3c3.368-1.672 8.6-5.305 8.6-11.5C18.6 3.806 14.75 0 10 0zM9 9.741a2.552 2.552 0 0 1-2.32 2.538.211.211 0 0 1-.228-.211v-.852c0-.106.079-.194.184-.21A1.265 1.265 0 0 0 7.683 10H5.732A.732.732 0 0 1 5 9.268V6.732C5 6.328 5.328 6 5.732 6h2.536c.404 0 .732.328.732.732v3.009zm6 0a2.552 2.552 0 0 1-2.32 2.538.211.211 0 0 1-.228-.211v-.852c0-.106.079-.194.184-.21A1.266 1.266 0 0 0 13.683 10h-1.951A.732.732 0 0 1 11 9.268V6.732c0-.404.328-.732.732-.732h2.536c.404 0 .732.328.732.732v3.009z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-google-play'> - <path d="M4.943 18.05l7.666-4.327-1.646-1.823-6.02 6.15zm-2.8-15.927c-.089.158-.143.34-.143.542V17.79c0 .28.105.52.263.71L9.89 10.71 2.142 2.123zM17.48 9.482l-2.673-1.509-2.722 2.781 1.951 2.163 3.444-1.943a.946.946 0 0 0 .52-.746.946.946 0 0 0-.52-.746zm-4.115-2.323l-9.22-5.204 6.866 7.61 2.354-2.406z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-graduation-cap'> - <path d="M3.302 12.238c.464 1.879 1.054 2.701 3.022 3.562 1.969.86 2.904 1.8 3.676 1.8.771 0 1.648-.822 3.616-1.684 1.969-.861 1.443-1.123 1.907-3.002L10 15.6l-6.698-3.362zm16.209-4.902l-8.325-4.662c-.652-.365-1.72-.365-2.372 0L.488 7.336c-.652.365-.652.963 0 1.328l8.325 4.662c.652.365 1.72.365 2.372 0l5.382-3.014-5.836-1.367a3.09 3.09 0 0 1-.731.086c-1.052 0-1.904-.506-1.904-1.131 0-.627.853-1.133 1.904-1.133.816 0 1.51.307 1.78.734l6.182 2.029 1.549-.867c.651-.364.651-.962 0-1.327zm-2.544 8.834c-.065.385 1.283 1.018 1.411-.107.579-5.072-.416-6.531-.416-6.531l-1.395.781c0-.001 1.183 1.125.4 5.857z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-grid'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M8 4H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm7 0h-3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1zm-7 7H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1zm7 0h-3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-grooveshark'> - <path d="M10 1.199a8.801 8.801 0 1 0 .002 17.602A8.801 8.801 0 0 0 10 1.199zm3.538 9.139a26.815 26.815 0 0 0-1.497-1.939 15.769 15.769 0 0 0-1.614-1.645c-.578-.504-1.208-.982-1.9-1.316a9.018 9.018 0 0 0-1.439-.536c-.056-.015-.208-.084-.252-.015-.028.043-.006.123-.002.17l.039.308c.148 1.228.204 2.525-.178 3.719A3.9 3.9 0 0 1 5.62 10.77c-.413.379-1.002.76-1.587.732a1.141 1.141 0 0 1-.324-.059c-.626-.211-.663-.886-.667-1.443a6.992 6.992 0 0 1 .216-1.775 7.033 7.033 0 0 1 4.419-4.834A6.954 6.954 0 0 1 10 2.994a7.011 7.011 0 0 1 5.817 3.137c.32.488.577 1.016.766 1.566h-.003c.061.174.117.35.163.527.146.58.22 1.178.216 1.775-.008 1.125-.37 2.367-1.783 1.771-.667-.282-1.224-.852-1.638-1.432z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hair-cross'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm1 17.125V13H9v4.525A7.589 7.589 0 0 1 2.473 11H7V9H2.473A7.589 7.589 0 0 1 9 2.475V7h2V2.475A7.59 7.59 0 0 1 17.525 9H13v2h4.525A7.592 7.592 0 0 1 11 17.525z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hand'> - <path d="M17.924 17.315c-.057.174-.193.367-.416.432-.161.047-5.488 1.59-5.652 1.633-.469.125-.795.033-1.009-.156-.326-.287-4.093-2.85-8.845-3.092-.508-.025-.259-1.951 1.193-1.951.995 0 3.904.723 4.255.371.271-.272.394-1.879-.737-4.683L4.438 4.232a1.045 1.045 0 0 1 1.937-.781L8.361 8.37c.193.48.431.662.69.562.231-.088.279-.242.139-.709L7.144 2.195A1.043 1.043 0 0 1 7.796.871a1.042 1.042 0 0 1 1.325.652l1.946 5.732c.172.504.354.768.642.646.173-.073.161-.338.115-.569l-1.366-5.471a1.045 1.045 0 1 1 2.027-.506l1.26 5.042c.184.741.353 1.008.646.935.299-.073.285-.319.244-.522l-.872-4.328a.95.95 0 0 1 1.86-.375l.948 4.711.001.001v.001l.568 2.825c.124.533.266 1.035.45 1.527 1.085 2.889.519 5.564.334 6.143z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-heart-outlined'> - <path d="M17.19 4.156c-1.672-1.535-4.383-1.535-6.055 0L10 5.197 8.864 4.156c-1.672-1.535-4.382-1.535-6.054 0-1.881 1.726-1.881 4.519 0 6.245L10 17l7.19-6.599c1.88-1.726 1.88-4.52 0-6.245zm-1.066 5.219L10 15.09 3.875 9.375c-.617-.567-.856-1.307-.856-2.094s.138-1.433.756-1.999c.545-.501 1.278-.777 2.063-.777.784 0 1.517.476 2.062.978L10 7.308l2.099-1.826c.546-.502 1.278-.978 2.063-.978s1.518.276 2.063.777c.618.566.755 1.212.755 1.999s-.238 1.528-.856 2.095z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-heart'> - <path d="M17.19 4.155c-1.672-1.534-4.383-1.534-6.055 0L10 5.197 8.864 4.155c-1.672-1.534-4.382-1.534-6.054 0-1.881 1.727-1.881 4.52 0 6.246L10 17l7.19-6.599c1.88-1.726 1.88-4.52 0-6.246z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-help-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm-.151 15.199h-.051c-.782-.023-1.334-.6-1.311-1.371.022-.758.587-1.309 1.343-1.309l.046.002c.804.023 1.35.594 1.327 1.387-.023.76-.578 1.291-1.354 1.291zm3.291-6.531c-.184.26-.588.586-1.098.983l-.562.387c-.308.24-.494.467-.563.688-.056.174-.082.221-.087.576v.09H8.685l.006-.182c.027-.744.045-1.184.354-1.547.485-.568 1.555-1.258 1.6-1.287a1.65 1.65 0 0 0 .379-.387c.225-.311.324-.555.324-.793 0-.334-.098-.643-.293-.916-.188-.266-.545-.398-1.061-.398-.512 0-.863.162-1.072.496-.216.341-.325.7-.325 1.067v.092H6.386l.004-.096c.057-1.353.541-2.328 1.435-2.897.563-.361 1.264-.544 2.081-.544 1.068 0 1.972.26 2.682.772.721.519 1.086 1.297 1.086 2.311-.001.567-.18 1.1-.534 1.585z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-help'> - <path d="M14.09 2.233C12.95 1.411 11.518 1 9.794 1c-1.311 0-2.418.289-3.317.868C5.05 2.774 4.292 4.313 4.2 6.483h3.307c0-.633.185-1.24.553-1.828.369-.586.995-.879 1.878-.879.898 0 1.517.238 1.854.713.339.477.508 1.004.508 1.582 0 .504-.252.965-.557 1.383a2.88 2.88 0 0 1-.661.674s-1.793 1.15-2.58 2.074c-.456.535-.497 1.338-.538 2.488-.002.082.029.252.315.252h2.571c.256 0 .309-.189.312-.274.018-.418.064-.633.141-.875.144-.457.538-.855.979-1.199l.91-.627c.822-.641 1.477-1.166 1.767-1.578.494-.676.842-1.51.842-2.5-.001-1.615-.571-2.832-1.711-3.656zM9.741 14.924c-1.139-.035-2.079.754-2.115 1.99-.035 1.234.858 2.051 1.998 2.084 1.189.035 2.104-.727 2.141-1.963.034-1.236-.834-2.076-2.024-2.111z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-home'> - <path d="M18.672 11H17v6c0 .445-.194 1-1 1h-4v-6H8v6H4c-.806 0-1-.555-1-1v-6H1.328c-.598 0-.47-.324-.06-.748L9.292 2.22c.195-.202.451-.302.708-.312.257.01.513.109.708.312l8.023 8.031c.411.425.539.749-.059.749z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-hour-glass'> - <path d="M15.6 4.576V2.228C15.6 1.439 13.092 0 10 0 6.907 0 4.4 1.439 4.4 2.228v2.348C4.4 6.717 8.277 8.484 8.277 10c0 1.514-3.877 3.281-3.877 5.422v2.35C4.4 18.56 6.907 20 10 20c3.092 0 5.6-1.44 5.6-2.229v-2.35c0-2.141-3.877-3.908-3.877-5.422 0-1.515 3.877-3.282 3.877-5.423zM5.941 2.328c.696-.439 2-1.082 4.114-1.082 2.113 0 4.006 1.082 4.006 1.082.142.086.698.383.317.609-.838.497-2.478 1.02-4.378 1.02s-3.484-.576-4.324-1.074c-.381-.225.265-.555.265-.555zM10.501 10c0 1.193.996 1.961 2.051 2.986.771.748 1.826 1.773 1.826 2.435v1.328c-.97-.483-3.872-.955-3.872-2.504 0-.783-1.013-.783-1.013 0 0 1.549-2.902 2.021-3.872 2.504v-1.328c0-.662 1.056-1.688 1.826-2.435C8.502 11.961 9.498 11.193 9.498 10c0-1.193-.996-1.961-2.051-2.986-.771-.75-1.826-1.775-1.826-2.438l-.046-.998C6.601 4.131 8.227 4.656 10 4.656c1.772 0 3.406-.525 4.433-1.078l-.055.998c0 .662-1.056 1.688-1.826 2.438-1.054 1.025-2.051 1.793-2.051 2.986z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-houzz'> - <path d="M4 10l6 3-6 3v-6zm6-3l6 3V4l-6 3zm0 13l6-3v-7l-6 3v7zm0-20L4 3v7l6-3V0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-icloud'> - <path d="M10.909 5c1.884 0 3.417 1.598 3.417 3.561 0 .136-.012.29-.037.484l-.206 1.594c-.043.332.186.65.528.653l1.65.01c.958.006 1.739.835 1.739 1.848 0 1.02-.785 1.85-1.75 1.85H4.167C2.972 15 2 13.978 2 12.722c0-.913.519-1.735 1.323-2.095l.651-.291c.23-.103.508-.431.516-.775l.016-.714c.012-.535.421-.97.91-.97.032 0 .094.006.207.035l1.039.264c.265.067.606-.066.73-.309l.503-.981C8.493 5.723 9.648 5 10.909 5m0-2C8.828 3 7.023 4.207 6.116 5.974a2.834 2.834 0 0 0-.699-.096c-1.587 0-2.873 1.304-2.91 2.924A4.28 4.28 0 0 0 0 12.722C0 15.085 1.865 17 4.167 17H16.25c2.071 0 3.75-1.724 3.75-3.85 0-2.118-1.667-3.835-3.728-3.848.031-.243.053-.489.053-.741C16.326 5.49 13.901 3 10.909 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-image-inverted'> - <path d="M18 3H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-4.75 3.5a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5zM4 14l3.314-7.619 3.769 6.102 3.231-1.605L16 14H4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-image'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M19 2H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm-1 14H2V4h16v12zm-3.685-5.123l-3.231 1.605-3.77-6.101L4 14h12l-1.685-3.123zM13.25 9a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-images'> - <path d="M17.125 6.17L15.079.535c-.151-.416-.595-.637-.989-.492L.492 5.006c-.394.144-.593.597-.441 1.013l2.156 5.941V8.777c0-1.438 1.148-2.607 2.56-2.607H8.36l4.285-3.008 2.479 3.008h2.001zM19.238 8H4.767a.761.761 0 0 0-.762.777v9.42c.001.444.343.803.762.803h14.471c.42 0 .762-.359.762-.803v-9.42A.761.761 0 0 0 19.238 8zM18 17H6v-2l1.984-4.018 2.768 3.436 2.598-2.662 3.338-1.205L18 14v3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-inbox'> - <path d="M19.253 9.542c-.388-.416-2.265-2.271-3.122-3.118A1.49 1.49 0 0 0 15.098 6H4.902c-.394 0-.77.165-1.033.424-.858.847-2.734 2.701-3.122 3.118-.485.521-.723.902-.624 1.449s.466 2.654.556 3.074c.088.419.684.935 1.24.935h16.162c.556 0 1.152-.516 1.241-.935.089-.42.457-2.527.556-3.074s-.139-.929-.625-1.449zm-5.239.461a.271.271 0 0 0-.238.133L12.966 12H7.034l-.809-1.864a.271.271 0 0 0-.238-.133H2.473L4.495 8h11.01l2.023 2.003h-3.514z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-infinity'> - <path d="M15.902 5.6c-2.079 0-4.358 1.158-5.902 2.916C8.455 6.758 6.175 5.6 4.096 5.6 2.116 5.6 0 6.756 0 10c0 3.244 2.116 4.398 4.096 4.4 2.079 0 4.358-1.158 5.903-2.916 1.544 1.758 3.823 2.916 5.902 2.916C17.882 14.4 20 13.244 20 10c0-3.244-2.118-4.4-4.098-4.4zM4.096 12.641C2.584 12.641 1.8 11.752 1.8 10s.784-2.641 2.296-2.641c1.673 0 3.614 1.086 4.807 2.641-1.193 1.555-3.134 2.641-4.807 2.641zm11.806 0c-1.673 0-3.614-1.086-4.807-2.641 1.192-1.555 3.135-2.641 4.807-2.641 1.512 0 2.298.889 2.298 2.641s-.786 2.641-2.298 2.641z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-info-with-circle'> - <path d="M10 .4C4.697.4.399 4.698.399 10A9.6 9.6 0 0 0 10 19.601c5.301 0 9.6-4.298 9.6-9.601 0-5.302-4.299-9.6-9.6-9.6zm.896 3.466c.936 0 1.211.543 1.211 1.164 0 .775-.62 1.492-1.679 1.492-.886 0-1.308-.445-1.282-1.182 0-.621.519-1.474 1.75-1.474zM8.498 15.75c-.64 0-1.107-.389-.66-2.094l.733-3.025c.127-.484.148-.678 0-.678-.191 0-1.022.334-1.512.664l-.319-.523c1.555-1.299 3.343-2.061 4.108-2.061.64 0 .746.756.427 1.92l-.84 3.18c-.149.562-.085.756.064.756.192 0 .82-.232 1.438-.719l.362.486c-1.513 1.512-3.162 2.094-3.801 2.094z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-info'> - <path d="M12.432 0c1.34 0 2.01.912 2.01 1.957 0 1.305-1.164 2.512-2.679 2.512-1.269 0-2.009-.75-1.974-1.99C9.789 1.436 10.67 0 12.432 0zM8.309 20c-1.058 0-1.833-.652-1.093-3.524l1.214-5.092c.211-.814.246-1.141 0-1.141-.317 0-1.689.562-2.502 1.117l-.528-.88c2.572-2.186 5.531-3.467 6.801-3.467 1.057 0 1.233 1.273.705 3.23l-1.391 5.352c-.246.945-.141 1.271.106 1.271.317 0 1.357-.392 2.379-1.207l.6.814C12.098 19.02 9.365 20 8.309 20z"></path> - </symbol><symbol viewBox='0 0 19.19995 19.19995' id='entypo-instagram-with-circle'> - <title>instagram-with-circle</title><path d="M13.498 6.651a1.656 1.656 0 0 0-.95-.949 2.766 2.766 0 0 0-.928-.172c-.527-.024-.685-.03-2.02-.03s-1.493.006-2.02.03a2.766 2.766 0 0 0-.929.172 1.656 1.656 0 0 0-.949.95 2.766 2.766 0 0 0-.172.928c-.024.527-.03.685-.03 2.02s.006 1.493.03 2.02a2.766 2.766 0 0 0 .172.929 1.656 1.656 0 0 0 .95.949 2.766 2.766 0 0 0 .928.172c.527.024.685.029 2.02.029s1.493-.005 2.02-.03a2.766 2.766 0 0 0 .929-.171 1.656 1.656 0 0 0 .949-.95 2.766 2.766 0 0 0 .172-.928c.024-.527.029-.685.029-2.02s-.005-1.493-.03-2.02a2.766 2.766 0 0 0-.171-.929zM9.6 12.168A2.568 2.568 0 1 1 12.168 9.6 2.568 2.568 0 0 1 9.6 12.168zm2.669-4.637a.6.6 0 1 1 .6-.6.6.6 0 0 1-.6.6z"></path><circle cx="9.6" cy="9.6" r="1.667"></circle><path d="M9.6 0a9.6 9.6 0 1 0 9.6 9.6A9.6 9.6 0 0 0 9.6 0zm4.97 11.661a3.67 3.67 0 0 1-.233 1.214 2.556 2.556 0 0 1-1.462 1.462 3.67 3.67 0 0 1-1.213.233c-.534.024-.704.03-2.062.03s-1.528-.006-2.062-.03a3.67 3.67 0 0 1-1.213-.233 2.556 2.556 0 0 1-1.462-1.462 3.67 3.67 0 0 1-.233-1.213c-.024-.534-.03-.704-.03-2.062s.006-1.528.03-2.062a3.67 3.67 0 0 1 .232-1.213 2.556 2.556 0 0 1 1.463-1.463 3.67 3.67 0 0 1 1.213-.232c.534-.024.704-.03 2.062-.03s1.528.006 2.062.03a3.67 3.67 0 0 1 1.213.232 2.556 2.556 0 0 1 1.462 1.463 3.67 3.67 0 0 1 .233 1.213c.024.534.03.704.03 2.062s-.006 1.528-.03 2.062z"></path> - </symbol><symbol viewBox='0 0 18 18' id='entypo-instagram'> - <title>instagram</title><path d="M17.946 5.29a6.606 6.606 0 0 0-.418-2.185 4.412 4.412 0 0 0-1.039-1.594A4.412 4.412 0 0 0 14.895.472a6.606 6.606 0 0 0-2.184-.418C11.75.01 11.444 0 9 0S6.25.01 5.29.054a6.606 6.606 0 0 0-2.185.418A4.412 4.412 0 0 0 1.51 1.511 4.412 4.412 0 0 0 .472 3.105a6.606 6.606 0 0 0-.418 2.184C.01 6.25 0 6.556 0 9s.01 2.75.054 3.71a6.606 6.606 0 0 0 .418 2.185 4.412 4.412 0 0 0 1.039 1.594 4.411 4.411 0 0 0 1.594 1.039 6.606 6.606 0 0 0 2.184.418C6.25 17.99 6.556 18 9 18s2.75-.01 3.71-.054a6.606 6.606 0 0 0 2.185-.418 4.602 4.602 0 0 0 2.633-2.633 6.606 6.606 0 0 0 .418-2.184C17.99 11.75 18 11.444 18 9s-.01-2.75-.054-3.71zm-1.62 7.347a4.978 4.978 0 0 1-.31 1.67 2.98 2.98 0 0 1-1.708 1.709 4.979 4.979 0 0 1-1.671.31c-.95.043-1.234.052-3.637.052s-2.688-.009-3.637-.052a4.979 4.979 0 0 1-1.67-.31 2.788 2.788 0 0 1-1.036-.673 2.788 2.788 0 0 1-.673-1.035 4.978 4.978 0 0 1-.31-1.671c-.043-.95-.052-1.234-.052-3.637s.009-2.688.052-3.637a4.979 4.979 0 0 1 .31-1.67 2.788 2.788 0 0 1 .673-1.036 2.788 2.788 0 0 1 1.035-.673 4.979 4.979 0 0 1 1.671-.31c.95-.043 1.234-.052 3.637-.052s2.688.009 3.637.052a4.979 4.979 0 0 1 1.67.31 2.788 2.788 0 0 1 1.036.673 2.788 2.788 0 0 1 .673 1.035 4.979 4.979 0 0 1 .31 1.671c.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637zM9 4.378A4.622 4.622 0 1 0 13.622 9 4.622 4.622 0 0 0 9 4.378zM9 12a3 3 0 1 1 3-3 3 3 0 0 1-3 3zm5.884-7.804a1.08 1.08 0 1 1-1.08-1.08 1.08 1.08 0 0 1 1.08 1.08z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-install'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H12.02l.38 4.065h2.7L10 10.293 4.9 6.065h2.7L7.98 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zm-2.1 4.347a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-key'> - <path d="M17.691 4.725c-.503-2.977-3.22-4.967-6.069-4.441C8.772.809 6.366 3.1 6.869 6.079c.107.641.408 1.644.763 2.365l-5.175 7.723c-.191.285-.299.799-.242 1.141l.333 1.971a.612.612 0 0 0 .7.514l1.516-.281c.328-.059.744-.348.924-.639l2.047-3.311.018-.022 1.386-.256 2.39-3.879c.785.139 1.912.092 2.578-.031 2.848-.526 4.087-3.67 3.584-6.649zm-2.525 1.527c-.784 1.17-1.584.346-2.703-.475-1.119-.818-2.135-1.322-1.352-2.492.784-1.17 2.326-1.455 3.447-.635 1.12.819 1.391 2.432.608 3.602z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-keyboard'> - <path d="M18.6 4H1.4C.629 4 0 4.629 0 5.4v9.2c0 .769.629 1.4 1.399 1.4h17.2c.77 0 1.4-.631 1.4-1.4V5.4C20 4.629 19.369 4 18.6 4zM11 6h2v2h-2V6zm3 3v2h-2V9h2zM8 6h2v2H8V6zm3 3v2H9V9h2zM5 6h2v2H5V6zm3 3v2H6V9h2zM2 6h2v2H2V6zm3 3v2H3V9h2zm-1 5H2v-2h2v2zm11 0H5v-2h10v2zm3 0h-2v-2h2v2zm-3-3V9h2v2h-2zm3-3h-4V6h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lab-flask'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16.432 15C14.387 9.893 12 8.547 12 6V3h.5a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5H8v3c0 2.547-2.387 3.893-4.432 9-.651 1.625-2.323 4 6.432 4s7.083-2.375 6.432-4zm-1.617 1.751c-.702.21-2.099.449-4.815.449s-4.113-.239-4.815-.449c-.249-.074-.346-.363-.258-.628.22-.67.635-1.828 1.411-3.121 1.896-3.159 3.863.497 5.5.497s1.188-1.561 1.824-.497a15.353 15.353 0 0 1 1.411 3.121c.088.265-.009.553-.258.628z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-landline'> - <path d="M4.902.25C3.498-.027 2.115.875 1.833 2.273c-1.105 5.455-1.105 9.997 0 15.454C2.08 18.952 3.17 19.8 4.388 19.8c.17 0 .342-.016.515-.05 1.412-.279 2.329-1.638 2.046-3.036-.978-4.832-.978-8.598 0-13.43C7.231 1.888 6.314.529 4.902.25zM17 2H8.436a4.08 4.08 0 0 1-.017 1.44c-.936 4.72-.936 8.398 0 13.12.098.49.09.973.017 1.44H17c1.1 0 2-.9 2-2V4c0-1.1-.899-2-2-2zm-5 12.5a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 12 14.5zM17 9h-7V5h7v4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-language'> - <path d="M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 0 1 1.229-.799l.082 4.277c-.385.131-.799.185-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 0 0-.196-.145h-1.95a.194.194 0 0 0-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-laptop'> - <path d="M19.754 15.631L18 13V4c0-1.102-.9-2-2-2H4c-1.101 0-2 .898-2 2v9L.246 15.631C0 16 0 16.213 0 16.5v.5c0 .5.5 1 .999 1h18.002c.499 0 .999-.5.999-1v-.5c0-.287 0-.5-.246-.869zM7 16l.6-1h4.8l.6 1H7zm9-4H4V4h12v8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lastfm-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.644 12.43c-2.002 0-2.697-.91-3.066-2.043l-.371-1.166c-.277-.851-.501-1.467-1.519-1.467-.706 0-1.626.463-1.626 1.898 0 1.119.77 1.82 1.568 1.82.677 0 1.084-.381 1.296-.572l.354 1.012c-.241.174-.734.517-1.707.517-1.346 0-2.625-.957-2.625-2.73 0-1.844 1.333-2.93 2.705-2.93 1.54 0 2.113.56 2.6 2.078l.382 1.166c.278.852.865 1.471 2.034 1.471.787 0 1.204-.176 1.204-.607 0-.338-.197-.584-.787-.723l-.787-.188c-.961-.232-1.343-.734-1.343-1.529 0-1.271 1.018-1.668 2.061-1.668 1.181 0 1.898.432 1.99 1.482l-1.157.139c-.046-.5-.347-.711-.903-.711-.509 0-.821.234-.821.631 0 .35.15.559.66.676l.74.164c.995.233 1.528.723 1.528 1.668-.001 1.169-.974 1.612-2.41 1.612z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lastfm'> - <path d="M8.574 14.576c-.477.348-1.455 1.024-3.381 1.024C2.532 15.6 0 13.707 0 10.195 0 6.547 2.637 4.4 5.354 4.4c3.047 0 4.183 1.108 5.144 4.109l.756 2.309c.551 1.688 1.713 2.91 4.026 2.91 1.558 0 2.382-.346 2.382-1.199 0-.67-.389-1.156-1.557-1.434l-1.559-.369c-1.9-.461-2.656-1.455-2.656-3.025 0-2.516 2.016-3.301 4.077-3.301 2.337 0 3.757.854 3.94 2.932l-2.291.277c-.092-.992-.688-1.408-1.787-1.408-1.008 0-1.627.461-1.627 1.246 0 .693.299 1.109 1.307 1.34l1.466.324c1.97.461 3.025 1.432 3.025 3.303 0 2.309-1.924 3.186-4.766 3.186-3.963 0-5.338-1.801-6.07-4.041L8.43 9.25c-.549-1.687-.99-2.902-3.006-2.902-1.398 0-3.219.916-3.219 3.756 0 2.217 1.523 3.604 3.104 3.604 1.34 0 2.146-.754 2.564-1.131l.701 1.999z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-layers'> - <path d="M9.248 11.601c.45.313 1.05.313 1.5 0l9.088-5.281a.375.375 0 0 0-.048-.646l-9.205-3.537a1.315 1.315 0 0 0-1.17 0L.208 5.674a.375.375 0 0 0-.048.646l9.088 5.281zm10.54-.79l-2.486-1.233-5.725 3.327c-.469.309-1.014.471-1.579.471s-1.11-.163-1.579-.471L2.698 9.576.208 10.81a.375.375 0 0 0-.048.646l9.088 6.309c.45.313 1.05.313 1.5 0l9.088-6.309a.374.374 0 0 0-.048-.645z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-leaf'> - <path d="M19.025 3.587c-4.356 2.556-4.044 7.806-7.096 10.175-2.297 1.783-5.538.88-7.412.113 0 0-1.27 1.603-2.181 3.74-.305.717-1.644-.073-1.409-.68C3.905 9.25 14.037 5.416 14.037 5.416s-7.149-.303-11.927 5.94c-.128-1.426-.34-5.284 3.36-7.65 5.016-3.211 14.572-.715 13.555-.119z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-level-down'> - <path d="M1 12V5h3v6h10V8l5 4.5-5 4.5v-3H3a2 2 0 0 1-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-level-up'> - <path d="M19 9v7h-3v-6H6v3L1 8.5 6 4v3h11c1.104 0 2 .897 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lifebuoy'> - <path d="M16.788 3.212c-3.749-3.749-9.827-3.749-13.575 0-3.75 3.75-3.75 9.828-.002 13.576A9.6 9.6 0 1 0 16.788 3.212zm-10.04 10.04a4.598 4.598 0 0 1 0-6.505 4.6 4.6 0 1 1 0 6.505zm8.599-.373a6.07 6.07 0 0 0 0-5.759l1.783-.96a8.111 8.111 0 0 1 .002 7.678l-1.785-.959zm-1.508-10.01l-.961 1.784a6.073 6.073 0 0 0-5.756 0L6.161 2.87a8.114 8.114 0 0 1 7.678-.001zM2.87 6.16l1.784.961a6.07 6.07 0 0 0-.001 5.756l-1.784.961A8.111 8.111 0 0 1 2.87 6.16zm3.289 10.969l.961-1.783a6.068 6.068 0 0 0 5.759 0l.961 1.785a8.117 8.117 0 0 1-7.681-.002z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-bulb'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M7.186 19.172c.789.51 1.701.855 2.814.828 1.111.027 2.025-.318 2.814-.828L12.797 17H7.203l-.017 2.172zM12.697 16c0-4.357 4.63-5.848 4.283-10.188-.218-2.738-2.073-5.81-6.98-5.81S3.238 3.074 3.019 5.813C2.672 10.152 7.303 11.643 7.303 16h5.394zM5 6c.207-2.598 2.113-4 5-4 2.886 0 4.654 1.371 4.861 3.969.113 1.424-.705 2.373-1.809 3.926C12.238 11.041 11.449 12.238 11 14H9c-.449-1.762-1.238-2.959-2.053-4.106C5.844 8.342 4.886 7.424 5 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-down'> - <path d="M10 6.797a3.191 3.191 0 0 0-3.2 3.201 3.19 3.19 0 0 0 3.2 3.199 3.19 3.19 0 0 0 3.199-3.199A3.19 3.19 0 0 0 10 6.797zm0 5.25a2.049 2.049 0 1 1 0-4.1 2.05 2.05 0 0 1 0 4.1zM15 5c-.312-.312-.883-.248-1.273.142-.39.391-.453.959-.141 1.272s.882.25 1.273-.141c.39-.39.453-.961.141-1.273zm-9.858 8.729c-.391.39-.454.959-.142 1.271s.882.25 1.273-.141c.391-.391.454-.961.142-1.273s-.883-.248-1.273.143zM5 5c-.312.312-.249.883.141 1.273.391.391.961.453 1.273.141s.249-.883-.142-1.273C5.883 4.752 5.312 4.688 5 5zm8.727 9.857c.39.391.96.455 1.273.143s.249-.883-.142-1.274-.96-.453-1.273-.141-.248.882.142 1.272zM10 4.998c.441 0 .8-.447.8-1C10.799 3.445 10.441 3 10 3c-.442 0-.801.445-.801.998 0 .553.358 1 .801 1zM10 17c.441 0 .8-.447.8-1 0-.553-.358-.998-.799-.998-.442 0-.801.445-.801.998-.001.553.357 1 .8 1zm-5-7c0-.441-.45-.8-1.003-.8-.553 0-.997.359-.997.8 0 .442.444.8.997.8C4.55 10.8 5 10.442 5 10zm12 0c0-.441-.448-.8-1.001-.8-.553 0-.999.359-.999.8 0 .442.446.8.999.8.553 0 1.001-.358 1.001-.8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-light-up'> - <path d="M19 9.199h-.98c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799H19c.552 0 1-.357 1-.799 0-.441-.449-.801-1-.801zM10 4.5A5.483 5.483 0 0 0 4.5 10c0 3.051 2.449 5.5 5.5 5.5 3.05 0 5.5-2.449 5.5-5.5S13.049 4.5 10 4.5zm0 9.5c-2.211 0-4-1.791-4-4 0-2.211 1.789-4 4-4a4 4 0 0 1 0 8zm-7-4c0-.441-.449-.801-1-.801H1c-.553 0-1 .359-1 .801 0 .441.447.799 1 .799h1c.551 0 1-.358 1-.799zm7-7c.441 0 .799-.447.799-1V1c0-.553-.358-1-.799-1-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1zm0 14c-.442 0-.801.447-.801 1v1c0 .553.359 1 .801 1 .441 0 .799-.447.799-1v-1c0-.553-.358-1-.799-1zm7.365-13.234c.391-.391.454-.961.142-1.273s-.883-.248-1.272.143l-.7.699c-.391.391-.454.961-.142 1.273s.883.248 1.273-.143l.699-.699zM3.334 15.533l-.7.701c-.391.391-.454.959-.142 1.271s.883.25 1.272-.141l.7-.699c.391-.391.454-.961.142-1.274s-.883-.247-1.272.142zm.431-12.898c-.39-.391-.961-.455-1.273-.143s-.248.883.141 1.274l.7.699c.391.391.96.455 1.272.143s.249-.883-.141-1.273l-.699-.7zm11.769 14.031l.7.699c.391.391.96.453 1.272.143.312-.312.249-.883-.142-1.273l-.699-.699c-.391-.391-.961-.455-1.274-.143s-.248.882.143 1.273z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-line-graph'> - <path d="M.69 11.331l1.363.338 1.026-1.611-1.95-.482a.904.904 0 1 0-.439 1.755zm17.791.261l-4.463 4.016-5.247-4.061a.905.905 0 0 0-.338-.162l-.698-.174-1.027 1.611 1.1.273 5.697 4.408a.915.915 0 0 0 1.168-.043l5.028-4.527a.9.9 0 0 0 .064-1.277.912.912 0 0 0-1.284-.064zM8.684 7.18l4.887 3.129a.913.913 0 0 0 1.24-.246l5.027-7.242a.902.902 0 0 0-.231-1.26.91.91 0 0 0-1.265.23l-4.528 6.521-4.916-3.147a.915.915 0 0 0-.688-.123.914.914 0 0 0-.571.4L.142 17.209A.903.903 0 0 0 .908 18.6a.908.908 0 0 0 .768-.42l7.008-11z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-link'> - <path d="M7.859 14.691l-.81.805a1.814 1.814 0 0 1-2.545 0 1.762 1.762 0 0 1 0-2.504l2.98-2.955c.617-.613 1.779-1.515 2.626-.675a.992.992 0 1 0 1.397-1.407c-1.438-1.428-3.566-1.164-5.419.675l-2.98 2.956A3.719 3.719 0 0 0 2 14.244a3.72 3.72 0 0 0 1.108 2.658 3.779 3.779 0 0 0 2.669 1.096c.967 0 1.934-.365 2.669-1.096l.811-.805a.988.988 0 0 0 .005-1.4.995.995 0 0 0-1.403-.006zm9.032-11.484c-1.547-1.534-3.709-1.617-5.139-.197l-1.009 1.002a.99.99 0 1 0 1.396 1.406l1.01-1.001c.74-.736 1.711-.431 2.346.197.336.335.522.779.522 1.252s-.186.917-.522 1.251l-3.18 3.154c-1.454 1.441-2.136.766-2.427.477a.99.99 0 1 0-1.396 1.406c.668.662 1.43.99 2.228.99.977 0 2.01-.492 2.993-1.467l3.18-3.153A3.732 3.732 0 0 0 18 5.866a3.726 3.726 0 0 0-1.109-2.659z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-linkedin-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM7.65 13.979H5.706V7.723H7.65v6.256zm-.984-7.024c-.614 0-1.011-.435-1.011-.973 0-.549.409-.971 1.036-.971s1.011.422 1.023.971c0 .538-.396.973-1.048.973zm8.084 7.024h-1.944v-3.467c0-.807-.282-1.355-.985-1.355-.537 0-.856.371-.997.728-.052.127-.065.307-.065.486v3.607H8.814v-4.26c0-.781-.025-1.434-.051-1.996h1.689l.089.869h.039c.256-.408.883-1.01 1.932-1.01 1.279 0 2.238.857 2.238 2.699v3.699z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-linkedin'> - <path d="M5 3c0 1.1-.7 2-2 2-1.2 0-2-.9-2-1.9C1 2 1.8 1 3 1s2 .9 2 2zM1 19h4V6H1v13zM14.6 6.2c-2.1 0-3.3 1.2-3.8 2h-.1l-.2-1.7H6.9c0 1.1.1 2.4.1 3.9V19h4v-7.1c0-.4 0-.7.1-1 .3-.7.8-1.6 1.9-1.6 1.4 0 2 1.2 2 2.8V19h4v-7.4c0-3.7-1.9-5.4-4.4-5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-list'> - <path d="M14.4 9H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1h5.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm2 5H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1h7.8c.552 0 .6-.447.6-1s-.048-1-.6-1zM8.6 6h7.8c.552 0 .6-.447.6-1s-.048-1-.6-1H8.6c-.552 0-.6.447-.6 1s.048 1 .6 1zM5.4 9H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm0 5H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1zm0-10H3.6c-.552 0-.6.447-.6 1s.048 1 .6 1h1.8c.552 0 .6-.447.6-1s-.048-1-.6-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-location-pin'> - <path d="M10 2.009c-2.762 0-5 2.229-5 4.99 0 4.774 5 11 5 11s5-6.227 5-11c0-2.76-2.238-4.99-5-4.99zm0 7.751a2.7 2.7 0 1 1 0-5.4 2.7 2.7 0 0 1 0 5.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-location'> - <path d="M19.367 18.102L18 14h-1.5l.833 4H2.667l.833-4H2L.632 18.102C.285 19.146.9 20 2 20h16c1.1 0 1.715-.854 1.367-1.898zM15 5A5 5 0 1 0 5 5c0 4.775 5 10 5 10s5-5.225 5-10zm-7.7.06c0-1.491 1.208-2.699 2.7-2.699a2.699 2.699 0 1 1 0 5.399 2.7 2.7 0 0 1-2.7-2.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lock-open'> - <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387A7.731 7.731 0 0 0 7.1 19h5.8a7.68 7.68 0 0 0 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-lock'> - <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387A7.731 7.731 0 0 0 7.1 19h5.8a7.68 7.68 0 0 0 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-log-out'> - <path d="M19 10l-6-5v3H6v4h7v3l6-5zM3 3h8V1H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H3V3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-login'> - <path d="M14 10L8 5v3H1v4h7v3l6-5zm3 7H9v2h8c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2H9v2h8v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-loop'> - <path d="M20 7v7c0 1.103-.896 2-2 2H2c-1.104 0-2-.897-2-2V7a2 2 0 0 1 2-2h7V3l4 3.5L9 10V8H3v5h14V8h-3V5h4a2 2 0 0 1 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-magnet'> - <path d="M12.165 17.86c-.028.309.217.584.545.611l3.985.326c.329.027.621-.203.65-.512l.311-3.287-5.18-.426-.311 3.288zm-9.821-2.861l.312 3.287c.028.309.321.539.65.512l3.985-.326c.328-.027.573-.303.546-.611l-.312-3.287-5.181.425zm-.513-5.416l.321 3.391 5.181-.426-.322-3.387A2.949 2.949 0 0 1 7 8.911c0-1.555 1.346-2.82 3-2.82s3 1.266 3 2.82c0 .084-.004.168-.012.25l-.321 3.387 5.181.426.321-3.391c.021-.225.03-.449.03-.672C18.2 4.659 14.522 1.2 10 1.2S1.8 4.659 1.8 8.911c0 .223.011.447.031.672z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-magnifying-glass'> - <path d="M17.545 15.467l-3.779-3.779a6.15 6.15 0 0 0 .898-3.21c0-3.417-2.961-6.377-6.378-6.377A6.185 6.185 0 0 0 2.1 8.287c0 3.416 2.961 6.377 6.377 6.377a6.15 6.15 0 0 0 3.115-.844l3.799 3.801a.953.953 0 0 0 1.346 0l.943-.943c.371-.371.236-.84-.135-1.211zM4.004 8.287a4.282 4.282 0 0 1 4.282-4.283c2.366 0 4.474 2.107 4.474 4.474a4.284 4.284 0 0 1-4.283 4.283c-2.366-.001-4.473-2.109-4.473-4.474z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mail-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM6.231 7h7.52c.399 0 .193.512-.024.643-.217.13-3.22 1.947-3.333 2.014s-.257.1-.403.1a.793.793 0 0 1-.402-.1L6.255 7.643C6.038 7.512 5.833 7 6.231 7zM14 12.5c0 .21-.252.5-.444.5H6.444C6.252 13 6 12.71 6 12.5V8.853c0-.092-.002-.211.172-.11l3.417 2.015a.69.69 0 0 0 .402.1c.146 0 .252-.011.403-.1l3.434-2.014c.174-.102.172.018.172.11V12.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mail'> - <path d="M1.574 5.286l7.5 4.029c.252.135.578.199.906.199.328 0 .654-.064.906-.199l7.5-4.029c.489-.263.951-1.286.054-1.286H1.521c-.897 0-.435 1.023.053 1.286zm17.039 2.203l-7.727 4.027c-.34.178-.578.199-.906.199s-.566-.021-.906-.199-7.133-3.739-7.688-4.028C.996 7.284 1 7.523 1 7.707V15c0 .42.566 1 1 1h16c.434 0 1-.58 1-1V7.708c0-.184.004-.423-.387-.219z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-man'> - <path d="M10 4a2 2 0 1 0-.001-4.001A2 2 0 0 0 10 4zm5.978 7.583c-.385-1.775-1.058-4.688-2.042-5.894-.957-1.173-2.885-1.222-3.936-1.222-1.051 0-2.979.049-3.936 1.222-.984 1.206-1.657 4.119-2.042 5.894-.213.983 1.154 1.344 1.511.355.531-1.473.941-2.71 1.839-3.736C7.844 11.109 6.102 16.168 6 19a1 1 0 0 0 1.934.358C8.391 17.771 10 13.355 10 13.355s1.609 4.416 2.066 6.003A1 1 0 0 0 14 19c-.102-2.832-1.844-7.891-1.372-10.797.898 1.026 1.308 2.263 1.839 3.736.356.988 1.724.627 1.511-.356z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-map'> - <path d="M19.447 3.718l-6-3a1 1 0 0 0-.895 0l-5.63 2.815-5.606-1.869A1 1 0 0 0 0 2.613v13.001c0 .379.214.725.553.894l6 3a1.006 1.006 0 0 0 .894 0l5.63-2.814 5.606 1.869a.999.999 0 0 0 1.316-.949V4.612a.996.996 0 0 0-.552-.894zM8 5.231l4-2v11.763l-4 2V5.231zM2 4l4 1.333v11.661l-4-2V4zm16 12.227l-4-1.334V3.231l4 2v10.996z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mask'> - <path d="M19.581 5.84a.802.802 0 0 0-.92-.73C16.919 5.388 12.835 7 10 7S3.081 5.388 1.339 5.11a.801.801 0 0 0-.92.729C.277 7.371 0 11.45 0 12.068c0 .83 3.472 2.732 6 2.732 2.452 0 2.95-2.732 4-2.732s1.548 2.732 4 2.732c2.528 0 6-1.902 6-2.732 0-.618-.277-4.697-.419-6.228zM7.66 10.72c-.353.318-1.335 1.07-2.531.835-1.196-.235-1.919-1.323-2.166-1.758a.259.259 0 0 1 .044-.317c.353-.318 1.335-1.07 2.532-.835 1.196.235 1.919 1.323 2.166 1.758a.26.26 0 0 1-.045.317zm9.377-.923c-.246.436-.969 1.523-2.166 1.758-1.196.235-2.179-.517-2.531-.835a.26.26 0 0 1-.045-.317c.246-.436.969-1.523 2.166-1.758 1.196-.235 2.179.517 2.531.835a.258.258 0 0 1 .045.317z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medal'> - <path d="M10 10c.528 0 1.026.104 1.504.256L5.427 1.141A.316.316 0 0 0 5.164 1H1.608a.147.147 0 0 0-.122.229l6.231 9.347A4.94 4.94 0 0 1 10 10zm8.392-9h-3.556a.316.316 0 0 0-.263.141L10.75 6.875l2 3 5.764-8.646A.147.147 0 0 0 18.392 1zM10 11a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm2.112 4.117a.132.132 0 0 1-.022.208.172.172 0 0 0-.049.229c.047.076.018.165-.065.199s-.125.13-.095.214-.017.165-.104.181-.149.101-.137.189-.051.158-.14.155c-.089-.003-.167.068-.174.156s-.083.144-.169.123-.178.031-.203.117-.111.124-.191.085c-.08-.039-.18-.006-.222.072s-.134.098-.205.043-.175-.044-.232.024-.151.068-.209 0-.162-.079-.232-.024-.162.035-.205-.043-.142-.111-.222-.072c-.08.039-.166 0-.191-.085s-.116-.138-.203-.117-.163-.034-.169-.123-.084-.159-.173-.157c-.089.003-.152-.067-.14-.155s-.05-.173-.137-.189-.135-.097-.104-.181-.013-.18-.095-.214-.111-.123-.065-.199a.17.17 0 0 0-.049-.229.133.133 0 0 1-.022-.208c.062-.064.062-.169 0-.234s-.052-.158.022-.208.095-.153.049-.229c-.047-.076-.018-.165.065-.199s.125-.13.095-.214.017-.165.104-.181.149-.101.137-.189.051-.158.14-.155c.089.003.167-.068.174-.156s.083-.144.169-.123.178-.031.203-.117.111-.124.191-.085c.08.039.18.006.222-.072s.134-.098.205-.043.175.044.232-.024.151-.068.209 0 .162.079.232.024.162-.035.205.043.142.111.222.072c.08-.039.166 0 .191.085s.116.138.203.117.163.034.169.123.085.159.174.156c.089-.003.152.067.14.155s.05.173.137.189.135.097.104.181.013.18.095.214.111.123.065.199c-.047.076-.025.179.049.229s.083.144.022.208-.063.171-.001.235z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medium-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.2 7.267h-.117s-.35 0-.35.35v3.966s0 .35.35.35h.117v.934h-2.8v-.934h.467v-4.34h-.047l-1.43 5.274H9.13L7.713 7.993h-.046v4.34h.466v.934H5.8v-.934h.117s.35 0 .35-.35V8.016s0-.35-.35-.35H5.8v-.933h3.096l1.086 4.041h.036l1.095-4.04H14.2v.933z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-medium'> - <path d="M18.75 5S18 5 18 5.75v8.5s0 .75.75.75H19v2h-6v-2h1V5.7h-.1L10.835 17H8.137L5.1 5.7H5V15h1v2H1v-2h.25S2 15 2 14.25v-8.5S2 5 1.25 5H1V3h6.634l2.327 8.66h.077L12.386 3H19v2h-.25z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-megaphone'> - <path d="M17.223 7.03c-1.584-3.686-4.132-6.49-5.421-5.967-2.189.891 1.304 5.164-9.447 9.533-.929.379-1.164 1.888-.775 2.792.388.902 1.658 1.801 2.587 1.424.161-.066.751-.256.751-.256.663.891 1.357.363 1.604.928l1.158 2.66c.219.502.715.967 1.075.83l2.05-.779c.468-.178.579-.596.436-.924-.154-.355-.786-.459-.967-.873-.18-.412-.769-1.738-.938-2.156-.23-.568.259-1.031.97-1.104 4.894-.512 5.809 2.512 7.475 1.834 1.287-.525 1.025-4.259-.558-7.942zm-.551 5.976c-.287.115-2.213-1.402-3.443-4.267-1.231-2.863-1.076-5.48-.79-5.597.286-.115 2.165 1.717 3.395 4.58 1.231 2.863 1.124 5.167.838 5.284z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-menu'> - <path d="M16.4 9H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1zm0 4H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1zM3.6 7h12.8c.552 0 .6-.447.6-1 0-.553-.048-1-.6-1H3.6c-.552 0-.6.447-.6 1 0 .553.048 1 .6 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-merge'> - <path d="M17.89 17.707L16.892 20c-3.137-1.366-5.496-3.152-6.892-5.275-1.396 2.123-3.755 3.91-6.892 5.275l-.998-2.293C5.14 16.389 8.55 14.102 8.55 10V7H5.5L10 0l4.5 7h-3.05v3c0 4.102 3.41 6.389 6.44 7.707z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-message'> - <path d="M18 6v7c0 1.1-.9 2-2 2h-4v3l-4-3H4c-1.101 0-2-.9-2-2V6c0-1.1.899-2 2-2h12c1.1 0 2 .9 2 2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mic'> - <path d="M16.399 7.643V10.4c0 2.236-1.643 4.629-5.399 4.959V18h2.6c.22 0 .4.18.4.4v1.2c0 .221-.181.4-.4.4H6.4c-.22 0-.4-.18-.4-.4v-1.2c0-.22.18-.4.399-.4H9v-2.641c-3.758-.33-5.4-2.723-5.4-4.959V7.643a.4.4 0 0 1 .4-.4h.6c.22 0 .4.18.4.4V10.4c0 1.336 1.053 3.6 5 3.6 3.946 0 5-2.264 5-3.6V7.643a.4.4 0 0 1 .399-.4H16a.399.399 0 0 1 .399.4zM10 12c2.346 0 3-.965 3-1.6V7.242H7V10.4c0 .635.652 1.6 3 1.6zm3-10.4c0-.637-.654-1.6-3-1.6-2.348 0-3 .963-3 1.6v4.242h6V1.6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-minus'> - <path d="M16 10c0 .553-.048 1-.601 1H4.601C4.049 11 4 10.553 4 10c0-.553.049-1 .601-1H15.4c.552 0 .6.447.6 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mixi'> - <path d="M9.546 17.258h.955v2.143c6.51-.684 9.982-7.143 9.421-11.691C19.358 3.16 14.471.018 8.978.69 3.486 1.364-.49 5.598.072 10.149c.513 4.138 4.602 7.113 9.474 7.109zm6.148-4.398h-1.831V7.907a2.78 2.78 0 0 0-.053-.557.926.926 0 0 0-.164-.381.808.808 0 0 0-.33-.244c-.152-.066-.363-.1-.623-.1-.537 0-.957.141-1.251.416-.291.273-.433.633-.433 1.1v4.719h-1.83V7.907c0-.205-.019-.395-.059-.564a1.006 1.006 0 0 0-.173-.387.757.757 0 0 0-.314-.237 1.5 1.5 0 0 0-.58-.094c-.312 0-.58.059-.795.174-.223.117-.405.26-.541.422a1.627 1.627 0 0 0-.299.506c-.062.172-.092.31-.092.414v4.719H4.494V5.164h1.758v.6c.574-.508 1.306-.766 2.181-.766.51 0 .981.103 1.399.305.306.147.554.365.738.652.231-.248.504-.451.814-.609a3.271 3.271 0 0 1 1.499-.348c.402 0 .773.043 1.102.127.343.086.644.225.895.412.258.193.46.445.602.75.141.301.212.66.212 1.07v5.503z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mobile'> - <path d="M14.004 0H5.996A1.996 1.996 0 0 0 4 1.996v16.007C4 19.106 4.894 20 5.996 20h8.007A1.997 1.997 0 0 0 16 18.004V1.996A1.996 1.996 0 0 0 14.004 0zM10 19c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1 1.25.447 1.25 1-.56 1-1.25 1zm4-3H6V2h8v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-modern-mic'> - <path d="M1.228 10.891a.528.528 0 0 0-.159.69l1.296 2.244c.133.23.438.325.677.208L7 12.116V19h2v-7.854l4.071-1.973-2.62-4.54-9.223 6.258zm17.229-7.854a4.061 4.061 0 0 0-5.546-1.484c-.91.525-1.508 1.359-1.801 2.289l2.976 5.156c.951.212 1.973.11 2.885-.415a4.06 4.06 0 0 0 1.486-5.546z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-moon'> - <path d="M13.719 1.8A8.759 8.759 0 1 1 1.8 13.719c3.335 1.867 7.633 1.387 10.469-1.449 2.837-2.837 3.318-7.134 1.45-10.47z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mouse-pointer'> - <path d="M10.86 11.995l2.525 6.08L11.17 19l-2.525-6.05L5 16.625V1.1l10.946 10.888-5.086.006z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-mouse'> - <path d="M15.402 14.402l-2.627-7.535c-.722-2.073-2.966-3.22-5.092-2.653L5.707.379a.687.687 0 0 0-.938-.296.719.719 0 0 0-.289.961l1.929 3.742C4.872 5.806 4.073 7.74 4.58 9.56l2.139 7.696c.602 2.162 3.08 3.264 5.571 2.502 2.459-.863 3.85-3.237 3.112-5.356zM8.899 8.923a1.38 1.38 0 0 1-1.745-.921c-.235-.748.168-1.548.897-1.788.73-.24 1.512.172 1.746.92s-.168 1.549-.898 1.789z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-music'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-3.205 10.519c-.185.382-.373.402-.291 0C12.715 10.48 12.572 8.248 11 8v4.75c0 .973-.448 1.82-1.639 2.203-1.156.369-2.449-.016-2.752-.846-.303-.83.377-1.84 1.518-2.256.637-.232 1.375-.292 1.873-.101V5h1c0 2.355 4.065 1.839 1.795 6.519z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-network'> - <path d="M5.274 6.915c.2 0 .394.029.576.086a15.774 15.774 0 0 1 2.283-2.1 1.954 1.954 0 0 1 .048-1.076A14.407 14.407 0 0 0 5.17 2.171a9.25 9.25 0 0 0-2.582 2.381c.519.92 1.136 1.777 1.838 2.557.256-.124.543-.194.848-.194zM3.316 8.872c0-.275.058-.537.159-.773A15.91 15.91 0 0 1 1.78 5.87a9.165 9.165 0 0 0-.98 4.131 9.16 9.16 0 0 0 1.295 4.705 15.614 15.614 0 0 1 1.62-4.652 1.947 1.947 0 0 1-.399-1.182zm6.72-6.383c.517 0 .985.201 1.336.529a15.578 15.578 0 0 1 3.215-.992A9.154 9.154 0 0 0 10 .8a9.167 9.167 0 0 0-3.236.588 15.76 15.76 0 0 1 2.277 1.375c.292-.174.631-.274.995-.274zm2.926 9.219a1.94 1.94 0 0 1 .509-.656 14.336 14.336 0 0 0-2.672-4.803 1.956 1.956 0 0 1-1.901-.211 14.343 14.343 0 0 0-1.964 1.803 1.93 1.93 0 0 1 .207 1.617 14.252 14.252 0 0 0 5.821 2.25zm2.539 2.643a15.872 15.872 0 0 1-.081 3.082 9.216 9.216 0 0 0 3.347-4.639 15.39 15.39 0 0 1-2.181.365 1.958 1.958 0 0 1-1.085 1.192zm-2.997-1.327a15.643 15.643 0 0 1-6.21-2.484 1.953 1.953 0 0 1-1.423.248 14.219 14.219 0 0 0-1.599 5.484 9.203 9.203 0 0 0 3.145 2.205 15.662 15.662 0 0 1 6.087-5.453zm3.672-9.843a14.296 14.296 0 0 0-4.193 1.068 1.946 1.946 0 0 1-.191 1.056 15.68 15.68 0 0 1 2.969 5.291 1.961 1.961 0 0 1 1.77 1.195c.886-.09 1.748-.26 2.578-.504a9.178 9.178 0 0 0-2.933-8.106zm-2.687 10.888a14.291 14.291 0 0 0-5.723 4.856A9.187 9.187 0 0 0 10 19.2a9.165 9.165 0 0 0 3.882-.859c.19-.928.29-1.887.29-2.869 0-.355-.016-.707-.043-1.055a1.923 1.923 0 0 1-.64-.348z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-new-message'> - <path d="M18.174 1.826c-1.102-1.102-2.082-.777-2.082-.777L7.453 9.681 6 14l4.317-1.454 8.634-8.638s.324-.98-.777-2.082zm-7.569 9.779l-.471.47-1.473.5a2.216 2.216 0 0 0-.498-.74 2.226 2.226 0 0 0-.74-.498l.5-1.473.471-.47s.776-.089 1.537.673c.762.761.674 1.538.674 1.538zM16 17H3V4h5l2-2H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2v-7l-2 2v5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-new'> - <path d="M18.69 12.344l-1.727-1.538c-.5-.445-.5-1.174 0-1.619l1.727-1.539c.5-.445.367-.859-.296-.924l-2.29-.217c-.662-.062-1.02-.633-.791-1.266l1.215-3.383c.228-.635-.051-.865-.619-.514l-2.701 1.67a1.158 1.158 0 0 1-1.631-.426L10.599.842C10.27.254 9.727.252 9.392.834l-.909 1.58c-.337.585-1.108.833-1.713.556l-1.6-.734c-.608-.28-1.073.042-1.037.716l.086 1.615c.037.674-.461 1.367-1.104 1.541l-1.545.414c-.642.174-.76.68-.26 1.125l1.727 1.539c.5.445.5 1.174 0 1.619L1.31 12.344c-.5.445-.368.877.293.957l2.095.254c.661.08 1.029.67.818 1.311l-1.074 3.258c-.211.641.09.889.668.555l2.463-1.426a1.321 1.321 0 0 1 1.729.408L9.324 19.2c.372.559.931.529 1.24-.068l.899-1.733a1.243 1.243 0 0 1 1.648-.543l1.734.867c.598.297 1.057-.01 1.021-.682l-.087-1.617c-.035-.674.461-1.365 1.106-1.539l1.543-.416c.644-.174.762-.68.262-1.125zM11 14H9v-2h2v2zm0-3H9V6h2v5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-news'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M14 5h-4v2h4V5zm0 3h-4v1h4V8zM9 5H6v4h3V5zm0 6h5v-1H9v1zm3 2h2v-1h-2v1zm2 1H6v1h8v-1zm-3-2H6v1h5v-1zm-3-2H6v1h2v-1zm9-9H3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H4V3h12v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-newsletter'> - <path d="M18 3H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM4 10h6v1H4v-1zm8 4H4v-1h8v1zm5-6h-3V5h3v3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-note'> - <path d="M14.971 9.438c-.422.656-.646.375-.52 0 .336-.993.348-4.528-2.451-4.969L11.998 16c0 1.657-1.735 4-4.998 4-1.657 0-3-.871-3-2.5 0-2.119 1.927-3.4 4-3.4 1.328 0 2 .4 2 .4V0h2c0 2.676 5.986 4.744 2.971 9.438z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-notification'> - <path d="M15 8.38V17H3V5h8.62c-.073-.322-.12-.655-.12-1s.047-.678.12-1H3c-1.102 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8.38c-.322.073-.655.12-1 .12s-.678-.047-1-.12zM16 1a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-notifications-off'> - <path d="M18.8 17.4c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L1.2 2.6c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0l16.2 16.2zM16 7c1.7 0 3-1.3 3-3s-1.3-3-3-3-3 1.3-3 3 1.3 3 3 3zm-1 1.4v3.8l2 2V8.4c-.3.1-.7.1-1 .1s-.7 0-1-.1zM11.6 5c-.1-.3-.1-.7-.1-1 0-.3 0-.7.1-1H5.8l2 2h3.8zM5 15V7.8l-2-2V15c0 1.1.9 2 2 2h9.2l-2-2H5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-old-mobile'> - <path d="M13.6 3H7V0H5v18.6c0 .77.629 1.4 1.398 1.4H13.6c.769 0 1.4-.631 1.4-1.4V4.401C15 3.629 14.369 3 13.6 3zM8 15c-.691 0-1.25-.447-1.25-1s.559-1 1.25-1 1.25.447 1.25 1-.559 1-1.25 1zm1.25 2c0 .553-.559 1-1.25 1s-1.25-.447-1.25-1 .559-1 1.25-1 1.25.447 1.25 1zM7 11V5h6v6H7zm5 4c-.691 0-1.25-.447-1.25-1s.559-1 1.25-1 1.25.447 1.25 1-.559 1-1.25 1zm1.25 2c0 .553-.559 1-1.25 1s-1.25-.447-1.25-1 .559-1 1.25-1 1.25.447 1.25 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-old-phone'> - <path d="M17.256 12.253c-.096-.667-.611-1.187-1.274-1.342-2.577-.604-3.223-2.088-3.332-3.734C12.193 7.092 11.38 7 10 7s-2.193.092-2.65.177c-.109 1.646-.755 3.13-3.332 3.734-.663.156-1.178.675-1.274 1.342l-.497 3.442C2.072 16.907 2.962 18 4.2 18h11.6c1.237 0 2.128-1.093 1.953-2.305l-.497-3.442zM10 15.492c-1.395 0-2.526-1.12-2.526-2.5s1.131-2.5 2.526-2.5 2.526 1.12 2.526 2.5-1.132 2.5-2.526 2.5zM19.95 6c-.024-1.5-3.842-3.999-9.95-4C3.891 2.001.073 4.5.05 6s.021 3.452 2.535 3.127c2.941-.381 2.76-1.408 2.76-2.876C5.345 5.227 7.737 4.98 10 4.98s4.654.247 4.655 1.271c0 1.468-.181 2.495 2.76 2.876C19.928 9.452 19.973 7.5 19.95 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-onedrive'> - <path d="M6.429 9.847a4.47 4.47 0 0 1 7.573-2.012 4.186 4.186 0 0 1 1.136-.21v-.13c0-2.482-1.845-4.495-4.12-4.495-1.626 0-3.02 1.038-3.69 2.531a3.01 3.01 0 0 0-1.694-.535c-1.785 0-3.231 1.577-3.231 3.523 0 .21.024.414.057.613-1.377.136-2.455 1.544-2.455 3.08 0 .016.004.029.004.045-.001.014-.009.028-.009.042 0 .615.214 1.177.561 1.631A2.638 2.638 0 0 0 2.701 15h1.261a3.574 3.574 0 0 1-.398-1.615 3.62 3.62 0 0 1 2.865-3.538zm11.46 1.93c-.025 0-.05.007-.075.008.007-.074.022-.146.022-.222a2.664 2.664 0 0 0-2.665-2.664 2.64 2.64 0 0 0-1.564.516 3.22 3.22 0 0 0-2.838-1.712 3.237 3.237 0 0 0-3.237 3.237c0 .023.006.043.007.066a2.36 2.36 0 0 0-.359-.036 2.414 2.414 0 0 0-2.366 2.902A2.612 2.612 0 0 0 7.38 16h10.706v-.019a2.106 2.106 0 0 0-.197-4.204z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-open-book'> - <path d="M10.595 5.196l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.25 5.25 0 0 0-1.459.741zm.927 2.855l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.21 5.21 0 0 0-1.459.741zm.928 2.854l.446 1.371a4.135 4.135 0 0 1 1.441-.795c.59-.192 1.111-.3 1.582-.362l-.43-1.323a9.465 9.465 0 0 0-1.58.368 5.21 5.21 0 0 0-1.459.741zm-7.062 2.172l.43 1.323a8.745 8.745 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203l-.446-1.371a5.25 5.25 0 0 0-1.615.257 9.406 9.406 0 0 0-1.494.63zM3.533 7.368l.43 1.323a8.825 8.825 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203L6.643 6.48a5.263 5.263 0 0 0-1.616.258 9.406 9.406 0 0 0-1.494.63zm.927 2.855l.43 1.323a8.745 8.745 0 0 1 1.492-.636 4.141 4.141 0 0 1 1.633-.203L7.57 9.335a5.25 5.25 0 0 0-1.615.257 9.417 9.417 0 0 0-1.495.631zm6.604-8.813a5.26 5.26 0 0 0-3.053 2.559 5.257 5.257 0 0 0-3.973-.275C1.515 4.514.069 6.321.069 6.321l4.095 12.587c.126.387.646.477.878.143.499-.719 1.46-1.658 3.257-2.242 1.718-.558 2.969.054 3.655.578.272.208.662.06.762-.268.252-.827.907-2.04 2.61-2.593 1.799-.585 3.129-.389 3.956-.1.385.134.75-.242.625-.629L15.819 1.203s-2.232-.612-4.755.207zm-.113 13.846a5.208 5.208 0 0 0-3.141.044c-1.251.406-2.127.949-2.699 1.404L1.866 6.722c.358-.358 1.187-1.042 2.662-1.521 1.389-.451 2.528-.065 3.279.378l3.144 9.677zm6.894-2.689c-.731-.032-1.759.044-3.01.451a5.205 5.205 0 0 0-2.567 1.81L9.124 5.151c.346-.8 1.04-1.782 2.43-2.233 1.474-.479 2.547-.413 3.047-.334l3.244 9.983z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-palette'> - <path d="M15.74 2.608c-3.528-1.186-7.066-.961-10.72 1.274C2.167 5.625.302 9.958.917 13.064c.728 3.671 4.351 5.995 9.243 4.651 5.275-1.449 6.549-4.546 6.379-5.334-.17-.788-2.665-1.652-1.718-3.498 1.188-2.313 3.129-1.149 3.982-1.622.855-.472.539-3.442-3.063-4.653zm-3.646 10.706a1.504 1.504 0 0 1-1.843-1.059 1.5 1.5 0 0 1 1.046-1.849 1.503 1.503 0 0 1 1.843 1.059 1.501 1.501 0 0 1-1.046 1.849z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-paper-plane'> - <path d="M18.64 2.634L.984 8.856c-.284.1-.347.345-.01.479l3.796 1.521 2.25.901 10.984-8.066c.148-.108.318.095.211.211l-7.871 8.513v.002l-.452.503.599.322 4.982 2.682c.291.156.668.027.752-.334l2.906-12.525c.079-.343-.148-.552-.491-.431zM7 17.162c0 .246.139.315.331.141.251-.229 2.85-2.561 2.85-2.561L7 13.098v4.064z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-paypal'> - <path d="M7.914 10.677h1.659c3.604 0 5.649-1.623 6.3-4.96.021-.11.04-.216.056-.322.036-.226.054-.429.062-.624.006-.134.01-.213.009-.287a2.643 2.643 0 0 0-.216-1.039c-.129-.296-.324-.587-.613-.918C14.318 1.557 12.832 1 11.057 1H5.404a.81.81 0 0 0-.799.683l-1.02 6.571-1.269 8.185a.486.486 0 0 0 .48.561h2.772l.849-5.043a1.51 1.51 0 0 1 1.497-1.28zm9.103-4.587c-.792 3.771-3.357 5.772-7.445 5.772H7.914a.331.331 0 0 0-.328.282L6.481 19h2.907a.707.707 0 0 0 .699-.597l.029-.15.555-3.514.036-.194a.707.707 0 0 1 .699-.597h.44c2.85 0 5.081-1.158 5.733-4.506.268-1.38.132-2.534-.562-3.352z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pencil'> - <path d="M14.69 2.661c-1.894-1.379-3.242-1.349-3.754-1.266a.538.538 0 0 0-.35.223l-4.62 6.374-2.263 3.123a2.447 2.447 0 0 0-.462 1.307l-.296 5.624a.56.56 0 0 0 .76.553l5.256-2.01c.443-.17.828-.465 1.106-.849l1.844-2.545 5.036-6.949a.56.56 0 0 0 .1-.423c-.084-.526-.487-1.802-2.357-3.162zM8.977 15.465l-2.043.789a.19.19 0 0 1-.221-.062 5.145 5.145 0 0 0-1.075-1.03 5.217 5.217 0 0 0-1.31-.706.192.192 0 0 1-.126-.192l.122-2.186.549-.755s1.229-.169 2.833.998c1.602 1.166 1.821 2.388 1.821 2.388l-.55.756z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-phone'> - <path d="M11.229 11.229c-1.583 1.582-3.417 3.096-4.142 2.371-1.037-1.037-1.677-1.941-3.965-.102-2.287 1.838-.53 3.064.475 4.068 1.16 1.16 5.484.062 9.758-4.211 4.273-4.274 5.368-8.598 4.207-9.758-1.005-1.006-2.225-2.762-4.063-.475-1.839 2.287-.936 2.927.103 3.965.722.725-.791 2.559-2.373 4.142z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-picasa'> - <path d="M5.808 1.823A9.175 9.175 0 0 0 .8 10.021c0 .633.08 1.275.221 1.918L8.97 4.7 5.808 1.823zm7.985-.197A9.117 9.117 0 0 0 9.999.8c-.934 0-1.855.156-2.749.441l6.543 5.951V1.626zm1.399.812v10.617h3.485a9.192 9.192 0 0 0 .522-3.035c.001-3.033-1.522-5.872-4.007-7.582zM1.463 13.429a9.227 9.227 0 0 0 3.368 4.184v-7.25l-2.045 1.861c-.698.634-1.28 1.166-1.323 1.205zm4.767 4.996a9.105 9.105 0 0 0 2.92.775h1.689c3.019-.281 5.727-2.068 7.199-4.744H6.23v3.969z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pie-chart'> - <path d="M11 .958v9.039C11 10.551 10.551 11 9.997 11H.958A9.1 9.1 0 1 0 11 .958zm-2 0A9.098 9.098 0 0 0 .958 9H9V.958z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pin'> - <path d="M4.774 15.287l-2.105 3.25.224 1.063 1.06-.227 2.104-3.248a8.352 8.352 0 0 1-1.283-.838zm8.912-1.135c.014-.029.023-.061.036-.092.053-.117.1-.234.138-.357.006-.022.009-.044.016-.064a4.48 4.48 0 0 0 .098-.408v-.021c.195-1.169-.145-2.473-.923-3.651l1.11-1.714c1.279.163 2.385-.159 2.917-.982.923-1.423-.2-3.792-2.505-5.293C12.266.068 9.65.005 8.729 1.426c-.534.824-.378 1.967.293 3.073L7.91 6.213c-1.389-.233-2.716-.016-3.703.64-.006.002-.013.004-.017.008a3.735 3.735 0 0 0-.332.254c-.017.014-.037.027-.051.041a3.024 3.024 0 0 0-.271.272c-.02.024-.048.045-.067.07a3.102 3.102 0 0 0-.29.385c-1.384 2.133-.203 5.361 2.633 7.209 2.838 1.848 6.26 1.614 7.641-.519.087-.135.167-.276.233-.421zm-.815-9.958c-.887-.577-1.32-1.487-.965-2.036.354-.547 1.361-.522 2.246.055.889.577 1.318 1.489.965 2.036-.353.547-1.358.522-2.246-.055z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pinterest-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm.657 11.875c-.616-.047-.874-.352-1.356-.644-.265 1.391-.589 2.725-1.549 3.422-.297-2.104.434-3.682.774-5.359-.579-.975.069-2.936 1.291-2.454 1.503.596-1.302 3.625.581 4.004 1.966.394 2.769-3.412 1.55-4.648-1.762-1.787-5.127-.041-4.713 2.517.1.625.747.815.258 1.678-1.127-.25-1.464-1.139-1.42-2.324.069-1.94 1.743-3.299 3.421-3.486 2.123-.236 4.115.779 4.391 2.777.309 2.254-.959 4.693-3.228 4.517z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-pinterest'> - <path d="M8.617 13.227C8.091 15.981 7.45 18.621 5.549 20c-.586-4.162.861-7.287 1.534-10.605-1.147-1.93.138-5.812 2.555-4.855 2.975 1.176-2.576 7.172 1.15 7.922 3.891.781 5.479-6.75 3.066-9.199C10.369-.275 3.708 3.18 4.528 8.245c.199 1.238 1.478 1.613.511 3.322-2.231-.494-2.897-2.254-2.811-4.6.138-3.84 3.449-6.527 6.771-6.9 4.201-.471 8.144 1.543 8.689 5.494.613 4.461-1.896 9.293-6.389 8.945-1.218-.095-1.728-.699-2.682-1.279z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-plus'> - <path d="M16 10c0 .553-.048 1-.601 1H11v4.399c0 .552-.447.601-1 .601-.553 0-1-.049-1-.601V11H4.601C4.049 11 4 10.553 4 10c0-.553.049-1 .601-1H9V4.601C9 4.048 9.447 4 10 4c.553 0 1 .048 1 .601V9h4.399c.553 0 .601.447.601 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-popup'> - <path d="M16 2H7.979C6.88 2 6 2.88 6 3.98V12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 10H8V4h8v8zM4 10H2v6c0 1.1.9 2 2 2h6v-2H4v-6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-power-plug'> - <path d="M0 14v1.498c0 .277.225.502.502.502h.997A.502.502 0 0 0 2 15.498V14c0-.959.801-2.273 2-2.779V9.116C1.684 9.652 0 11.97 0 14zm12.065-9.299l-2.53 1.898c-.347.26-.769.401-1.203.401H6.005C5.45 7 5 7.45 5 8.005v3.991C5 12.55 5.45 13 6.005 13h2.327c.434 0 .856.141 1.203.401l2.531 1.898a3.502 3.502 0 0 0 2.102.701H16V4h-1.832c-.758 0-1.496.246-2.103.701zM17 6v2h3V6h-3zm0 8h3v-2h-3v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-price-ribbon'> - <path d="M12.825 10.653c.118-.258.445-.497.727-.529s.539-.29.571-.572c.034-.28.272-.608.529-.727a.69.69 0 0 0 .369-.72c-.058-.278.068-.663.276-.854a.689.689 0 0 0 .127-.801 1.017 1.017 0 0 1 0-.897.688.688 0 0 0-.127-.801c-.208-.193-.333-.577-.276-.854a.691.691 0 0 0-.369-.722 1.03 1.03 0 0 1-.529-.727.689.689 0 0 0-.571-.572 1.024 1.024 0 0 1-.727-.528.686.686 0 0 0-.722-.366 1.024 1.024 0 0 1-.854-.278c-.193-.21-.553-.266-.8-.127s-.652.139-.898 0a.684.684 0 0 0-.801.125 1.022 1.022 0 0 1-.854.278.685.685 0 0 0-.72.367c-.119.256-.446.495-.728.527a.69.69 0 0 0-.572.573 1.023 1.023 0 0 1-.529.726.69.69 0 0 0-.366.722c.055.277-.07.662-.278.854s-.266.552-.127.801c.139.246.139.651 0 .897a.69.69 0 0 0 .127.802c.209.19.333.575.278.854a.687.687 0 0 0 .366.72c.258.119.495.447.528.727.034.282.29.54.572.572s.609.272.728.529a.688.688 0 0 0 .72.366c.278-.055.663.069.854.278a.69.69 0 0 0 .801.127c.246-.139.651-.139.898 0s.607.081.8-.127c.193-.21.576-.333.854-.278a.69.69 0 0 0 .723-.365zM10 9.399a3.4 3.4 0 1 1 0-6.8 3.4 3.4 0 0 1 0 6.8zm-4.025 2.01l-1.243 7.049 3.128-.464 2.781 1.506 1.238-7.021a6.707 6.707 0 0 1-5.904-1.07zm7.986.048a6.741 6.741 0 0 1-.99.597l-.748 4.236 3.369-1.828-1.631-3.005z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-price-tag'> - <path d="M19.388.405a.605.605 0 0 0-1.141.399c.929 2.67-.915 4.664-2.321 5.732l-.568-.814c-.191-.273-.618-.5-.95-.504l-3.188.014a2.162 2.162 0 0 0-1.097.338L.729 12.157a1.01 1.01 0 0 0-.247 1.404l4.269 6.108c.32.455.831.4 1.287.082l9.394-6.588c.27-.191.582-.603.692-.918l.998-3.145c.11-.314.043-.793-.148-1.066l-.346-.496c1.888-1.447 3.848-4.004 2.76-7.133zm-4.371 9.358a1.608 1.608 0 0 1-2.24-.396 1.614 1.614 0 0 1 .395-2.246 1.607 1.607 0 0 1 1.868.017c-.272.164-.459.26-.494.275a.606.606 0 0 0 .259 1.153c.086 0 .174-.02.257-.059.194-.092.402-.201.619-.33a1.615 1.615 0 0 1-.664 1.586z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-print'> - <path d="M1.501 6h17c.57 0 .477-.608.193-.707C18.409 5.194 15.251 4 14.7 4H14V1H6v3h-.699c-.55 0-3.709 1.194-3.993 1.293-.284.099-.377.707.193.707zM19 7H1c-.55 0-1 .45-1 1v5c0 .551.45 1 1 1h2.283l-.882 5H17.6l-.883-5H19c.551 0 1-.449 1-1V8c0-.55-.449-1-1-1zM4.603 17l1.198-7.003H14.2L15.399 17H4.603z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-empty'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-full'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8zm5 0H8v4h4V8zm5 0h-4v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-one'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-progress-two'> - <path d="M18 5H2C.9 5 0 5.9 0 7v6c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 8H2V7h16v6zM7 8H3v4h4V8zm5 0H8v4h4V8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-publish'> - <path d="M9.967 8.193L5 13h3v6h4v-6h3L9.967 8.193zM18 1H2C.9 1 0 1.9 0 3v12c0 1.1.9 2 2 2h4v-2H2V6h16v9h-4v2h4c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zM2.5 4.25a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zm2 0a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5zM18 4H6V3h12.019L18 4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-qq-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.008 11.92c-.184.096-.47-.122-.737-.52-.105.435-.369.828-.743 1.144.394.144.65.38.65.65 0 .442-.695.799-1.553.799-.773 0-1.415-.291-1.533-.672h-.184c-.12.38-.76.672-1.533.672-.857 0-1.552-.357-1.552-.8 0-.268.256-.505.65-.65-.375-.315-.638-.708-.745-1.143-.267.398-.553.616-.735.52-.265-.136-.213-.88.117-1.654.26-.61.612-1.06.879-1.158a1.18 1.18 0 0 1 .172-.748l-.002-.041c0-.11.026-.21.07-.298.068-1.586 1.1-2.845 2.771-2.845 1.67 0 2.703 1.259 2.771 2.845.044.088.07.188.07.298 0 .012 0 .027-.003.041a1.169 1.169 0 0 1 .173.748c.267.098.62.547.878 1.158.331.775.383 1.518.119 1.655z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-qq'> - <path d="M17.005 13.018c-.779-.547-1.751-.51-2.304.277-.553.785-4.418 5.633-10.751 3.619.239.209.49.406.755.592 4.153 2.926 9.892 1.928 12.816-2.225.555-.787.263-1.714-.516-2.263zm-12.22-.617c-.404-.871-2.669-6.643 2.24-11.121a9.2 9.2 0 0 0-5.371 12.57c.403.871 1.353 1.084 2.218.684.864-.401 1.316-1.262.913-2.133zM10.826.823c-.956-.086-1.614.629-1.7 1.578-.085.949.435 1.771 1.391 1.857.956.086 7.087 1.01 8.51 7.502.062-.311.106-.627.136-.949.455-5.061-3.277-9.533-8.337-9.988zM6.891 10.53c-.264.619-.306 1.213-.094 1.322.146.076.374-.098.588-.416.085.347.295.662.595.914-.314.115-.52.305-.52.519 0 .354.556.639 1.241.639.618 0 1.13-.232 1.225-.537h.147c.095.305.607.537 1.226.537.686 0 1.241-.285 1.241-.639 0-.215-.205-.404-.52-.519.299-.252.51-.566.594-.914.214.318.442.492.589.416.211-.109.17-.703-.095-1.322-.207-.488-.488-.848-.702-.926.004-.031.004-.063.004-.094a.933.933 0 0 0-.142-.504c.002-.012.002-.023.002-.033a.528.528 0 0 0-.056-.238C12.16 7.467 11.335 6.461 10 6.461c-1.336 0-2.161 1.006-2.215 2.273a.529.529 0 0 0-.057.238l.002.033a.958.958 0 0 0-.137.599c-.213.078-.495.437-.702.926z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-quote'> - <path d="M5.315 3.401c-1.61 0-2.916 1.343-2.916 3 0 1.656 1.306 3 2.916 3 2.915 0 .972 5.799-2.916 5.799v1.4c6.939.001 9.658-13.199 2.916-13.199zm8.4 0c-1.609 0-2.915 1.343-2.915 3 0 1.656 1.306 3 2.915 3 2.916 0 .973 5.799-2.915 5.799v1.4c6.938.001 9.657-13.199 2.915-13.199z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-radio'> - <path d="M17 8H5.021l8.974-5.265L13 1 1.736 7.571A1.482 1.482 0 0 0 1 8.852V17a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zm-1.5 9a1.5 1.5 0 1 1 .001-3.001A1.5 1.5 0 0 1 15.5 17zm1.5-5H3v-2h14v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-raft-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.215 13.793c-.28.267-.664.42-1.055.42-.48 0-.867-.18-1.153-.532-.198-.244-.308-.496-.466-.936l-.078-.219c-.183-.498-.344-.75-.577-.879-.07.271-.149.525-.234.756-.445 1.216-1.077 1.832-1.88 1.832-.45 0-.848-.185-1.12-.522-.331-.413-.438-.996-.299-1.642l.03-.14 1.016.223-.03.138c-.072.332-.043.6.082.755a.393.393 0 0 0 .322.143c.4 0 .795-.639 1.094-1.76a2.932 2.932 0 0 1-.896-.49l-.11-.088.648-.818.11.089c.142.113.3.206.471.276.087-.498.156-1.046.207-1.63l.013-.142 1.035.091-.012.141a20.837 20.837 0 0 1-.212 1.683 2.28 2.28 0 0 0 1.727-1.087c.593-.999.357-2.25-.56-2.974-.393-.31-.97-.486-1.507-.459-.672.028-1.238.33-1.682.91-.536.695-.592 1.738-.135 2.478l.075.12-.883.553-.075-.12c-.689-1.116-.609-2.627.196-3.672.631-.822 1.482-1.273 2.46-1.314.8-.031 1.603.217 2.192.68a3.315 3.315 0 0 1 .811 4.334 3.276 3.276 0 0 1-1.669 1.393c.13.198.24.434.367.78l.081.226c.256.714.373.778.641.778a.512.512 0 0 0 .338-.132c.161-.154.208-.45.141-.882l-.022-.14 1.027-.162.022.14c.122.78-.035 1.402-.451 1.801z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-raft'> - <path d="M5.673 19c-.877 0-1.65-.36-2.176-1.014-.645-.803-.851-1.936-.581-3.19l.058-.27 1.973.43-.058.27c-.14.645-.083 1.165.158 1.465.148.184.36.278.626.278.776 0 1.545-1.24 2.126-3.418a5.699 5.699 0 0 1-1.74-.952l-.214-.171 1.258-1.59.215.173c.274.22.58.4.914.537.169-.969.304-2.032.403-3.169l.024-.274 2.011.177-.024.275a40.469 40.469 0 0 1-.41 3.268c1.387-.14 2.65-.927 3.354-2.111 1.152-1.941.694-4.37-1.09-5.778-.761-.602-1.88-.943-2.926-.891-1.304.054-2.404.642-3.268 1.766-1.04 1.351-1.15 3.377-.26 4.816l.144.234-1.715 1.073-.145-.235c-1.339-2.167-1.183-5.101.38-7.132C5.935 1.97 7.588 1.095 9.49 1.015c1.552-.06 3.114.42 4.257 1.322 2.594 2.047 3.257 5.587 1.577 8.418a6.365 6.365 0 0 1-3.243 2.707c.252.384.466.843.712 1.514l.158.44c.497 1.387.724 1.51 1.245 1.51.236 0 .494-.1.657-.256.313-.3.405-.875.274-1.712l-.043-.273 1.995-.315.043.273c.236 1.513-.068 2.723-.877 3.499a2.989 2.989 0 0 1-2.049.815c-.93 0-1.684-.348-2.24-1.033-.384-.474-.598-.964-.904-1.818l-.153-.426c-.355-.968-.668-1.457-1.12-1.707a16.26 16.26 0 0 1-.454 1.468C8.46 17.803 7.232 19 5.673 19z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rainbow'> - <path d="M10 5C4.477 5 0 9.477 0 15h1.5a8.5 8.5 0 0 1 17 0H20c0-5.523-4.477-10-10-10zm0 6a4 4 0 0 0-4 4h1.5a2.5 2.5 0 1 1 5 0H14a4 4 0 0 0-4-4zm0-3a7 7 0 0 0-7 7h1.5a5.5 5.5 0 1 1 11 0H17a7 7 0 0 0-7-7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rdio-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.403 9.082c.022.17.034.342.034.518 0 2.176-1.742 3.941-3.892 3.941-2.148 0-3.891-1.766-3.891-3.941 0-2.178 1.742-3.942 3.891-3.942.309 0 .608.039.896.107V8.41c-.454-.166-1.015-.142-1.541.111-.952.461-1.435 1.494-1.079 2.311.357.816 1.418 1.106 2.371.645.656-.316 1.234-1.078 1.234-2.035V6.549c.082.045.162.096.24.146.739.465 1.838 1.086 3.121 1.152.501.026-.197 1.284-1.384 1.635z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rdio'> - <path d="M16.203 10.001c0 4.307-3.448 7.799-7.701 7.799S.8 14.308.8 10.001C.8 5.692 4.248 2.2 8.501 2.2c.611 0 1.204.076 1.774.213v4.441c-.902-.33-2.01-.281-3.053.223-1.885.91-2.841 2.957-2.135 4.57.705 1.615 2.807 2.188 4.691 1.277 1.299-.627 2.443-2.137 2.443-4.029V3.171c.162.09.32.188.475.289 1.464.92 3.638 2.152 6.178 2.281.99.049-.389 2.541-2.738 3.236.044.334.067.676.067 1.024z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-remove-user'> - <path d="M15.989 19.129c0-2.246-2.187-3.389-4.317-4.307-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.011-.234-.011-.871zm.011-9.09l-2.299-2.398-1.061 1.061L15.039 11l-2.398 2.298 1.061 1.061L16 11.961l2.298 2.398 1.061-1.061L16.961 11l2.397-2.298-1.061-1.061L16 10.039z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-renren'> - <path d="M8.468.865C4.117 1.594.8 5.377.8 9.936c0 2.266.82 4.338 2.179 5.941 3.221-1.559 5.472-5.086 5.489-9.191V.865zm1.534 11.393c-.573 2.373-2.285 4.4-4.418 5.748A9.154 9.154 0 0 0 10 19.135c1.602 0 3.108-.41 4.418-1.129-2.133-1.348-3.844-3.375-4.416-5.748zm1.533-5.615c0 4.123 2.256 7.668 5.487 9.234A9.16 9.16 0 0 0 19.2 9.936c0-4.559-3.315-8.34-7.665-9.07v5.777z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-reply-all'> - <path d="M7.225 5.767V3.086L0 9.542l7.225 6.691v-2.777L3 9.542l4.225-3.775zm5 1.186V3.086L5 9.542l7.225 6.691v-4.357c3.292 0 5.291.422 7.775 4.81 0-.001-.368-9.733-7.775-9.733z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-reply'> - <path d="M19 16.685S16.775 6.953 8 6.953V2.969L1 9.542l7 6.69v-4.357c4.763-.001 8.516.421 11 4.81z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-resize-100%'> - <path d="M4.1 14.1L1 17l2 2 2.9-3.1L8 18v-6H2l2.1 2.1zM19 3l-2-2-2.9 3.1L12 2v6h6l-2.1-2.1L19 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-resize-full-screen'> - <path d="M6.987 10.987l-2.931 3.031L2 11.589V18h6.387l-2.43-2.081 3.03-2.932-2-2zM11.613 2l2.43 2.081-3.03 2.932 2 2 2.931-3.031L18 8.411V2h-6.387z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-retweet'> - <path d="M5 13V8h2L3.5 4 0 8h2v6a2 2 0 0 0 2 2h9.482l-2.638-3H5zm4.156-6L6.518 4H16c1.104 0 2 .897 2 2v6h2l-3.5 4-3.5-4h2V7H9.156z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rocket'> - <path d="M11.933 13.069s7.059-5.094 6.276-10.924a.465.465 0 0 0-.112-.268.436.436 0 0 0-.263-.115C12.137.961 7.16 8.184 7.16 8.184c-4.318-.517-4.004.344-5.974 5.076-.377.902.234 1.213.904.959l2.148-.811 2.59 2.648-.793 2.199c-.248.686.055 1.311.938.926 4.624-2.016 5.466-1.694 4.96-6.112zm1.009-5.916a1.594 1.594 0 0 1 0-2.217 1.509 1.509 0 0 1 2.166 0 1.594 1.594 0 0 1 0 2.217 1.509 1.509 0 0 1-2.166 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-round-brush'> - <path d="M12.135 9.304c-2.558-1.879-6.7 1.17-7.632 5.284-.718 3.17-4.043 3.04-3.996 3.464.046.424 7.473 1.103 10.156-1.123 2.506-2.08 4.277-5.564 1.472-7.625zm2.203-7.796l-3.363 5.156c1.102.179 3.635 1.885 4.121 3.109l4.396-4.246c-.526-1.503-3.438-3.844-5.154-4.019z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-rss'> - <path d="M2.4 2.4v2.367c7.086 0 12.83 5.746 12.83 12.832h2.369C17.599 9.205 10.794 2.4 2.4 2.4zm0 4.737v2.369a8.093 8.093 0 0 1 8.093 8.094h2.368c0-5.778-4.684-10.463-10.461-10.463zm2.269 5.922a2.271 2.271 0 0 0 0 4.541c1.254 0 2.269-1.016 2.269-2.27s-1.015-2.271-2.269-2.271z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ruler'> - <path d="M14.249.438L.438 14.251a1.505 1.505 0 0 0 .002 2.124l3.185 3.187a1.506 1.506 0 0 0 2.124.002L19.562 5.751a1.508 1.508 0 0 0 0-2.125L16.376.438a1.51 1.51 0 0 0-2.127 0zM3.929 15.312l-.759.759-1.896-1.897.759-.759 1.896 1.897zm3.036 0l-.759.759-3.415-3.415.759-.76 3.415 3.416zm0-3.036l-.759.759-1.898-1.896.76-.76 1.897 1.897zm1.518-1.518l-.759.759-1.896-1.896.759-.76 1.896 1.897zm3.035 0l-.759.759-3.414-3.414.759-.759 3.414 3.414zm0-3.035l-.759.759-1.896-1.896.759-.759 1.896 1.896zm1.518-1.517l-.759.759-1.897-1.897.759-.759 1.897 1.897zm3.036 0l-.76.759-3.414-3.415.759-.76 3.415 3.416zm-.001-3.035l-.759.759-1.896-1.898.759-.758 1.896 1.897z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-save'> - <path d="M15.173 2H4c-1.101 0-2 .9-2 2v12c0 1.1.899 2 2 2h12c1.101 0 2-.9 2-2V5.127L15.173 2zM14 8c0 .549-.45 1-1 1H7c-.55 0-1-.451-1-1V3h8v5zm-1-4h-2v4h2V4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-scissors'> - <path d="M8.38 5.59a3.69 3.69 0 1 0-3.69 3.69 3.67 3.67 0 0 0 2.483-.976L9 9.991l.012.009-.004.003-1.836 1.693a3.665 3.665 0 0 0-2.482-.976 3.69 3.69 0 1 0 3.69 3.69c0-.297-.044-.582-.111-.858l2.844-1.991 4.127 3.065c2.212 1.549 3.76-.663 3.76-.663L8.269 6.448c.066-.276.111-.561.111-.858zm-3.69 1.8a1.8 1.8 0 1 1 0-3.6 1.8 1.8 0 0 1 0 3.6zm0 8.82a1.8 1.8 0 1 1 0-3.6 1.8 1.8 0 0 1 0 3.6zM19 6.038s-1.548-2.212-3.76-.663L12.035 7.61l2.354 1.648L19 6.038z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-scribd'> - <path d="M4.643 18.284c0 .224-.072.492-.148.716h5.737c.328-.377.513-.831.513-1.342 0-1.385-1.644-2.154-5.241-3.842l-.506-.236C3.225 12.737 1.912 11.995 1 11.111v4.398a4.07 4.07 0 0 1 .558-.042c3.001.001 3.085 2.789 3.085 2.817zM17 1h-3.738c1.748 1.178 2.467 2.842 2.467 4.142 0 2.194-1.836 2.905-2.727 2.905l-.271.002c-2.046 0-3.09-1.247-3.104-3.707-.121-.096-.688-.453-2.347-.453-1.96 0-2.773 1.543-2.773 2.369 0 .973.543 2.055 4.484 3.382 6.736 2.254 6.736 5.255 6.736 7.903v.026c0 .437-.031.924-.117 1.431H17c1.1 0 2-.899 2-2V3c0-1.1-.9-2-2-2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-select-arrows'> - <path d="M10 1L5 8h10l-5-7zm0 18l5-7H5l5 7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-share-alternative'> - <path d="M9 13h2V4h2l-3-4-3 4h2v9zm8-6h-3v2h2v9H4V9h2V7H3a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-share'> - <path d="M15 13.442c-.633 0-1.204.246-1.637.642l-5.938-3.463c.046-.188.075-.384.075-.584s-.029-.395-.075-.583L13.3 6.025A2.48 2.48 0 0 0 15 6.7c1.379 0 2.5-1.121 2.5-2.5S16.379 1.7 15 1.7s-2.5 1.121-2.5 2.5c0 .2.029.396.075.583L6.7 8.212A2.485 2.485 0 0 0 5 7.537c-1.379 0-2.5 1.121-2.5 2.5s1.121 2.5 2.5 2.5a2.48 2.48 0 0 0 1.7-.675l5.938 3.463a2.339 2.339 0 0 0-.067.546A2.428 2.428 0 1 0 15 13.442z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shareable'> - <path d="M6.8 10a3.2 3.2 0 1 0 6.401 0A3.2 3.2 0 0 0 6.8 10zM4.529 8.8a5.6 5.6 0 0 1 9.43-2.76 1.2 1.2 0 1 0 1.697-1.697A8.002 8.002 0 0 0 2.367 7.601H0V10h3.199c.999 0 1.245-.813 1.33-1.2zM16.8 10c-.999 0-1.245.814-1.329 1.199a5.6 5.6 0 0 1-9.43 2.759 1.2 1.2 0 0 0-1.698 1.697A7.972 7.972 0 0 0 10 18a8.005 8.005 0 0 0 7.633-5.6H20V10h-3.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shield'> - <path d="M17.604 3.332C12.99 4 12.075 2.833 10 1 7.925 2.833 7.01 4 2.396 3.332-.063 15.58 10 19 10 19s10.063-3.42 7.604-15.668zm-5.131 9.977L10 12.009l-2.472 1.3L8 10.556l-2-1.95 2.764-.401L10 5.7l1.236 2.505L14 8.606l-2 1.949.473 2.754z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shop'> - <path d="M6.123 7.25L6.914 2H2.8L1.081 6.5C1.028 6.66 1 6.826 1 7c0 1.104 1.15 2 2.571 2 1.31 0 2.393-.764 2.552-1.75zM10 9c1.42 0 2.571-.896 2.571-2 0-.041-.003-.082-.005-.121L12.057 2H7.943l-.51 4.875c-.002.041-.004.082-.004.125 0 1.104 1.151 2 2.571 2zm5 1.046V14H5v-3.948c-.438.158-.92.248-1.429.248-.195 0-.384-.023-.571-.049V16.6c0 .77.629 1.4 1.398 1.4H15.6c.77 0 1.4-.631 1.4-1.4v-6.348a4.297 4.297 0 0 1-.571.049A4.155 4.155 0 0 1 15 10.046zM18.92 6.5L17.199 2h-4.113l.79 5.242C14.03 8.232 15.113 9 16.429 9 17.849 9 19 8.104 19 7c0-.174-.028-.34-.08-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-bag'> - <path d="M18.121 3.271c-.295-.256-1.906-1.731-2.207-1.991-.299-.259-.756-.28-1.102-.28H5.188c-.345 0-.802.021-1.102.28-.301.26-1.912 1.736-2.207 1.991-.297.256-.543.643-.464 1.192.079.551 1.89 13.661 1.937 13.973A.67.67 0 0 0 4 19h12a.67.67 0 0 0 .648-.565c.047-.311 1.858-13.422 1.938-13.973.078-.548-.168-.935-.465-1.191zM10 11.973c-3.248 0-3.943-4.596-4.087-5.543H7.75c.276 1.381.904 3.744 2.25 3.744s1.975-2.363 2.25-3.744h1.838c-.145.947-.84 5.543-4.088 5.543zM3.17 4.006L5 2h10l1.83 2.006H3.17z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-basket'> - <path d="M18.399 7h-5.007L11.58 8.812a2.384 2.384 0 0 1-1.696.702c-.642 0-1.244-.25-1.698-.703a2.387 2.387 0 0 1-.703-1.695c0-.039.01-.077.011-.116H1.6a.6.6 0 0 0-.6.6V10h18V7.6a.6.6 0 0 0-.601-.6zm-7.631.999l5.055-5.055a.6.6 0 0 0 .002-.849l-.92-.92a.603.603 0 0 0-.85 0L9 6.231a1.25 1.25 0 0 0 1.768 1.768zm-6.945 9.272c.097.401.515.729.927.729h10.5c.412 0 .83-.328.927-.729L17.7 11H2.3l1.523 6.271z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shopping-cart'> - <path d="M13 17a2 2 0 1 0 3.999.001A2 2 0 0 0 13 17zM3 17a2 2 0 1 0 4 0 2 2 0 0 0-4 0zm3.547-4.828L17.615 9.01A.564.564 0 0 0 18 8.5V3H4V1.4c0-.22-.181-.4-.399-.4H.399A.401.401 0 0 0 0 1.4V3h2l1.91 8.957.09.943v1.649c0 .219.18.4.4.4h13.2c.22 0 .4-.182.4-.4V13H6.752c-1.15 0-1.174-.551-.205-.828z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-shuffle'> - <path d="M15.093 6.694h.92v2.862L20 5.532l-3.988-4.025v2.387h-.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.08 4.049-5.386 4.049H0v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.08-4.048 5.386-4.048zM5.41 8.458c.158-.203.316-.412.477-.623a47.33 47.33 0 0 1 1.252-1.596C5.817 5.005 4.224 4.095 2.093 4.095H0v2.799h2.093c1.327 0 2.362.623 3.317 1.564zm10.602 4.836h-.92c-1.407 0-2.487-.701-3.491-1.738l-.303.397c-.441.58-.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h.92v2.398L20 14.468l-3.988-4.025v2.851z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-signal'> - <path d="M10 14a1.99 1.99 0 0 0-1.981 2c0 1.104.887 2 1.981 2a1.99 1.99 0 0 0 1.98-2c0-1.105-.886-2-1.98-2zm-4.2-2.242l1.4 1.414a3.933 3.933 0 0 1 5.601 0l1.399-1.414a5.898 5.898 0 0 0-8.4 0zM3 8.928l1.4 1.414a7.864 7.864 0 0 1 11.199 0L17 8.928a9.831 9.831 0 0 0-14 0zM.199 6.1l1.4 1.414a11.797 11.797 0 0 1 16.801 0L19.8 6.1a13.763 13.763 0 0 0-19.601 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sina-weibo'> - <path d="M14.688 10.068c-.274-.084-.463-.142-.319-.508.311-.797.344-1.484.007-1.975-.633-.92-2.364-.871-4.348-.025 0-.002-.623.277-.464-.227.306-.997.259-1.833-.216-2.315-1.076-1.098-3.937.041-6.392 2.539C1.117 9.428.05 11.41.05 13.125c0 3.281 4.132 5.475 8.175 5.475 5.299 0 8.825-3.334 8.825-5.822 0-1.505-1.244-2.358-2.362-2.71zm-6.452 7.061c-3.225.32-6.011-1.147-6.22-3.275-.209-2.129 2.236-4.115 5.462-4.438 3.226-.32 6.011 1.146 6.22 3.275.209 2.131-2.236 4.118-5.462 4.438zM19.95 7.397a5.998 5.998 0 0 0-6-5.996.698.698 0 1 0 0 1.398 4.602 4.602 0 0 1 4.601 4.602.699.699 0 1 0 1.399-.001v-.003zm-2.781-.102a4.006 4.006 0 0 0-3.113-3.113.7.7 0 1 0-.281 1.371 2.603 2.603 0 0 1 2.024 2.023.701.701 0 0 0 .826.545.701.701 0 0 0 .544-.826zM6.582 11.502c-1.3.262-2.177 1.352-1.959 2.434.218 1.084 1.447 1.75 2.747 1.488 1.299-.262 2.176-1.352 1.959-2.434-.218-1.082-1.449-1.75-2.747-1.488z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-skype-with-circle'> - <path d="M12.164 9.852a3.477 3.477 0 0 0-.841-.395 11.065 11.065 0 0 0-1.087-.293 16.093 16.093 0 0 1-.679-.172 2.031 2.031 0 0 1-.396-.158.89.89 0 0 1-.293-.229.46.46 0 0 1-.098-.295c0-.188.1-.346.305-.484.212-.143.499-.215.851-.215.38 0 .656.064.821.193.17.133.318.322.44.562.106.188.201.318.294.4.099.09.241.137.423.137.201 0 .37-.072.505-.217a.698.698 0 0 0 .202-.488c0-.188-.053-.383-.154-.576a1.812 1.812 0 0 0-.477-.553 2.486 2.486 0 0 0-.811-.416 3.77 3.77 0 0 0-1.147-.156c-.55 0-1.035.078-1.443.234-.413.158-.734.388-.954.683a1.67 1.67 0 0 0-.334 1.023c0 .4.107.74.318 1.012.207.268.492.482.844.637.346.15.778.283 1.289.396.374.08.678.158.901.23.214.068.391.168.525.297a.632.632 0 0 1 .189.481c0 .252-.119.457-.363.631-.251.176-.584.264-.99.264-.296 0-.535-.043-.714-.131a1.097 1.097 0 0 1-.412-.326 2.564 2.564 0 0 1-.282-.516 1.163 1.163 0 0 0-.289-.434.63.63 0 0 0-.432-.154.716.716 0 0 0-.514.195.648.648 0 0 0-.205.479c0 .295.106.604.315.912.207.309.479.557.81.74.462.252 1.054.379 1.76.379.588 0 1.104-.094 1.536-.277.435-.186.771-.449.998-.779a1.96 1.96 0 0 0 .344-1.129c0-.348-.067-.648-.2-.891a1.716 1.716 0 0 0-.555-.601zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.301 14.975c-.487 0-.946-.125-1.348-.348a4.68 4.68 0 0 1-.9.086c-2.713 0-4.914-2.266-4.914-5.057 0-.35.035-.69.1-1.018a2.967 2.967 0 0 1-.392-1.481c0-1.619 1.276-2.934 2.851-2.934.557 0 1.076.166 1.516.451.272-.049.554-.074.839-.074 2.715 0 4.915 2.264 4.915 5.057 0 .371-.039.734-.113 1.084.189.393.296.834.296 1.303-.001 1.618-1.276 2.931-2.85 2.931z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-skype'> - <path d="M18.671 12.037a9.347 9.347 0 0 0 .203-1.938c0-4.986-3.93-9.029-8.777-9.029-.511 0-1.012.047-1.5.133A4.962 4.962 0 0 0 5.89.4C3.079.4.8 2.744.8 5.637c0 .965.256 1.871.699 2.648a9.348 9.348 0 0 0-.178 1.815c0 4.986 3.93 9.029 8.775 9.029.551 0 1.087-.051 1.607-.15a4.956 4.956 0 0 0 2.406.621c2.811 0 5.09-2.344 5.09-5.236a5.328 5.328 0 0 0-.528-2.327zm-4.072 2.379c-.406.59-1.006 1.059-1.783 1.391-.769.33-1.692.496-2.742.496-1.26 0-2.317-.227-3.143-.678a4.161 4.161 0 0 1-1.445-1.318c-.372-.555-.561-1.104-.561-1.633 0-.33.123-.617.365-.852.24-.232.549-.352.916-.352.301 0 .562.094.773.277.202.176.375.438.514.773.156.367.326.676.505.92.172.234.42.432.735.586.318.154.748.232 1.275.232.725 0 1.32-.158 1.768-.473.438-.309.65-.676.65-1.127 0-.357-.111-.637-.34-.857a2.409 2.409 0 0 0-.936-.531 18.034 18.034 0 0 0-1.611-.41c-.91-.201-1.683-.439-2.299-.707-.63-.275-1.137-.658-1.508-1.137-.375-.483-.567-1.092-.567-1.807 0-.682.2-1.297.596-1.828.393-.525.965-.935 1.703-1.217.728-.277 1.596-.418 2.576-.418.783 0 1.473.094 2.047.277.578.186 1.066.436 1.449.744.387.311.674.643.854.986.182.35.275.695.275 1.031 0 .322-.121.615-.361.871-.24.258-.543.387-.9.387-.324 0-.58-.082-.756-.242-.164-.148-.336-.383-.524-.717-.219-.428-.484-.766-.788-1.002-.295-.232-.788-.35-1.466-.35-.629 0-1.141.131-1.519.387-.368.249-.545.532-.545.866 0 .207.058.379.176.525.125.158.301.295.523.41.23.12.467.214.705.282.244.07.654.172 1.215.307.711.156 1.363.332 1.939.521a6.22 6.22 0 0 1 1.502.705c.42.283.754.645.989 1.076.237.434.357.969.357 1.59a3.49 3.49 0 0 1-.613 2.016z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-slideshare'> - <path d="M13 7.08a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm5.845-1.137C15.265 8.498 13.616 8.051 12 8c-1.118-.057-1.5.298-1.5 1.08l.001 6c0 5 8.421 3.43 5.165-4.949 1.671-.959 3.076-2.434 3.876-3.412.411-.608-.028-1.245-.697-.776zM7 2.08a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM8 8c-1.616.051-3.265.498-6.845-2.057-.669-.469-1.108.168-.697.775.8.979 2.205 2.453 3.876 3.412-3.256 8.379 5.165 9.949 5.165 4.949l.001-6C9.5 8.298 9.118 7.943 8 8z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-smashing'> - <path d="M10.023 16.032c-2.508 0-4.253-1.555-4.253-1.555L4.287 17.84c1.023.547 2.092.936 2.709 1.141l-1.592.381a1.391 1.391 0 0 1-1.675-1.029L.639 5.405a1.39 1.39 0 0 1 1.028-1.676l3.716-.889c-.91 1.029-1.263 2.252-1.174 3.65.139 2.193 2.237 3.879 4.734 4.822 4.701 1.776 3.586 4.72 1.08 4.72zm9.338-1.438L16.27 1.666A1.388 1.388 0 0 0 14.595.639l-2.663.637c.679.105 2.024.4 3.505 1.178l-1.159 3.213s-.965-1.078-3.553-1.209c-2.46-.125-3.828 2.537.969 4.105 3.674 1.201 4.848 3.516 4.787 5.658a5.123 5.123 0 0 1-.872 2.701l2.725-.652a1.39 1.39 0 0 0 1.027-1.676z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound-mix'> - <path d="M5 1.6c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V10h2V1.6zM3 18.4c0 .551.447.6 1 .6.552 0 1-.049 1-.6V15H3v3.4zM6.399 11h-4.8C1.046 11 1 11.448 1 12v1c0 .553.046 1 .599 1H6.4c.55 0 .6-.447.6-1v-1c0-.552-.05-1-.601-1zm12 1h-4.801c-.552 0-.598.448-.598 1v1c0 .553.046 1 .599 1H18.4c.55 0 .6-.447.6-1v-1c0-.552-.05-1-.601-1zM13 7c0-.552-.05-1-.601-1h-4.8C7.046 6 7 6.448 7 7v1c0 .553.046 1 .599 1H12.4c.55 0 .6-.447.6-1V7zm-2-5.4c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V5h2V1.6zM9 18.4c0 .551.447.6 1 .6.552 0 1-.049 1-.6V10H9v8.4zm8-16.8c0-.553-.448-.6-1-.6-.553 0-1 .047-1 .6V11h2V1.6zm-2 16.8c0 .551.447.6 1 .6.552 0 1-.049 1-.6V16h-2v2.4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound-mute'> - <path d="M14.201 9.194c1.389 1.883 1.818 3.517 1.559 3.777-.26.258-1.893-.17-3.778-1.559l-5.526 5.527c4.186 1.838 9.627-2.018 10.605-2.996.925-.922.097-3.309-1.856-5.754l-1.004 1.005zM8.667 7.941c-1.099-1.658-1.431-3.023-1.194-3.26.233-.234 1.6.096 3.257 1.197l1.023-1.025C9.489 3.179 7.358 2.519 6.496 3.384c-.928.926-4.448 5.877-3.231 9.957l5.402-5.4zm9.854-6.463a.999.999 0 0 0-1.414 0L1.478 17.108a.999.999 0 1 0 1.414 1.414l15.629-15.63a.999.999 0 0 0 0-1.414z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sound'> - <path d="M5.312 4.566C4.19 5.685-.715 12.681 3.523 16.918c4.236 4.238 11.23-.668 12.354-1.789 1.121-1.119-.335-4.395-3.252-7.312-2.919-2.919-6.191-4.376-7.313-3.251zm9.264 9.59c-.332.328-2.895-.457-5.364-2.928-2.467-2.469-3.256-5.033-2.924-5.363.328-.332 2.894.457 5.36 2.926 2.471 2.467 3.258 5.033 2.928 5.365zm.858-8.174l1.904-1.906a.999.999 0 1 0-1.414-1.414L14.02 4.568a.999.999 0 1 0 1.414 1.414zM11.124 3.8a1 1 0 0 0 1.36-.388l1.087-1.926a1 1 0 0 0-1.748-.972L10.736 2.44a1 1 0 0 0 .388 1.36zm8.748 3.016a.999.999 0 0 0-1.36-.388l-1.94 1.061a1 1 0 1 0 .972 1.748l1.94-1.061a1 1 0 0 0 .388-1.36z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-soundcloud'> - <path d="M.672 13.055L1 11.654l-.328-1.447c-.009-.043-.092-.076-.191-.076-.102 0-.184.033-.191.076L0 11.654l.289 1.4c.008.045.09.076.191.076.1.001.183-.03.192-.075zm2.051.777L3 11.668 2.723 8.32c-.009-.084-.114-.152-.239-.152-.127 0-.233.068-.238.152L2 11.668l.246 2.164c.006.086.111.152.238.152.125 0 .23-.066.239-.152zm2.045-.035L5 11.67l-.232-4.457c-.006-.106-.129-.188-.282-.188-.152 0-.275.082-.281.188L4 11.67l.205 2.129c.006.103.129.186.281.186.153-.001.276-.083.282-.188zm2.042-.031L7 11.67l-.19-4.49c-.005-.123-.146-.221-.32-.221-.176 0-.316.098-.321.221L6 11.67l.17 2.096c.004.123.145.221.32.221.174-.001.315-.096.32-.221zm2.04-.028L9 11.672l-.15-5.149c-.004-.142-.164-.255-.358-.255-.194 0-.354.115-.357.256L8 11.67l.135 2.068c.003.141.163.256.357.256.194 0 .354-.113.358-.256zm1.427.258l7.145.004C18.846 14 20 12.883 20 11.506c0-1.377-1.154-2.492-2.578-2.492-.353 0-.689.07-.996.193-.205-2.246-2.153-4.008-4.529-4.008a4.77 4.77 0 0 0-1.648.297c-.196.074-.247.148-.249.295v7.91a.306.306 0 0 0 .277.295z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sports-club'> - <path d="M6 13.5l4 2.5 4-2.5V5H6v8.5zM4.5 10a2 2 0 1 0-4 0 2 2 0 0 0 4 0zm13-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4zM4.485 6.199A6.71 6.71 0 0 1 10 3.3a6.715 6.715 0 0 1 5.456 2.823 1.4 1.4 0 0 0 2.281-1.624A9.518 9.518 0 0 0 10 .5a9.506 9.506 0 0 0-7.817 4.107 1.402 1.402 0 0 0 .355 1.948 1.401 1.401 0 0 0 1.947-.356zm10.971 7.678A6.713 6.713 0 0 1 10 16.7a6.71 6.71 0 0 1-5.515-2.899 1.4 1.4 0 0 0-2.302 1.592A9.506 9.506 0 0 0 10 19.5a9.518 9.518 0 0 0 7.737-3.999 1.401 1.401 0 0 0-2.281-1.624z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spotify-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.964 13.437c-.148 0-.25-.056-.359-.122-1.013-.613-2.268-.935-3.628-.935-.694 0-1.443.082-2.226.242l-.095.024c-.1.024-.201.05-.279.05a.554.554 0 0 1-.562-.559c0-.318.18-.543.479-.6a11.968 11.968 0 0 1 2.687-.316c1.58 0 2.994.365 4.201 1.09.208.121.338.26.338.569a.557.557 0 0 1-.556.557zm.778-2.183c-.177 0-.292-.067-.395-.127-1.825-1.084-4.547-1.443-6.785-.847a7.61 7.61 0 0 0-.102.031c-.084.027-.164.053-.274.053a.67.67 0 0 1-.667-.672c0-.357.186-.607.524-.702a9.95 9.95 0 0 1 2.84-.393c1.886 0 3.714.473 5.146 1.33.261.148.379.353.379.658 0 .37-.299.669-.666.669zm.883-2.488a.774.774 0 0 1-.421-.123c-1.239-.744-3.171-1.186-5.174-1.186-1.043 0-1.99.115-2.817.338a1.295 1.295 0 0 0-.083.024 1.11 1.11 0 0 1-.312.058.78.78 0 0 1-.783-.792c0-.386.217-.681.579-.788.998-.295 2.148-.443 3.415-.443 2.281 0 4.453.506 5.957 1.391.284.16.423.404.423.742a.774.774 0 0 1-.784.779z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spotify'> - <path d="M10 1.2A8.798 8.798 0 0 0 1.2 10 8.8 8.8 0 1 0 10 1.2zm3.478 13.302c-.173 0-.294-.066-.421-.143-1.189-.721-2.662-1.099-4.258-1.099-.814 0-1.693.097-2.61.285l-.112.028c-.116.028-.235.059-.326.059a.651.651 0 0 1-.661-.656c0-.373.21-.637.562-.703a14.037 14.037 0 0 1 3.152-.372c1.855 0 3.513.43 4.931 1.279.243.142.396.306.396.668a.655.655 0 0 1-.653.654zm.913-2.561c-.207 0-.343-.079-.463-.149-2.143-1.271-5.333-1.693-7.961-.993a3.742 3.742 0 0 0-.12.037c-.099.031-.191.062-.321.062a.786.786 0 0 1-.783-.788c0-.419.219-.712.614-.824 1.013-.278 1.964-.462 3.333-.462 2.212 0 4.357.555 6.038 1.561.306.175.445.414.445.771a.784.784 0 0 1-.782.785zm1.036-2.92c-.195 0-.315-.047-.495-.144-1.453-.872-3.72-1.391-6.069-1.391-1.224 0-2.336.135-3.306.397a2.072 2.072 0 0 0-.098.027 1.281 1.281 0 0 1-.365.068.914.914 0 0 1-.919-.929c0-.453.254-.799.68-.925 1.171-.346 2.519-.521 4.006-.521 2.678 0 5.226.595 6.991 1.631.332.189.495.475.495.872a.908.908 0 0 1-.92.915z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-spreadsheet'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 7H9v9H8V8H5V7h3V3h1v4h6v1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-cross'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2.939 12.789L10 11.729l-3.061 3.06-1.729-1.728L8.271 10l-3.06-3.061L6.94 5.21 10 8.271l3.059-3.061 1.729 1.729L11.729 10l3.06 3.061-1.728 1.728z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-minus'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9H5V9h10v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-squared-plus'> - <path d="M16 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9h-4v4H9v-4H5V9h4V5h2v4h4v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-star-outlined'> - <path d="M18.8 8.022h-6.413L10 1.3 7.611 8.022H1.199l5.232 3.947-1.871 6.929L10 14.744l5.438 4.154-1.869-6.929L18.8 8.022zM10 12.783l-3.014 2.5 1.243-3.562-2.851-2.3 3.522.101 1.1-4.04 1.099 4.04 3.521-.101-2.851 2.3 1.243 3.562-3.012-2.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-star'> - <path d="M10 1.3l2.388 6.722H18.8l-5.232 3.948 1.871 6.928L10 14.744l-5.438 4.154 1.87-6.928-5.233-3.948h6.412L10 1.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stopwatch'> - <path d="M7.376 6.745c-.447.275 1.197 4.242 1.598 4.888a1.206 1.206 0 0 0 2.053-1.266c-.397-.648-3.205-3.898-3.651-3.622zm-.335-4.343a8.98 8.98 0 0 1 5.918 0c.329.114.765-.115.572-.611-.141-.36-.277-.712-.332-.855-.131-.339-.6-.619-.804-.665C11.623.097 10.823 0 10 0S8.377.097 7.604.271c-.204.046-.672.326-.803.665l-.332.855c-.193.496.243.726.572.611zm12.057.784a10.132 10.132 0 0 0-1.283-1.285c-.153-.129-.603-.234-.888.051l-1.648 1.647a9.27 9.27 0 0 1 1.155.966c.362.361.677.752.966 1.155l1.647-1.647c.286-.286.181-.735.051-.887zM10 2.9A8.1 8.1 0 0 0 1.899 11 8.1 8.1 0 0 0 10 19.101 8.1 8.1 0 0 0 10 2.9zm0 14.201A6.1 6.1 0 1 1 10.001 4.9 6.1 6.1 0 0 1 10 17.1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stumbleupon-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 7.385a.53.53 0 0 0-.531.529v3.168a2.262 2.262 0 0 1-4.522 0v-1.326h1.729v1.326a.53.53 0 0 0 .531.529.53.53 0 0 0 .531-.529V8.314a2.262 2.262 0 0 1 4.523.001v.603l-1.04.334-.69-.334v-.604A.53.53 0 0 0 10 7.785zm5.053 3.697a2.262 2.262 0 0 1-4.523 0v-1.354l.69.334 1.04-.334v1.354a.53.53 0 0 0 1.061 0v-1.326h1.731v1.326z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-stumbleupon'> - <path d="M11.051 8.059l1.365.66 2.059-.66V6.865C14.475 4.402 12.467 2.4 10 2.4S5.525 4.402 5.525 6.865v6.27a1.052 1.052 0 0 1-2.102 0V10.51H0v2.625a4.475 4.475 0 0 0 8.949 0v-6.27a1.052 1.052 0 0 1 2.103 0v1.194zm5.525 2.451v2.625a1.051 1.051 0 0 1-2.102 0v-2.678l-2.059.658-1.365-.658v2.678a4.476 4.476 0 0 0 8.95 0V10.51h-3.424z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-suitcase'> - <path d="M18 4h-1v15h1c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM0 6v11c0 1.1.899 2 2 2h1V4H2C.899 4 0 4.9 0 6zm13.5-4.094C12.819 1.59 11.611 1 9.981 1c-1.633 0-2.8.59-3.481.906V4H4v15h12V4h-2.5V1.906zM12 4H8V2.664c.534-.23 1.078-.465 1.981-.465.902 0 1.486.234 2.019.465V4z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-swap'> - <path d="M14 5H4V3L0 6.5 4 10V8h10V5zm6 8.5L16 10v2H6v3h10v2l4-3.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-swarm'> - <path d="M10.286 18.821a23.855 23.855 0 0 1-3.677-.923 58.46 58.46 0 0 1-1.007-.37.558.558 0 0 1-.317-.71c.086-.225.379-.949.399-.994.4-.92 1-2.153 1.795-3.379a9.16 9.16 0 0 0 2.807 6.376zm-.113-11.794C7.382 1.338 1.183 1.541.205 4.084c-.751 1.952 2.535 6.602 10.097 3.244l.004-.002a4.237 4.237 0 0 1-.133-.299zm1.387-.222l.002-.001c4.271-1.897 3.674-5.191 2.569-5.614-1.487-.569-4.19 1.624-2.647 5.447.015.027.066.14.076.168zm7.853 4.165A5.567 5.567 0 0 0 16.2 7.986a1.243 1.243 0 0 0-.423-.073c-.717 0-1.407.595-1.472 1.338-.109 1.239.137 2.501.68 3.718.535 1.199 1.294 2.213 2.27 2.957.254.194.565.285.875.285.559 0 1.117-.296 1.339-.826a5.542 5.542 0 0 0-.056-4.415zm-3.241 6.369c-1.195-.912-2.142-2.139-2.815-3.646-.682-1.529-.961-3.075-.827-4.596.037-.423.161-.831.36-1.204l-.114.028a5.86 5.86 0 0 0-1.778.784c-.784.514-1.475 1.277-1.772 2.177-.08.243-.141.51-.161.765a7.54 7.54 0 0 0 .636 3.67 7.562 7.562 0 0 0 2.213 2.853c.566.447 1.586.73 2.42.73.783 0 1.556-.233 2.25-.585.217-.11.695-.408.726-.429a3.17 3.17 0 0 1-1.138-.547z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-sweden'> - <path d="M18 4H9v5h10V5a1 1 0 0 0-1-1zM1 15c0 .553.248 1 .8 1H7v-5H1v4zm8 1h9a1 1 0 0 0 1-1v-4H9v5zM1 5v4h6V4H1.8c-.552 0-.8.447-.8 1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-switch'> - <path d="M13 3H7a7 7 0 1 0 0 14h6a7 7 0 1 0 0-14zm0 12a5 5 0 1 1 .001-10.001A5 5 0 0 1 13 15z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tablet-mobile-combo'> - <path d="M17.004 5h-5.008A1.996 1.996 0 0 0 10 6.996v11.008c0 1.102.894 1.996 1.996 1.996h5.008A1.996 1.996 0 0 0 19 18.004V6.996A1.996 1.996 0 0 0 17.004 5zM14.5 19c-.69 0-1.25-.447-1.25-1 0-.553.56-1 1.25-1s1.25.447 1.25 1c0 .553-.56 1-1.25 1zm2.5-3h-5V7h5v9zm-9 0H3V2h12v1h2V2c0-1.101-.9-2-2-2H3C1.9 0 1 .899 1 2v16c0 1.1.9 2 2 2h5.555A3.95 3.95 0 0 1 8 18.003V16z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tablet'> - <path d="M16 0H4C2.9 0 2 .899 2 2v16c0 1.1.9 2 2 2h12c1.101 0 2-.9 2-2V2c0-1.101-.899-2-2-2zm-6 19c-.69 0-1.25-.447-1.25-1s.56-1 1.25-1c.689 0 1.25.447 1.25 1s-.561 1-1.25 1zm6-3H4V2h12v14z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tag'> - <path d="M18.662 5.521L5.237 19l.707-4.967-4.945.709L14.424 1.263c.391-.392 1.133-.308 1.412 0l2.826 2.839c.5.473.391 1.026 0 1.419z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text-document-inverted'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-3 14H7v-2h6v2zm0-4H7V9h6v2zm0-4H7V5h6v2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text-document'> - <path d="M16 1H4a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zm-1 16H5V3h10v14zM13 5H7v2h6V5zm0 8H7v2h6v-2zm0-4H7v2h6V9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-text'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M15.5 11h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0-4h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm-5 8h-6c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm5-12h-11c-.275 0-.5.225-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thermometer'> - <path d="M13 10.123V1a1 1 0 0 0-1-1H7.799C7.247 0 7 .447 7 1v9.123A5.383 5.383 0 0 0 4.6 14.6a5.4 5.4 0 0 0 10.8 0 5.383 5.383 0 0 0-2.4-4.477zM10 17.9a3.3 3.3 0 0 1-3.3-3.3A3.29 3.29 0 0 1 9 11.471V4h2v7.471a3.29 3.29 0 0 1 2.3 3.129 3.3 3.3 0 0 1-3.3 3.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thumbs-down'> - <path d="M6.352 12.638c.133.356-3.539 3.634-1.397 6.291.501.621 2.201-2.975 4.615-4.602 1.331-.899 4.43-2.811 4.43-3.868V3.617C14 2.346 9.086 1 5.352 1 3.983 1 2 9.576 2 10.939c0 1.367 4.221 1.343 4.352 1.699zM15 12.543c.658 0 3-.4 3-3.123V4.572c0-2.721-2.342-3.021-3-3.021-.657 0 1 .572 1 2.26v6.373c0 1.768-1.657 2.359-1 2.359z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thumbs-up'> - <path d="M13.648 7.362c-.133-.355 3.539-3.634 1.398-6.291-.501-.621-2.201 2.975-4.615 4.603C9.099 6.572 6 8.484 6 9.541v6.842C6 17.654 10.914 19 14.648 19 16.017 19 18 10.424 18 9.062c0-1.368-4.221-1.344-4.352-1.7zM5 7.457c-.658 0-3 .4-3 3.123v4.848c0 2.721 2.342 3.021 3 3.021.657 0-1-.572-1-2.26V9.816c0-1.768 1.657-2.359 1-2.359z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-thunder-cloud'> - <path d="M15.213 6.641c-.276 0-.546.023-.809.066C13.748 4.562 11.715 3 9.309 3c-2.939 0-5.32 2.328-5.32 5.199 0 .258.02.51.057.756a3.815 3.815 0 0 0-.429-.027C1.619 8.928 0 10.512 0 12.463 0 14.416 1.619 16 3.617 16h11.596C17.856 16 20 13.904 20 11.32c0-2.586-2.144-4.679-4.787-4.679zm-3.842 4.31c-.494.703-2.614 2.889-2.704 2.98-.104.129-.391.344-.663.166-.079-.051-.172-.152-.172-.354 0-.193.088-.391.098-.412l1.033-2.287c-.193-.078-.527-.211-.785-.324l-.068-.029c-.262-.111-.588-.25-.588-.607 0-.172.081-.373.249-.609.495-.705 2.614-2.889 2.705-2.982.103-.127.39-.342.663-.166.078.051.171.154.171.354 0 .193-.088.391-.098.414L10.178 9.38c.195.078.528.213.787.324l.068.029c.262.111.588.25.588.609 0 .172-.082.371-.25.609z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-ticket'> - <path d="M4.906 11.541l3.551 3.553 6.518-6.518-3.553-3.551-6.516 6.516zm14.198-4.877l-1.511-1.512a2.024 2.024 0 0 1-2.747-2.746L13.335.894a1.017 1.017 0 0 0-1.432 0L.893 11.904a1.017 1.017 0 0 0 0 1.432l1.512 1.51a2.024 2.024 0 0 1 2.747 2.748l1.512 1.51a1.015 1.015 0 0 0 1.432 0L19.104 8.096a1.015 1.015 0 0 0 0-1.432zM8.457 16.719l-5.176-5.178L11.423 3.4l5.176 5.176-8.142 8.143z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-time-slot'> - <path d="M10 .4A9.6 9.6 0 0 0 .4 10a9.6 9.6 0 1 0 19.2-.001C19.6 4.698 15.301.4 10 .4zm0 17.199a7.6 7.6 0 1 1 0-15.2V10l6.792-3.396A7.548 7.548 0 0 1 17.6 10a7.6 7.6 0 0 1-7.6 7.599z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tools'> - <path d="M3.135 6.89c.933-.725 1.707-.225 2.74.971.116.135.272-.023.361-.1.088-.078 1.451-1.305 1.518-1.361.066-.059.146-.169.041-.292a36.238 36.238 0 0 1-.743-.951c-1.808-2.365 4.946-3.969 3.909-3.994-.528-.014-2.646-.039-2.963-.004-1.283.135-2.894 1.334-3.705 1.893-1.061.726-1.457 1.152-1.522 1.211-.3.262-.048.867-.592 1.344-.575.503-.934.122-1.267.414-.165.146-.627.492-.759.607-.133.117-.157.314-.021.471 0 0 1.264 1.396 1.37 1.52.105.122.391.228.567.071.177-.156.632-.553.708-.623.078-.066-.05-.861.358-1.177zm5.708.517c-.12-.139-.269-.143-.397-.029L7.012 8.63a.289.289 0 0 0-.027.4l8.294 9.439c.194.223.53.246.751.053l.97-.813a.54.54 0 0 0 .052-.758L8.843 7.407zM19.902 3.39c-.074-.494-.33-.391-.463-.182-.133.211-.721 1.102-.963 1.506-.24.4-.832 1.191-1.934.41-1.148-.811-.749-1.377-.549-1.758.201-.383.818-1.457.907-1.59.089-.135-.015-.527-.371-.363-.357.164-2.523 1.025-2.823 2.26-.307 1.256.257 2.379-.85 3.494l-1.343 1.4 1.349 1.566 1.654-1.57c.394-.396 1.236-.781 1.998-.607 1.633.369 2.524-.244 3.061-1.258.482-.906.402-2.814.327-3.308zM2.739 17.053a.538.538 0 0 0 0 .758l.951.93c.208.209.538.121.746-.088l4.907-4.824-1.503-1.714-5.101 4.938z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-traffic-cone'> - <path d="M10 12.078c2.39 0 4.392-.812 4.513-1.873l-1.125-3.152c-.264.761-1.725 1.301-3.388 1.301s-3.124-.54-3.388-1.301l-1.124 3.152c.121 1.061 2.122 1.873 4.512 1.873zm0-6.705c1.124 0 2.167-.348 2.473-.889-.421-1.182-.782-2.197-1.011-2.836C11.31 1.221 10.621 1 10 1s-1.31.221-1.462.648L7.527 4.484c.306.541 1.35.889 2.473.889zm8.78 7.693l-3.755-1.514.433 1.207c-.022 1.279-2.504 2.299-5.458 2.299-2.953 0-5.437-1.019-5.458-2.299l.433-1.207-3.755 1.514c-1.053.424-1.098 1.209-.098 1.744l7.062 3.787c.998.535 2.633.535 3.632 0l7.063-3.787c.999-.535.954-1.32-.099-1.744z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-trash'> - <path d="M3.389 7.113L4.49 18.021c.061.461 2.287 1.977 5.51 1.979 3.225-.002 5.451-1.518 5.511-1.979l1.102-10.908C14.929 8.055 12.412 8.5 10 8.5c-2.41 0-4.928-.445-6.611-1.387zm9.779-5.603l-.859-.951C11.977.086 11.617 0 10.916 0H9.085c-.7 0-1.061.086-1.392.559l-.859.951C4.264 1.959 2.4 3.15 2.4 4.029v.17C2.4 5.746 5.803 7 10 7c4.198 0 7.601-1.254 7.601-2.801v-.17c0-.879-1.863-2.07-4.433-2.519zM12.07 4.34L11 3H9L7.932 4.34h-1.7s1.862-2.221 2.111-2.522c.19-.23.384-.318.636-.318h2.043c.253 0 .447.088.637.318.248.301 2.111 2.522 2.111 2.522h-1.7z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tree'> - <path d="M20 10c0-1.361-.758-2.616-2.031-3.622-.002-.001-.004-.001-.005-.003C17.602 2.803 14.177 0 10 0S2.398 2.803 2.036 6.375c-.001.002-.003.002-.005.003C.758 7.384 0 8.639 0 10c0 3.112 3.947 5.669 9 5.97V17c0 1-1.821 1.911-1.821 1.911a.227.227 0 0 0-.109.277S7.375 20 8 20s1.124-.5 2.374-.5 2.439.432 2.439.432a.342.342 0 0 0 .329-.073l.717-.717c.078-.078.058-.173-.046-.212 0 0-1.812-.68-1.812-1.93v-1.121C16.565 15.324 20 12.903 20 10zM2 10c0-1.019.768-1.945 2.022-2.651C4.012 7.233 4 7.117 4 7c0-2.762 2.687-5 6-5s6 2.238 6 5c0 .117-.012.233-.021.349C17.232 8.055 18 8.981 18 10c0 1.864-2.551 3.424-5.999 3.869v-.668a.53.53 0 0 1 .145-.337l1.833-1.726a.534.534 0 0 0 .146-.337V9.95c0-.11-.078-.155-.172-.099l-1.779 1.047c-.096.056-.173.012-.173-.099V7.2c0-.11-.085-.172-.19-.137l-2.621.874a.297.297 0 0 0-.189.263v2.6c0 .11-.079.158-.177.107L6.802 9.843a.289.289 0 0 0-.318.048l-.342.342a.185.185 0 0 0 .009.273l2.7 2.361c.083.073.15.222.15.332v.765C5.056 13.719 2 12.04 2 10z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-down'> - <path d="M5 6h10l-5 9-5-9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-left'> - <path d="M14 5v10l-9-5 9-5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-right'> - <path d="M15 10l-9 5V5l9 5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-triangle-up'> - <path d="M15 14H5l5-9 5 9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tripadvisor'> - <path d="M20 6.009h-2.829C15.211 4.675 12.813 4 10 4s-5.212.675-7.171 2.009H0c.428.42.827 1.34.993 2.04A4.954 4.954 0 0 0 0 11.008c0 2.757 2.243 5 5 5a4.97 4.97 0 0 0 3.423-1.375L10 17l1.577-2.366A4.97 4.97 0 0 0 15 16.01c2.757 0 5-2.243 5-5 0-1.112-.377-2.13-.993-2.96.166-.7.565-1.62.993-2.04zm-15 8.4c-1.875 0-3.4-1.525-3.4-3.4s1.525-3.4 3.4-3.4 3.4 1.525 3.4 3.4-1.525 3.4-3.4 3.4zm5-3.4a5.008 5.008 0 0 0-4.009-4.9C7.195 5.704 8.53 5.5 10 5.5s2.805.204 4.009.61A5.008 5.008 0 0 0 10 11.008zm5 3.4c-1.875 0-3.4-1.525-3.4-3.4s1.525-3.4 3.4-3.4 3.4 1.525 3.4 3.4-1.525 3.4-3.4 3.4zM5 8.86c-1.185 0-2.15.964-2.15 2.15s.965 2.15 2.15 2.15 2.15-.964 2.15-2.15-.965-2.15-2.15-2.15zm0 2.791a.65.65 0 1 1 0-1.3.65.65 0 0 1 0 1.3zm10-2.791c-1.185 0-2.15.964-2.15 2.15s.965 2.15 2.15 2.15 2.15-.964 2.15-2.15-.965-2.15-2.15-2.15zm0 2.791a.65.65 0 1 1 0-1.3.65.65 0 0 1 0 1.3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-trophy'> - <path d="M11.18 14.356c0-1.451 1.1-2.254 2.894-3.442C16.268 9.458 19 7.649 19 3.354a.703.703 0 0 0-.709-.699h-3.43C14.377 1.759 12.932.8 10 .8c-2.934 0-4.377.959-4.862 1.855H1.707A.703.703 0 0 0 1 3.354c0 4.295 2.73 6.104 4.926 7.559 1.794 1.188 2.894 1.991 2.894 3.442v1.311c-1.884.209-3.269.906-3.269 1.736 0 .994 1.992 1.799 4.449 1.799s4.449-.805 4.449-1.799c0-.83-1.385-1.527-3.269-1.736v-1.31zM13.957 9.3c.566-1.199 1.016-2.826 1.088-5.246h2.51c-.24 2.701-1.862 4.064-3.598 5.246zM10 2.026c2.732-.002 3.799 1.115 3.798 1.529 0 .418-1.066 1.533-3.798 1.535-2.732-.001-3.799-1.116-3.799-1.534C6.2 3.142 7.268 2.024 10 2.026zM2.445 4.054h2.509c.073 2.42.521 4.047 1.089 5.246-1.736-1.182-3.359-2.545-3.598-5.246z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tumblr-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm2.577 13.741a5.508 5.508 0 0 1-1.066.395 4.543 4.543 0 0 1-1.031.113c-.42 0-.791-.055-1.114-.162a2.373 2.373 0 0 1-.826-.459 1.651 1.651 0 0 1-.474-.633c-.088-.225-.132-.549-.132-.973V9.16H6.918V7.846c.359-.119.67-.289.927-.512.257-.221.464-.486.619-.797.156-.31.263-.707.322-1.185h1.307v2.35h2.18V9.16h-2.18v2.385c0 .539.028.885.085 1.037a.7.7 0 0 0 .315.367c.204.123.437.185.697.185.466 0 .928-.154 1.388-.461v1.468z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tumblr'> - <path d="M15.6 18.196c-.777.371-1.48.631-2.109.781a8.92 8.92 0 0 1-2.043.223c-.831 0-1.566-.107-2.205-.318a4.757 4.757 0 0 1-1.635-.908c-.451-.395-.764-.812-.938-1.254-.174-.443-.261-1.086-.261-1.926V8.339H4.4V5.735c.714-.234 1.326-.57 1.835-1.01a5.04 5.04 0 0 0 1.227-1.58c.308-.613.519-1.396.636-2.345h2.585v4.652h4.314v2.887h-4.314v4.719c0 1.066.056 1.752.168 2.055.111.303.319.545.622.725.403.244.863.367 1.381.367.92 0 1.836-.303 2.746-.908v2.899z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-tv'> - <path d="M18 1H2C.899 1 0 1.9 0 3v11c0 1.1.882 2.178 1.961 2.393l4.372.875S2.57 19 5 19h10c2.43 0-1.334-1.732-1.334-1.732l4.373-.875C19.117 16.178 20 15.1 20 14V3c0-1.1-.9-2-2-2zm0 13H2V3h16v11z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-twitter-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.905 7.864c.004.082.005.164.005.244 0 2.5-1.901 5.381-5.379 5.381a5.335 5.335 0 0 1-2.898-.85c.147.018.298.025.451.025.886 0 1.701-.301 2.348-.809a1.895 1.895 0 0 1-1.766-1.312 1.9 1.9 0 0 0 .853-.033 1.892 1.892 0 0 1-1.517-1.854v-.023c.255.141.547.227.857.237a1.89 1.89 0 0 1-.585-2.526 5.376 5.376 0 0 0 3.897 1.977 1.891 1.891 0 0 1 3.222-1.725 3.797 3.797 0 0 0 1.2-.459 1.9 1.9 0 0 1-.831 1.047 3.799 3.799 0 0 0 1.086-.299 3.834 3.834 0 0 1-.943.979z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-twitter'> - <path d="M17.316 6.246c.008.162.011.326.011.488 0 4.99-3.797 10.742-10.74 10.742-2.133 0-4.116-.625-5.787-1.697a7.577 7.577 0 0 0 5.588-1.562 3.779 3.779 0 0 1-3.526-2.621 3.858 3.858 0 0 0 1.705-.065 3.779 3.779 0 0 1-3.028-3.703v-.047a3.766 3.766 0 0 0 1.71.473 3.775 3.775 0 0 1-1.168-5.041 10.716 10.716 0 0 0 7.781 3.945 3.813 3.813 0 0 1-.097-.861 3.773 3.773 0 0 1 3.774-3.773 3.77 3.77 0 0 1 2.756 1.191 7.602 7.602 0 0 0 2.397-.916 3.789 3.789 0 0 1-1.66 2.088 7.55 7.55 0 0 0 2.168-.594 7.623 7.623 0 0 1-1.884 1.953z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-typing'> - <path d="M16 4H4c-1.101 0-2 .9-2 2v7c0 1.1.899 2 2 2h4l4 3v-3h4c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM6 10.6a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2zm4 0a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2zm4 0a1.1 1.1 0 1 1 0-2.2 1.1 1.1 0 0 1 0 2.2z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-uninstall'> - <path d="M19.059 10.898l-3.171-7.927A1.543 1.543 0 0 0 14.454 2H5.546c-.632 0-1.2.384-1.434.971L.941 10.898a4.25 4.25 0 0 0-.246 2.272l.59 3.539A1.544 1.544 0 0 0 2.808 18h14.383c.755 0 1.399-.546 1.523-1.291l.59-3.539a4.22 4.22 0 0 0-.245-2.272zM5.52 4.786l1.639-1.132 2.868 2.011 2.868-2.011 1.639 1.132-2.869 2.033 2.928 2.06-1.639 1.171-2.927-2.076L7.1 10.05 5.461 8.879l2.928-2.06L5.52 4.786zm11.439 10.459a.902.902 0 0 1-.891.755H3.932a.902.902 0 0 1-.891-.755l-.365-2.193A.902.902 0 0 1 3.567 12h12.867c.558 0 .983.501.891 1.052l-.366 2.193z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-unread'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17 3a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-4.5 1h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 5h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5zm0 5h-11a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-untag'> - <path d="M1 14.742l4.945-.709L5.239 19l5.962-5.985-4.069-4.429L1 14.742zm17.664-9.221c.391-.393.5-.945 0-1.419l-2.826-2.839c-.279-.308-1.021-.392-1.412 0l-3.766 3.78 4.068 4.429 3.936-3.951zm.042 9.772l-14.001-14a.999.999 0 1 0-1.414 1.414l14.001 14a.996.996 0 0 0 1.414 0 .999.999 0 0 0 0-1.414z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-upload-to-cloud'> - <path d="M15.213 6.639c-.276 0-.546.025-.809.068C13.748 4.562 11.716 3 9.309 3c-2.939 0-5.32 2.328-5.32 5.199 0 .256.02.508.057.756a3.567 3.567 0 0 0-.429-.027C1.619 8.928 0 10.51 0 12.463S1.619 16 3.617 16H8v-4H5.5L10 7l4.5 5H12v4h3.213C17.856 16 20 13.904 20 11.32c0-2.586-2.144-4.681-4.787-4.681z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-upload'> - <path d="M8 12h4V6h3l-5-5-5 5h3v6zm11.338 1.532c-.21-.224-1.611-1.723-2.011-2.114A1.503 1.503 0 0 0 16.285 11h-1.757l3.064 2.994h-3.544a.274.274 0 0 0-.24.133L12.992 16H7.008l-.816-1.873a.276.276 0 0 0-.24-.133H2.408L5.471 11H3.715c-.397 0-.776.159-1.042.418-.4.392-1.801 1.891-2.011 2.114-.489.521-.758.936-.63 1.449l.561 3.074c.128.514.691.936 1.252.936h16.312c.561 0 1.124-.422 1.252-.936l.561-3.074c.126-.513-.142-.928-.632-1.449z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-user'> - <path d="M7.725 2.146c-1.016.756-1.289 1.953-1.239 2.59.064.779.222 1.793.222 1.793s-.313.17-.313.854c.109 1.717.683.976.801 1.729.284 1.814.933 1.491.933 2.481 0 1.649-.68 2.42-2.803 3.334C3.196 15.845 1 17 1 19v1h18v-1c0-2-2.197-3.155-4.328-4.072-2.123-.914-2.801-1.684-2.801-3.334 0-.99.647-.667.932-2.481.119-.753.692-.012.803-1.729 0-.684-.314-.854-.314-.854s.158-1.014.221-1.793c.065-.817-.398-2.561-2.3-3.096-.333-.34-.558-.881.466-1.424-2.24-.105-2.761 1.067-3.954 1.929z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-users'> - <path d="M15.989 19.129c0-2.246-2.187-3.389-4.317-4.307-2.123-.914-2.801-1.684-2.801-3.334 0-.989.648-.667.932-2.481.12-.752.692-.012.802-1.729 0-.684-.313-.854-.313-.854s.159-1.013.221-1.793c.064-.817-.398-2.56-2.301-3.095-.332-.341-.557-.882.467-1.424-2.24-.104-2.761 1.068-3.954 1.93-1.015.756-1.289 1.953-1.24 2.59.065.78.223 1.793.223 1.793s-.314.17-.314.854c.11 1.718.684.977.803 1.729.284 1.814.933 1.492.933 2.481 0 1.65-.212 2.21-2.336 3.124C.663 15.53 0 17 .011 19.129.014 19.766 0 20 0 20h16s-.011-.234-.011-.871zm2.539-5.764c-1.135-.457-1.605-1.002-1.605-2.066 0-.641.418-.432.602-1.603.077-.484.447-.008.518-1.115 0-.441-.202-.551-.202-.551s.103-.656.143-1.159c.05-.627-.364-2.247-2.268-2.247-1.903 0-2.318 1.62-2.269 2.247.042.502.144 1.159.144 1.159s-.202.109-.202.551c.071 1.107.441.631.518 1.115.184 1.172.602.963.602 1.603 0 1.064-.438 1.562-1.809 2.152-.069.029-.12.068-.183.102 1.64.712 4.226 1.941 4.838 4.447H20v-2.318c0-1-.273-1.834-1.472-2.317z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-v-card'> - <path d="M19 3H1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm-6 4h4v1h-4V7zm-2 7.803a2.31 2.31 0 0 0-.529-.303c-1.18-.508-2.961-1.26-2.961-2.176 0-.551.359-.371.518-1.379.066-.418.385-.007.445-.961 0-.38-.174-.475-.174-.475s.088-.562.123-.996c.036-.453-.221-1.8-1.277-2.097-.186-.188-.311-.111.258-.412-1.244-.059-1.534.592-2.196 1.071-.564.42-.717 1.085-.689 1.439.037.433.125.996.125.996s-.175.094-.175.474c.061.954.38.543.445.961.158 1.008.519.828.519 1.379 0 .916-1.781 1.668-2.961 2.176a2.503 2.503 0 0 0-.471.26V5h9v9.803zM18 11h-5v-1h5v1z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-video-camera'> - <path d="M10.5 10a2.5 2.5 0 1 1-5.001-.001A2.5 2.5 0 0 1 10.5 10zM16 4v12c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2zm-3.5 6a4.5 4.5 0 1 0-9 0 4.5 4.5 0 0 0 9 0zm6.715-4.914L17 6.562v7l2.215 1.477a.505.505 0 0 0 .785-.42V5.506a.505.505 0 0 0-.785-.42z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-video'> - <path d="M20 5V3.799A.798.798 0 0 0 19.201 3H.801A.8.8 0 0 0 0 3.799V5h2v2H0v2h2v2H0v2h2v2H0v1.199A.8.8 0 0 0 .801 17h18.4a.8.8 0 0 0 .799-.801V15h-2v-2h2v-2h-2V9h2V7h-2V5h2zM8 13V7l5 3-5 3z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vimeo-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm4.401 7.75c-.508 2.916-3.348 5.387-4.201 5.951-.854.562-1.634-.227-1.916-.824-.324-.682-1.293-4.373-1.547-4.68-.254-.306-1.016.307-1.016.307l-.369-.494s1.547-1.883 2.724-2.117c1.248-.25 1.246 1.951 1.546 3.174.291 1.183.486 1.859.739 1.859.254 0 .739-.658 1.269-1.67.532-1.012-.022-1.906-1.061-1.27.415-2.54 4.34-3.152 3.832-.236z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vimeo'> - <path d="M18.91 5.84c-1.006 5.773-6.625 10.66-8.315 11.777-1.69 1.115-3.233-.447-3.792-1.631-.641-1.347-2.559-8.656-3.062-9.261-.503-.606-2.01.605-2.01.605L1 6.354s3.061-3.725 5.391-4.191c2.47-.493 2.466 3.864 3.06 6.282.574 2.342.961 3.68 1.463 3.68.502 0 1.462-1.305 2.512-3.305 1.053-2.004-.045-3.772-2.101-2.514.823-5.027 8.591-6.236 7.585-.466z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vine-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm1.908 6.451c-.37 0-.632.352-.632 1.028 0 1.378.875 2.171 2.011 2.171.201 0 .427-.024.658-.077v1.072a5.1 5.1 0 0 1-1.074.123c-.755 1.591-2.113 2.951-2.565 3.208-.29.163-.561.172-.878-.018-.559-.333-2.668-2.065-3.373-7.508h1.53c.387 3.268 1.325 4.941 2.363 6.196a8.575 8.575 0 0 0 1.552-2.193c-1.025-.522-1.648-1.663-1.648-2.992 0-1.345.775-2.362 2.102-2.362 1.287 0 1.991.802 1.991 2.181 0 .514-.109 1.098-.314 1.548-.957.188-1.305-.423-1.305-.423.07-.236.168-.635.168-.998.001-.64-.234-.956-.586-.956z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vine'> - <path d="M17.452 9.951a5.587 5.587 0 0 1-1.244.145c-2.145 0-3.797-1.496-3.797-4.102 0-1.277.493-1.941 1.192-1.941.664 0 1.107.596 1.107 1.805 0 .688-.184 1.44-.32 1.887 0 0 .66 1.152 2.469.799.385-.852.593-1.956.593-2.924 0-2.605-1.33-4.119-3.763-4.119-2.504 0-3.968 1.922-3.968 4.461 0 2.512 1.175 4.668 3.113 5.651-.815 1.629-1.852 3.065-2.933 4.146-1.961-2.371-3.734-5.534-4.463-11.706h-2.89c1.335 10.279 5.319 13.553 6.373 14.181.596.358 1.108.341 1.654.034.855-.485 3.422-3.054 4.847-6.061a9.565 9.565 0 0 0 2.03-.231V9.951z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vinyl'> - <path d="M9.999.8A9.2 9.2 0 0 0 .8 10.001a9.2 9.2 0 0 0 18.399 0A9.2 9.2 0 0 0 9.999.8zM10 13.001a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk-alternitive'> - <path d="M19 17V3c0-1.1-.903-2-2.005-2H3.005C1.855 1 1 1.853 1 3v14c0 1.148.855 2 2.005 2h13.99A2.008 2.008 0 0 0 19 17zm-3.816-5.393s1.132 1.117 1.411 1.635c.008.011.011.021.014.025.113.19.142.34.085.45-.094.183-.414.275-.523.283h-1.999c-.14 0-.43-.036-.782-.279-.27-.188-.537-.499-.797-.802-.388-.45-.724-.84-1.062-.84a.383.383 0 0 0-.126.021c-.257.082-.583.447-.583 1.422 0 .305-.24.479-.41.479h-.916c-.312 0-1.937-.109-3.376-1.628-1.766-1.86-3.352-5.591-3.366-5.624-.1-.241.107-.372.332-.372h2.02c.271 0 .358.164.42.311.07.167.334.841.766 1.599.703 1.233 1.136 1.735 1.481 1.735a.378.378 0 0 0 .184-.049c.451-.249.367-1.857.347-2.189 0-.063-.001-.719-.231-1.034-.166-.228-.447-.315-.617-.348a.738.738 0 0 1 .266-.226C8.031 6.022 8.588 6 9.142 6h.308c.601.008.757.047.974.102.439.105.448.39.409 1.36-.011.276-.023.589-.023.956 0 .079-.003.166-.003.256-.014.496-.03 1.057.32 1.287a.289.289 0 0 0 .151.044c.122 0 .487 0 1.476-1.697.435-.749.77-1.633.793-1.699a.528.528 0 0 1 .148-.183.347.347 0 0 1 .166-.039h2.375c.26 0 .436.039.469.138.057.159-.011.644-1.096 2.11l-.483.64c-.984 1.288-.984 1.354.058 2.332z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm3.692 10.831s.849.838 1.058 1.227c.006.008.009.016.011.02.085.143.105.254.063.337-.07.138-.31.206-.392.212h-1.5c-.104 0-.322-.027-.586-.209-.203-.142-.403-.375-.598-.602-.291-.338-.543-.63-.797-.63a.305.305 0 0 0-.095.015c-.192.062-.438.336-.438 1.066 0 .228-.18.359-.307.359h-.687c-.234 0-1.453-.082-2.533-1.221-1.322-1.395-2.512-4.193-2.522-4.219-.075-.181.08-.278.249-.278h1.515c.202 0 .268.123.314.232.054.127.252.632.577 1.2.527.926.85 1.302 1.109 1.302a.3.3 0 0 0 .139-.036c.338-.188.275-1.393.26-1.643 0-.047-.001-.539-.174-.775-.124-.171-.335-.236-.463-.26a.55.55 0 0 1 .199-.169c.232-.116.65-.133 1.065-.133h.231c.45.006.566.035.729.076.33.079.337.292.308 1.021-.009.207-.018.441-.018.717 0 .06-.003.124-.003.192-.01.371-.022.792.24.965a.216.216 0 0 0 .114.033c.091 0 .365 0 1.107-1.273a9.718 9.718 0 0 0 .595-1.274c.015-.026.059-.106.111-.137a.266.266 0 0 1 .124-.029h1.781c.194 0 .327.029.352.104.044.119-.008.482-.821 1.583l-.363.479c-.737.966-.737 1.015.046 1.748z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-vk'> - <path fill-rule="evenodd" clip-rule="evenodd" d="M17.802 12.298s1.617 1.597 2.017 2.336a.127.127 0 0 1 .018.035c.163.273.203.487.123.645-.135.261-.592.392-.747.403h-2.858c-.199 0-.613-.052-1.117-.4-.385-.269-.768-.712-1.139-1.145-.554-.643-1.033-1.201-1.518-1.201a.548.548 0 0 0-.18.03c-.367.116-.833.639-.833 2.032 0 .436-.344.684-.585.684H9.674c-.446 0-2.768-.156-4.827-2.327C2.324 10.732.058 5.4.036 5.353c-.141-.345.155-.533.475-.533h2.886c.387 0 .513.234.601.444.102.241.48 1.205 1.1 2.288 1.004 1.762 1.621 2.479 2.114 2.479a.527.527 0 0 0 .264-.07c.644-.354.524-2.654.494-3.128 0-.092-.001-1.027-.331-1.479-.236-.324-.638-.45-.881-.496.065-.094.203-.238.38-.323.441-.22 1.238-.252 2.029-.252h.439c.858.012 1.08.067 1.392.146.628.15.64.557.585 1.943-.016.396-.033.842-.033 1.367 0 .112-.005.237-.005.364-.019.711-.044 1.512.458 1.841a.41.41 0 0 0 .217.062c.174 0 .695 0 2.108-2.425.62-1.071 1.1-2.334 1.133-2.429.028-.053.112-.202.214-.262a.479.479 0 0 1 .236-.056h3.395c.37 0 .621.056.67.196.082.227-.016.92-1.566 3.016-.261.349-.49.651-.691.915-1.405 1.844-1.405 1.937.083 3.337z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-voicemail'> - <path d="M15.4 5.801a4.6 4.6 0 0 0-3.795 7.2H8.394A4.6 4.6 0 1 0 4.6 15h10.8a4.6 4.6 0 0 0 0-9.199zM2 10.4a2.6 2.6 0 1 1 5.2 0 2.6 2.6 0 0 1-5.2 0zM15.4 13a2.6 2.6 0 1 1-.002-5.2A2.6 2.6 0 0 1 15.4 13z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-wallet'> - <path d="M16 6H3.5v-.5l11-.88v.88H16V4c0-1.1-.891-1.872-1.979-1.717L3.98 3.717C2.891 3.873 2 4.9 2 6v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm-1.5 7.006a1.5 1.5 0 1 1 .001-3.001 1.5 1.5 0 0 1-.001 3.001z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-warning'> - <path d="M19.511 17.98L10.604 1.348a.697.697 0 0 0-1.208 0L.49 17.98a.675.675 0 0 0 .005.68c.125.211.352.34.598.34h17.814a.694.694 0 0 0 .598-.34.677.677 0 0 0 .006-.68zM11 17H9v-2h2v2zm0-3.5H9V7h2v6.5z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-water'> - <path d="M9.882 9.093c-.511 4.115-3.121 4.847-3.121 7.708C6.761 18.567 8.244 20 10 20c1.756 0 3.238-1.434 3.238-3.199 0-2.861-2.61-3.593-3.121-7.708-.016-.123-.219-.123-.235 0zm-5.999-9C3.372 4.208.762 4.939.762 7.801.762 9.566 2.244 11 4 11s3.238-1.434 3.238-3.199c0-2.861-2.61-3.593-3.121-7.708-.015-.123-.219-.123-.234 0zm12 0c-.511 4.115-3.121 4.847-3.121 7.708C12.762 9.566 14.244 11 16 11s3.238-1.434 3.238-3.199c0-2.861-2.61-3.593-3.121-7.708-.016-.123-.219-.123-.234 0z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-windows-store'> - <path d="M9.5 3.241V9.5H18V2L9.5 3.241zM2 9.5h6.5V3.387L2 4.336V9.5zm7.5 7.259L18 18v-7.5H9.5v6.259zM2 15.664l6.5.949V10.5H2v5.164z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-xing-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zM8.063 11.5l-.153.309c-.071.138-.236.191-.347.191H6.149c-.25 0-.239-.191-.178-.316l.092-.184 1.125-2.25L6.563 8l-.092-.185c-.061-.125-.072-.315.178-.315h1.414c.111 0 .276.053.347.19l.153.31.625 1.25-1.125 2.25zm5.967-5.685L13.938 6l-2.5 5 1.5 3 .092.184c.062.125.072.316-.178.316h-1.414c-.112 0-.275-.053-.345-.191L10.938 14l-1.5-3 2.5-5 .155-.31c.069-.138.232-.19.345-.19h1.414c.25 0 .239.19.178.315z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-xing'> - <path d="M17.703 1h-2.828c-.223 0-.553.105-.69.381s-.31.619-.31.619l-5 10 3 6 .31.619c.138.275.467.381.69.381h2.828c.5 0 .48-.381.355-.631L15.875 18l-3-6 5-10 .184-.369c.125-.25.144-.631-.356-.631zM6.815 5.381C6.678 5.105 6.348 5 6.125 5H3.297c-.5 0-.48.381-.355.631L3.125 6l1.25 2.5-2.25 4.5-.184.369c-.125.25-.144.631.356.631h2.828c.223 0 .553-.106.691-.381L6.125 13l2.25-4.5L7.125 6l-.31-.619z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-yelp'> - <path d="M12.538 12.471l4.523 1.466s.647.119.64.552c-.004.305-.197.652-.197.652l-1.91 2.756s-.341.286-.686.286c-.344 0-.741-.537-.741-.537l-2.417-4.073s-.272-.594.05-.921c.295-.3.738-.181.738-.181zM11.57 10.6c.231.396.87.281.87.281l4.513-1.331s.615-.253.703-.589c.086-.337-.102-.743-.102-.743l-2.157-2.564s-.187-.324-.575-.357c-.428-.037-.691.486-.691.486l-2.55 4.05c.001-.001-.224.402-.011.767zM9.438 9.021c.531-.132.616-.911.616-.911l-.036-6.485s-.08-.8-.436-1.017c-.559-.342-.724-.164-.884-.14L4.951 1.873s-.367.123-.558.432c-.273.437.277 1.079.277 1.079l3.894 5.358s.385.401.874.279zm-.925 2.624c.013-.5-.595-.801-.595-.801L3.89 8.791s-.597-.248-.887-.075c-.221.132-.418.372-.437.583l-.262 3.259s-.039.565.106.822c.205.364.881.111.881.111l4.702-1.049c.182-.124.502-.136.52-.797zm1.169 1.759c-.404-.209-.887.224-.887.224l-3.148 3.498s-.393.535-.293.863c.094.308.25.461.47.569l3.162 1.007s.383.08.674-.005c.412-.121.336-.772.336-.772l.071-4.736c0 .001-.016-.455-.385-.648z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youko-with-circle'> - <path d="M10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm-.404 9.08C9 10.83 8.51 11.96 7.933 13.265c-.283.639-.503 1.345-1.021 1.684-2.144.135-.544-2.254-.227-3.099-.487-.93-1.126-2.011-1.701-3.022-.263-.46-.917-1.34-.265-1.836.241-.184.777-.189 1.02 0 .758.586 1.187 2.186 1.815 2.907.233-.4.442-.948.681-1.492.217-.494.396-1.19.718-1.415.494-.345 1.26-.045 1.361.459.127.636-.47 1.466-.718 2.027zm4.99 3.289c-.396-.086-.757-.647-1.133-.995-.393-.361-.827-.689-1.135-.994-.21-.32-.151.217-.151.535v.919c-.041.328-.218.519-.53.573h-.453c-.328-.038-.464-.27-.53-.573V7.988c.006-.812 1.507-.812 1.513 0v1.491c.242-.124.388-.346.567-.535a2.59 2.59 0 0 0 .416-.421c.255-.227.494-.469.718-.727.299-.626 1.462-.583 1.55.192.122 1.072-1.322 1.45-1.588 2.065.395.537 1.309.925 1.626 1.53.3.573-.058 1.362-.87 1.186z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youko'> - <path d="M19.418 12.08c-.548-1.046-2.126-1.715-2.806-2.642.459-1.061 2.951-1.714 2.74-3.565-.151-1.337-2.16-1.411-2.675-.33-.386.445-.8.863-1.24 1.254-.212.27-.451.512-.718.726-.31.326-.56.71-.979.925V5.873c-.01-1.4-2.6-1.4-2.61 0v7.33c.113.522.348.923.913.99h.784c.537-.095.843-.425.913-.99v-1.586c0-.55-.101-1.476.261-.924.532.526 1.28 1.093 1.958 1.716.65.6 1.273 1.569 1.958 1.717 1.401.304 2.02-1.057 1.501-2.046zM8.193 4.156c-.556.389-.866 1.589-1.24 2.443-.411.94-.773 1.886-1.174 2.575C4.693 7.93 3.953 5.168 2.646 4.156c-.421-.326-1.346-.317-1.762 0-1.126.857.004 2.374.457 3.17.994 1.744 2.096 3.611 2.937 5.216C3.73 14 .969 18.123 4.669 17.89c.896-.586 1.275-1.804 1.762-2.906.996-2.256 1.842-4.205 2.872-6.537.428-.97 1.459-2.402 1.24-3.5-.175-.87-1.498-1.387-2.35-.792z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youtube-with-circle'> - <path d="M11.603 9.833L9.357 8.785C9.161 8.694 9 8.796 9 9.013v1.974c0 .217.161.319.357.228l2.245-1.048c.197-.092.197-.242.001-.334zM10 .4C4.698.4.4 4.698.4 10s4.298 9.6 9.6 9.6 9.6-4.298 9.6-9.6S15.302.4 10 .4zm0 13.5c-4.914 0-5-.443-5-3.9s.086-3.9 5-3.9 5 .443 5 3.9-.086 3.9-5 3.9z"></path> - </symbol><symbol viewBox='0 0 20 20' id='entypo-youtube'> - <path d="M10 2.3C.172 2.3 0 3.174 0 10s.172 7.7 10 7.7 10-.874 10-7.7-.172-7.7-10-7.7zm3.205 8.034l-4.49 2.096c-.393.182-.715-.022-.715-.456V8.026c0-.433.322-.638.715-.456l4.49 2.096c.393.184.393.484 0 .668z"></path> - </symbol></svg> \ No newline at end of file diff --git a/public/assets/images/global/the-logo.svg b/public/assets/images/global/the-logo.svg deleted file mode 100644 index f8d21b5..0000000 --- a/public/assets/images/global/the-logo.svg +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="100%" height="100%" viewBox="0 0 486 678" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> - <g id="Logo" transform="matrix(1.36867,0,0,1.36867,-351.696,-71.9183)"> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-99.4797)"> - <path d="M93.67,140.92L93.67,140.921C105.569,140.921 115.216,150.567 115.216,162.467L115.216,172.724L115.216,172.724L115.216,182.262C115.216,194.161 105.569,203.808 93.669,203.808C81.976,203.217 74.12,195.969 72.237,184.474L72.282,182.737L72.282,162.467L72.205,160.847C72.775,149.587 82.728,141.121 93.67,140.92Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M93.67,211.678L93.67,211.678C105.569,211.678 115.216,221.324 115.216,233.224L115.216,243.481L115.216,243.481L115.216,253.019C115.216,264.919 105.569,274.565 93.669,274.565C81.976,273.975 74.12,266.726 72.237,255.232L72.282,253.495L72.282,233.224L72.205,231.604C72.775,220.344 82.728,211.878 93.67,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M93.67,69.288L93.67,69.288C105.569,69.288 115.216,78.934 115.216,90.834L115.216,101.091L115.216,101.091L115.216,110.629C115.216,122.528 105.569,132.175 93.669,132.175C81.976,131.584 74.12,124.336 72.237,112.842L72.282,111.105L72.282,90.834L72.205,89.214C72.775,77.954 82.728,69.488 93.67,69.288Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-104.112)"> - <path d="M38.059,142.92L38.059,142.921C49.958,142.921 59.605,152.567 59.605,164.467L59.605,174.724L59.605,174.724L59.605,184.262C59.605,196.161 49.958,205.808 38.058,205.808C26.365,205.217 18.509,197.969 16.626,186.474L16.671,184.737L16.671,164.467L16.594,162.847C17.164,151.587 27.117,143.121 38.059,142.92Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-104.112)"> - <path d="M148.331,142.92L148.331,142.921C160.23,142.921 169.877,152.567 169.877,164.467L169.877,174.724L169.877,174.724L169.877,184.262C169.877,196.161 160.23,205.808 148.331,205.808C136.637,205.217 128.782,197.969 126.898,186.474L126.943,184.737L126.943,164.467L126.867,162.847C127.436,151.587 137.389,143.121 148.331,142.92Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M38.059,211.678L38.059,211.678C49.958,211.678 59.605,221.324 59.605,233.224L59.605,243.481L59.605,243.481L59.605,253.019C59.605,264.919 49.958,274.565 38.058,274.565C26.365,273.975 18.509,266.726 16.626,255.232L16.671,253.495L16.671,233.224L16.594,231.604C17.164,220.344 27.117,211.878 38.059,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,-437.697)"> - <path d="M148.331,211.678L148.331,211.678C160.23,211.678 169.877,221.324 169.877,233.224L169.877,243.481L169.877,243.481L169.877,253.019C169.877,264.919 160.23,274.565 148.331,274.565C136.637,273.975 128.782,266.726 126.898,255.232L126.943,253.495L126.943,233.224L126.867,231.604C127.436,220.344 137.389,211.878 148.331,211.678Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M38.059,69.288L38.059,69.288C49.958,69.288 59.605,78.934 59.605,90.834L59.605,101.091L59.605,101.091L59.605,110.629C59.605,122.528 49.958,132.175 38.058,132.175C26.365,131.584 18.509,124.336 16.626,112.842L16.671,111.105L16.671,90.834L16.594,89.214C17.164,77.954 27.117,69.488 38.059,69.288Z" style="fill:rgb(252,99,153);fill-rule:nonzero;"/> - </g> - <g transform="matrix(2.31599,0,0,2.31599,218.53,241.338)"> - <path d="M148.331,69.288L148.331,69.288C160.23,69.288 169.877,78.934 169.877,90.834L169.877,101.091L169.877,101.091L169.877,110.629C169.877,122.528 160.23,132.175 148.331,132.175C136.637,131.584 128.782,124.336 126.898,112.842L126.943,111.105L126.943,90.834L126.867,89.214C127.436,77.954 137.389,69.488 148.331,69.288Z" style="fill:rgb(171,183,183);fill-rule:nonzero;"/> - </g> - </g> -</svg> diff --git a/public/assets/images/global/upload-audio.png b/public/assets/images/global/upload-audio.png deleted file mode 100644 index 137cd0c..0000000 Binary files a/public/assets/images/global/upload-audio.png and /dev/null differ diff --git a/public/assets/images/global/upload-doc.png b/public/assets/images/global/upload-doc.png deleted file mode 100644 index b6d8acb..0000000 Binary files a/public/assets/images/global/upload-doc.png and /dev/null differ diff --git a/public/assets/images/global/upload-video.png b/public/assets/images/global/upload-video.png deleted file mode 100644 index 96b9a5d..0000000 Binary files a/public/assets/images/global/upload-video.png and /dev/null differ diff --git a/public/assets/scripts/dash.js b/public/assets/scripts/dash.js deleted file mode 100644 index 34b3524..0000000 --- a/public/assets/scripts/dash.js +++ /dev/null @@ -1,7430 +0,0 @@ -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -var $parcel$global = -typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; -//** REQUEST TYPES **// -const $cbea55afea03b976$export$1470a914435ca933 = "POST"; -const $cbea55afea03b976$export$40a64a78065efa15 = "GET"; -const $cbea55afea03b976$export$d7fd7a62023314c5 = "PUT"; -const $cbea55afea03b976$export$664fc1dd454ea59a = "DELETE"; -const $cbea55afea03b976$export$e133232680a85c80 = "json"; -const $cbea55afea03b976$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; -const $cbea55afea03b976$export$353cfe44191e6ed0 = "/api/v1/status"; -const $cbea55afea03b976$export$a5dc8f3c1ec8d90e = "/api/v1/settings/site"; -const $cbea55afea03b976$export$12171301ab2e754b = "/api/v1/settings/member"; -const $cbea55afea03b976$export$bcee0afc6bcb3973 = "/api/v1/page/create"; -const $cbea55afea03b976$export$56305c0c25c10608 = "/api/v1/page/write"; -const $cbea55afea03b976$export$af6f91c104f9c4c0 = "/api/v1/page/delete"; -const $cbea55afea03b976$export$1541f55cb44e7d14 = "/api/v1/settings/sync"; -const $cbea55afea03b976$export$42d16aa2cb1126e1 = "/api/v1/settings/publish"; -const $cbea55afea03b976$export$96c65021a69fd85 = "/api/v1/settings/nav-sync"; -const $cbea55afea03b976$export$94ef9ea0ce35d9d2 = "/api/v1/settings/reindex"; -const $cbea55afea03b976$export$8d81f3b3a5b91cea = "/api/v1/mailer"; -const $cbea55afea03b976$export$7193f1fd9d4c1e50 = "/api/v1/login"; -const $cbea55afea03b976$export$5a2be2bfb8c6b601 = "getAuthStatus"; -const $cbea55afea03b976$export$cf68b0779f5f031f = "writeSettings"; -const $cbea55afea03b976$export$6ddd598aa59a7ae3 = "publishSite"; -const $cbea55afea03b976$export$f06e28eb004ce525 = "createNewPage"; -const $cbea55afea03b976$export$a01fefcc831953fa = "editPage"; -const $cbea55afea03b976$export$f9aea0c55bfa15c9 = "deletePage"; -const $cbea55afea03b976$export$835e061c7098d585 = "sendMail"; -const $cbea55afea03b976$export$99e8e9f4661c0fb8 = "reIndexPages"; -const $cbea55afea03b976$export$ff4a0df6152bf850 = "syncSite"; -const $cbea55afea03b976$export$67799ce3e3352ee1 = "syncNav"; -const $cbea55afea03b976$export$303f528a8cb6a0ec = "getSiteSettings"; -const $cbea55afea03b976$export$497a6cff1b996002 = "getMemberInfo"; -const $cbea55afea03b976$export$67f2179ab94be531 = "apiUseAuthorized"; -const $cbea55afea03b976$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; -/** - * A can of methods used to edit install settings, navigation pages and content pages - */ class $cbea55afea03b976$export$2e2bcd8739ae039 { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {object} progressBar - element to be used to display upload progress - */ constructor(baseURL = null, progressBar = null){ - this.percentComplete = 0; //for later - this.baseURL = null; - this.progressBar = progressBar; - this.status = false; - if (baseURL) this.baseURL = baseURL; - //asks server if a session is active - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$353cfe44191e6ed0 : $cbea55afea03b976$export$353cfe44191e6ed0).then((response)=>{ - if (response.type === $cbea55afea03b976$export$67f2179ab94be531) this.token = response.token; - }); - } - /** - * Promise method for authenticating and starting a session\ - * **POST**`/api/v1/login` - * @param {Object[]} data - json object that contains data for set up - * @param {string} data[].handle - handle for site user - * @param {string} data[].password - password for site user - * @example - * api.login(data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of login request - ``` - { - "message":"Example Message of Affirmation or what you're missing!", - "type":"exampleType", - } - ``` - */ login(data) { - return new Promise((resolve, reject)=>{ - this.baseURL ? data.remote = true : data.remote = false; - this.key ? data.key = this.key : data.key = null; - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$7193f1fd9d4c1e50 : $cbea55afea03b976$export$7193f1fd9d4c1e50, $cbea55afea03b976$export$5a2be2bfb8c6b601, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for saving site and navigation settings\ - * **POST**`/api/v1/settings/:task` - * @param {string} task - settings being synced `config | navigation` - * @param {object[]} data - json object that contains settings data for [site] or [nav] - * @param {string} data[].global.base_url - base url for site [site] - * @param {string} data[].global.title - site title [site] - * @param {string} data[].global.descriptions - brief site summary [site] - * @param {string} data[].global.background - url for site feature image for header [site] - * @param {boolean} data[].global.private - privacy state for site [disabled] [site] - * @param {boolean} data[].global.renderOnSave - property for publishing site when page saved [disabled] [site] - * @param {string} data[].global.theme - current theme for site [site] - * @param {boolean} data[].global.externalAPI - toggle for external API access [site] - * @param {string} data[].member.handle - current member handle [site] - * @param {string} data[].member.email - current member email [site] - * @param {string} data[].email.active - current email protocol being used [site] - * @param {string} data[].email.smtp.domain - url of smtp service being [site] - * @param {string} data[].email.smtp.email - email account of smtp service [site] - * @param {string} data[].email.smtp.password - password for email of smtp service [site] - * @param {string} data[].email.mailgun.domain - mailgun domain url [site] - * @param {string} data[].email.mailgun.key - mailgun key [site] - * - * @param {string} data[].item.title - page title [nav] - * @param {string} data[].item.slug - url safe title [nav] - * @param {string} data[].item.uuid - unique identifier [nav] - * @param {string} data[].item.path - directory path to associated markdown file [nav] - * @example - * api.sync(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of sync request - ``` - * - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ sync(task, data) { - return new Promise((resolve, reject)=>{ - let url = ""; - switch(task){ - case "syncSite": - url = $cbea55afea03b976$export$1541f55cb44e7d14; - break; - case "syncNav": - url = $cbea55afea03b976$export$96c65021a69fd85; - break; - } - this._request(this.baseURL ? this.baseURL + url : url, $cbea55afea03b976$export$cf68b0779f5f031f, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for retrieving user authorizing user login - * @param {object[]} data - json object that contains task - * @param {string} data[].task - publishing task - * @example - * api.publish(TASK).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of publis request - * ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - * ``` - */ publish(data) { - return new Promise((resolve, reject)=>{ - this._request(//API_PUBLISH_PAGES, - this.baseURL ? this.baseURL + $cbea55afea03b976$export$42d16aa2cb1126e1 : $cbea55afea03b976$export$42d16aa2cb1126e1, $cbea55afea03b976$export$6ddd598aa59a7ae3, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for handling page creating and editing\ - * **POST**`/api/v1/page/:task` - * @param {string} task - current page action - * @param {object[]} form - form object that contains info for current page being edited/created - * @param {string} form[].id - sequence id for page, leave empty for new page - * @param {string} form[].uuid - unique identifier for page, leave empty for new page - * @param {string} form[].layout - current page layout - * @param {string} form[].current_title - saved url save title for persistence when changing title, leave empty for new page - * @param {string} form[].content - markdown body of page - * @param {string} form[].title - current title of page - * @param {string} form[].created - date page was created, leave empty for new page - * @param {string} form[].slug - url safe string of page title - * @param {string} form[].tags - comma separated list of tags - * @param {boolean} form[].menu - property that indicates page is included in site menu - * @param {boolean} form[].featured - property that indicates page is featured - * @param {boolean} form[].published - property that indicates page is public - * @param {string} form[].form_token - hidden property to authenticate form submission - * @param {input} form[].feature_image - main image for page - * @example - * api.pageActions(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ pageActions(task, data) { - let url, event, content; - switch(task){ - case $cbea55afea03b976$export$f06e28eb004ce525: - url = $cbea55afea03b976$export$bcee0afc6bcb3973; - event = $cbea55afea03b976$export$f06e28eb004ce525; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - case $cbea55afea03b976$export$a01fefcc831953fa: - url = $cbea55afea03b976$export$56305c0c25c10608; - event = $cbea55afea03b976$export$a01fefcc831953fa; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - case $cbea55afea03b976$export$f9aea0c55bfa15c9: - url = $cbea55afea03b976$export$af6f91c104f9c4c0; - event = $cbea55afea03b976$export$f9aea0c55bfa15c9; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - default: - break; - } - if (this.baseURL) //data.key = this.key; - data.remote = true; - else data.remote = false; - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + url : url, event, $cbea55afea03b976$export$1470a914435ca933, content, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for sending mail (if completed in settings)\ - * **POST**`/api/v1/mailer` - * @param {object[]} message - json object that contains items to be included in main site navigation - * @param {string} message[].content - message to send - * @example - * api.sendMail(message).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType" - } - ``` - */ sendMail(message) { - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$8d81f3b3a5b91cea : $cbea55afea03b976$export$8d81f3b3a5b91cea, $cbea55afea03b976$export$835e061c7098d585, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, message).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * *Promise method for retrieving site and member info*\ - * **GET** `/api/v1/settings/:type` - * @param {string} type - type of info requested ['site'|'member']; - * @example - * api.getInfo("type").then(data=>{ - console.log("Info Object", data); - * }) - * @returns {object} json object that contains data for requested information - * - * *info object example* - * ``` - { - "message":"message of affirmation!", - "task":"type of info request", - "data":json-data-object, - } - * ``` - */ getInfo(type) { - let url, task; - if (type == "site") { - url = $cbea55afea03b976$export$a5dc8f3c1ec8d90e; - task = $cbea55afea03b976$export$303f528a8cb6a0ec; - } else { - url = $cbea55afea03b976$export$12171301ab2e754b; - task = $cbea55afea03b976$export$497a6cff1b996002; - } - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + url : url, task).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - //-------------------------- - // private - //-------------------------- - _request(requestURL, eventType, requestType = $cbea55afea03b976$export$40a64a78065efa15, contentType = $cbea55afea03b976$export$e133232680a85c80, requestData = null) { - var self = this; - return new Promise(function(resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, self.progressBar)); - request.open(requestType, requestURL, true); - request.onload = ()=>{ - if (request.status == 200) { - let response = JSON.parse(request["response"]); - resolve(response); - } else { - let error = JSON.parse(request["response"]); - reject(error); - } - }; - if (requestType == $cbea55afea03b976$export$d7fd7a62023314c5 || requestType == $cbea55afea03b976$export$1470a914435ca933) { - if (eventType === $cbea55afea03b976$export$cf68b0779f5f031f || eventType === $cbea55afea03b976$export$a01fefcc831953fa || eventType === $cbea55afea03b976$export$f06e28eb004ce525 || eventType === $cbea55afea03b976$export$f9aea0c55bfa15c9 || eventType === $cbea55afea03b976$export$6ddd598aa59a7ae3 || eventType === $cbea55afea03b976$export$99e8e9f4661c0fb8) request.setRequestHeader("fipamo-access-token", self.token); - switch(contentType){ - case $cbea55afea03b976$export$e133232680a85c80: - request.setRequestHeader("Content-type", "application/" + contentType); - request.send(JSON.stringify(requestData)); - break; - case $cbea55afea03b976$export$d1a86f208bdcebe5: - request.send(requestData); - break; - } - } else { - if (eventType === $cbea55afea03b976$export$303f528a8cb6a0ec || eventType === $cbea55afea03b976$export$497a6cff1b996002) request.setRequestHeader("fipamo-access-token", self.token); - request.send(); - } - }); - } - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil(e.loaded / e.total * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) progressBar.style.width = percent + "%"; - } -} - - -//** REQUEST TYPES **// -const $7e781a188206b2b3$export$1470a914435ca933 = "POST"; -const $7e781a188206b2b3$export$40a64a78065efa15 = "GET"; -const $7e781a188206b2b3$export$d7fd7a62023314c5 = "PUT"; -const $7e781a188206b2b3$export$664fc1dd454ea59a = "DELETE"; -const $7e781a188206b2b3$export$e133232680a85c80 = "json"; -const $7e781a188206b2b3$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; -const $7e781a188206b2b3$export$353cfe44191e6ed0 = "/api/v1/status"; -const $7e781a188206b2b3$export$6010ab8005eea11c = "/api/v1/init"; -const $7e781a188206b2b3$export$52ab125bf6b9623c = "/api/v1/restore"; -const $7e781a188206b2b3$export$dbda7dc2e1902943 = "/api/v1/get-secret"; -const $7e781a188206b2b3$export$6cb20b6a23a06e47 = "/api/v1/reset-password"; -const $7e781a188206b2b3$export$7d346f7b882235dd = "/api/v1/backup"; -const $7e781a188206b2b3$export$55b2e84262898562 = "/api/v1/backup/download"; -const $7e781a188206b2b3$export$32b079f7fc0b26ca = "/api/v1/backup/restore"; -const $7e781a188206b2b3$export$359fb9097c578f21 = "/api/v1/settings/add-avatar"; -const $7e781a188206b2b3$export$739eebbd7d1f81a2 = "/api/v1/settings/add-feature-background"; -const $7e781a188206b2b3$export$ee6257de8f8b01a2 = "/api/v1/page/add-entry-image"; -const $7e781a188206b2b3$export$4d4b481c07056150 = "/api/v1/files"; -const $7e781a188206b2b3$export$2fb4d35b5b0eebb2 = "blogInit"; -const $7e781a188206b2b3$export$525ebf8030c3a323 = "restoreBackup"; -const $7e781a188206b2b3$export$fc0aff5026df5452 = "createBackup"; -const $7e781a188206b2b3$export$adaa11ae547fcbcc = "retrieveSecret"; -const $7e781a188206b2b3$export$8305e7d16f23e8bc = "resetPassword"; -const $7e781a188206b2b3$export$f90c0f4ad2c7ac2b = "uploadFiles"; -const $7e781a188206b2b3$export$67f2179ab94be531 = "apiUseAuthorized"; -const $7e781a188206b2b3$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; -/** - * A tub of methods for creating/restoring installs, resetting passwords and uploading images. - */ class $7e781a188206b2b3$export$2e2bcd8739ae039 { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {string} key - user api key - */ constructor(baseURL = null, key = null){ - this.accetableFiles = [ - "image/jpeg", - "image/gif", - "image/png", - "image/svg", - "audio/mpeg", - "video/mp4", - "application/pdf", - "text/plain", - "text/rtf" - ]; - this.percentComplete = 0; //for later - this.token = null; - this.baseURL = null; - this.key = null; - if (key) this.key = key; - if (baseURL) this.baseURL = baseURL; - //if key is valid, checks to see if a session is active and returns - this._request(this.baseURL ? this.baseURL + $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key : $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key).then((response)=>{ - if (response.type === $7e781a188206b2b3$export$67f2179ab94be531) this.token = response.token; - }); - } - /** - * Promise method used create new site from scratch. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_member_handle - handle for new user - * @property {string} new_member_email - email for new user - * @property {string} new_member_pass - password for new user - * @property {string} new_member_title - title for new user - */ create(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$6010ab8005eea11c, null, $7e781a188206b2b3$export$2fb4d35b5b0eebb2, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for restoring site from a previous back up. For local use only. - * @param {object} form - form object that contains restore data and files - * @property {string} restore_member_handle - handle for site user - * @property {string} restore_member_pass - password for site user - * @property {file} backup-upload - backup zip file - */ restore(form) { - return new Promise((resolve, reject)=>{ - var url, event, method, type, data; - url = $7e781a188206b2b3$export$52ab125bf6b9623c; - event = $7e781a188206b2b3$export$525ebf8030c3a323; - method = $7e781a188206b2b3$export$1470a914435ca933; - type = $7e781a188206b2b3$export$d1a86f208bdcebe5; - data = new FormData(form); - this._request(url, null, event, method, type, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for creating a zip back up of current site. For local use only. - */ backup() { - return new Promise((resolve, reject)=>{ - var url, event, method, type, data; - url = $7e781a188206b2b3$export$7d346f7b882235dd; - event = $7e781a188206b2b3$export$fc0aff5026df5452; - method = $7e781a188206b2b3$export$1470a914435ca933; - type = $7e781a188206b2b3$export$e133232680a85c80; - data = { - task: "create_backup" - }; - this._request(url, null, event, method, type, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for retrieving user secret key. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} email - email for site user - */ secret(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$dbda7dc2e1902943, $7e781a188206b2b3$export$adaa11ae547fcbcc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for resetting password for user. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_password - password for user - * @property {string} new_password2 - confirm password for user - * @property {string} secret - secret key for user - */ newPass(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$6cb20b6a23a06e47, $7e781a188206b2b3$export$8305e7d16f23e8bc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for uploading files [todo: change to uploading files] - * @param {string} type - type of upload - * @param {input} files - form input containing files - */ filesUpload(type, files, progress = null) { - return new Promise((resolve, reject)=>{ - let url = $7e781a188206b2b3$export$4d4b481c07056150; - if (this.baseURL) { - files.append("key", this.key); - files.append("remote", true); - } else files.append("remote", false); - this._request(url, progress, $7e781a188206b2b3$export$f90c0f4ad2c7ac2b, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$d1a86f208bdcebe5, files).then((r)=>{ - resolve(r); - }).catch((err)=>{ - reject(err); - }); - }); - } - //-------------------------- - // private - //-------------------------- - _request(requestURL, progressBar = null, eventType, requestType = $7e781a188206b2b3$export$40a64a78065efa15, contentType = $7e781a188206b2b3$export$e133232680a85c80, requestData = null) { - var self = this; - return new Promise(function(resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, progressBar)); - request.open(requestType, requestURL, true); - request.onload = ()=>{ - if (request.status == 200) { - let response = JSON.parse(request["response"]); - resolve(response); - } else { - let error = JSON.parse(request["response"]); - reject(error); - } - }; - if (requestType == $7e781a188206b2b3$export$d7fd7a62023314c5 || requestType == $7e781a188206b2b3$export$1470a914435ca933) { - if (eventType === $7e781a188206b2b3$export$f90c0f4ad2c7ac2b) request.setRequestHeader("fipamo-access-token", self.token); - switch(contentType){ - case $7e781a188206b2b3$export$e133232680a85c80: - request.setRequestHeader("Content-type", "application/" + contentType); - request.send(JSON.stringify(requestData)); - break; - case $7e781a188206b2b3$export$d1a86f208bdcebe5: - request.send(requestData); - break; - } - } else request.send(); - }); - } - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil(e.loaded / e.total * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) progressBar.style.width = percent + "%"; - } -} - - -class $f177b50aa405d296$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - imgLoad(url) { - "use strict"; - // Create new promise with the Promise() constructor; - // This has as its argument a function with two parameters, resolve and reject - return new Promise(function(resolve, reject) { - // Standard XHR to load an image - var request = new XMLHttpRequest(); - request.open("GET", url); - request.responseType = "blob"; - // When the request loads, check whether it was successful - request.onload = function() { - if (request.status === 200) // If successful, resolve the promise by passing back the request response - resolve(request.response); - else // If it fails, reject the promise with a error message - reject(new Error("Image didn't load successfully; error code: " + request.status + " " + request.statusText)); - }; - request.onerror = function() { - // Also deal with the case when the entire request fails to begin with - // This is probably a network error, so reject the promise with an appropriate message - reject(new Error("There was a network error.")); - }; - // Send the request - request.send(); - }); - } - loadImage(src) { - "use strict"; - let self = this; - return new Promise(function(resolve, reject) { - // Get a reference to the body element, and create a new image object - var myImage = new Image(); - myImage.crossOrigin = ""; // or "anonymous" - // Call the function with the URL we want to load, but then chain the - // promise then() method on to the end of it. This contains two callbacks - self.imgLoad(src).then(function(response) { - // The first runs when the promise resolves, with the request.reponse specified within the resolve() method. - var imageURL = window.URL.createObjectURL(response); - resolve(imageURL); - //$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL; - //console.log(imageURL); - //body.appendChild(myImage); - // The second runs when the promise is rejected, and logs the Error specified with the reject() method. - }, function(Error1) { - reject(Error1); - }); - }); - } - /** - * Create a function to convert the serialize and convert the form data to JSON - * @param : $('#form_example'); - * @return a JSON Stringify - */ formDataToJSON(form) { - let object = {}; - let formData = new FormData(form); - formData.forEach((value, key)=>{ - if (!object.hasOwnProperty(key)) { - object[key] = value; - return; - } - if (!Array.isArray(object[key])) object[key] = [ - object[key] - ]; - object[key].push(value); - }); - //let json = JSON.stringify(object); - return object; - } -} - - -const $995f55a4eccd256d$export$5a2be2bfb8c6b601 = "getAuthStatus"; -const $995f55a4eccd256d$export$844339d01bfceea4 = "requestGood"; -const $995f55a4eccd256d$export$f99ec790401d28da = "requestLame"; -const $995f55a4eccd256d$export$5fb39232fef0eeff = "apiUseAuthorized"; -const $995f55a4eccd256d$export$8829e15ac416fcee = "apiUseNotAuthorized"; -const $995f55a4eccd256d$export$4bfe4aeac5ca1c9b = "imgRequestGood"; -const $995f55a4eccd256d$export$b678e0874d52df91 = "imgRequestLame"; -const $995f55a4eccd256d$export$f78d3105e9d98a5d = "settingsLoaded"; -const $995f55a4eccd256d$export$c58a4ce4b93c5925 = "postImageAdded"; -const $995f55a4eccd256d$export$26bdbac97359953d = "featureImageAdded"; -const $995f55a4eccd256d$export$a9707c9559ca4612 = "postError"; -const $995f55a4eccd256d$export$a2d54b707b6e22e1 = "postAdded"; -const $995f55a4eccd256d$export$f88aea22a746eab = "postUpdated"; -const $995f55a4eccd256d$export$92d3c9e452b188cc = "postImageAdded"; -const $995f55a4eccd256d$export$9ab81161d8ad3297 = "pagesRendered"; -const $995f55a4eccd256d$export$a447f8a3982d1ca8 = "pagesNotRendered"; -const $995f55a4eccd256d$export$b47ada4663816e48 = "tagPagesRendered"; -const $995f55a4eccd256d$export$14f1954724290577 = "tagPagesNotRendered"; -const $995f55a4eccd256d$export$5dd76fd38bbe7841 = "settingsUpdated"; -const $995f55a4eccd256d$export$5082b4f0403769e9 = "settingsNotUpdated"; -const $995f55a4eccd256d$export$bd3b33ec4de8bf3 = "menuAddItem"; -const $995f55a4eccd256d$export$dbd640577c4e5d0d = "menuDeleteItem"; -const $995f55a4eccd256d$export$d4fd546d3456ff85 = "menuUpdated"; -const $995f55a4eccd256d$export$9b65f586914397ef = "avatarUploaded"; -const $995f55a4eccd256d$export$c3b6b85989e4a0a8 = "siteBackgroundUploaded"; -const $995f55a4eccd256d$export$c51d011f6ede1aa5 = "uploadProgress"; -const $995f55a4eccd256d$export$e0e6bcdbaa787779 = "writingItDown"; -const $995f55a4eccd256d$export$ac8c24f9b72727c3 = "writingNewEntry"; -const $995f55a4eccd256d$export$8ae3e28253adc030 = "erasingPage"; -const $995f55a4eccd256d$export$16cc4df8146e89ab = "savingSettings"; -const $995f55a4eccd256d$export$524c7f283d44a2c3 = "createBackup"; -const $995f55a4eccd256d$export$ef2d8441bb01121d = "downloadBackup"; -const $995f55a4eccd256d$export$8020812a0ef5b01d = "downloadBackup"; -const $995f55a4eccd256d$export$bd723636cbbfa9dd = "uploadProfileImages"; -const $995f55a4eccd256d$export$a5f1510cea1ffff9 = "renderPages"; -const $995f55a4eccd256d$export$94ef9ea0ce35d9d2 = "reindexPages"; -const $995f55a4eccd256d$export$6010ab8005eea11c = "blogInit"; -const $995f55a4eccd256d$export$57f3dcd64790c65 = "blogInitGood"; -const $995f55a4eccd256d$export$74a5c30fa9753d80 = "blogInitLame"; -const $995f55a4eccd256d$export$dbda7dc2e1902943 = "retrieveSecret"; -const $995f55a4eccd256d$export$6cb20b6a23a06e47 = "resetPassword"; -const $995f55a4eccd256d$export$eeb056b4f9e6ce71 = "sendMail"; -class $995f55a4eccd256d$var$DataEvent { -} -var $995f55a4eccd256d$export$2e2bcd8739ae039 = new $995f55a4eccd256d$var$DataEvent(); - - -//TOOLS - - - -class $224e88b348829f3a$var$StringUtils { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - cleanString(string) { - var clean = string.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, "").toLowerCase().replace(/[\/_| -]+/g, "-"); - return clean; - } - decodeHTML(string, quote_style) { - var optTemp = 0, i = 0, noquotes = false; - if (typeof quote_style === "undefined") quote_style = 2; - string = string.toString().replace(/</g, "<").replace(/>/g, ">"); - var OPTS = { - ENT_NOQUOTES: 0, - ENT_HTML_QUOTE_SINGLE: 1, - ENT_HTML_QUOTE_DOUBLE: 2, - ENT_COMPAT: 2, - ENT_QUOTES: 3, - ENT_IGNORE: 4 - }; - if (quote_style === 0) noquotes = true; - if (typeof quote_style !== "number") { - // Allow for a single string or an array of string flags - quote_style = [].concat(quote_style); - for(i = 0; i < quote_style.length; i++){ - // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 - if (OPTS[quote_style[i]] === 0) noquotes = true; - else if (OPTS[quote_style[i]]) optTemp = optTemp | OPTS[quote_style[i]]; - } - quote_style = optTemp; - } - if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should - if (!noquotes) string = string.replace(/"/g, '"'); - // Put this in last place to avoid escape being double-decoded - string = string.replace(/&/g, "&"); - return string; - } -} -var $224e88b348829f3a$export$2e2bcd8739ae039 = $224e88b348829f3a$var$StringUtils; - - -class $de01a7e5b1773530$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - collectInfo(files) { - return new Promise((resolve, reject)=>{ - let pageInfo = []; - let pageRef = document.querySelector('[role="file-manager"]'); - //process html content for storage - let txt = document.createElement("textarea"); - txt.innerHTML = document.getElementById("highlight-content").innerHTML; - let html = txt.value; - html = html.replace(/<\/?span[^>]*>/g, ""); //removes prism styling - html = html.replace(/<\/?br[^>]*>/g, "\n"); //convert back to encoded line break for storage - //build data object - pageInfo = { - id: pageRef.getAttribute("data-index"), - uuid: pageRef.getAttribute("data-uuid"), - layout: document.getElementById("page-templates").value, - current_title: pageRef.getAttribute("data-slug"), - content: html, - title: document.getElementById("post-title-text").value, - created: document.getElementById("post-date").getAttribute("data-raw"), - slug: new (0, $224e88b348829f3a$export$2e2bcd8739ae039)().cleanString(document.getElementById("post-title-text").value), - tags: document.getElementById("post-tags").value, - menu: document.getElementById("option-menu-pin").getAttribute("data-active"), - featured: document.getElementById("option-feature").getAttribute("data-active"), - published: document.getElementById("option-published").getAttribute("data-active"), - form_token: document.getElementById("form_token").value, - imageList: files.images, - fileList: files.files - }; - resolve(pageInfo); - }); - } -} - - -const $0d6abf40542266b3$export$e0c06b1ddd9992cc = "editorDelete"; -const $0d6abf40542266b3$export$80082ca64f03d0e9 = "editorUploadImage"; -const $0d6abf40542266b3$export$1844db352cf5aef3 = "editorSave"; -const $0d6abf40542266b3$export$14580fc61246740 = "editorUpdate"; -class $0d6abf40542266b3$var$EditorEvent { -} -var $0d6abf40542266b3$export$2e2bcd8739ae039 = new $0d6abf40542266b3$var$EditorEvent(); - - - -class $68b475f2a0292491$var$EventEmitter { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.listeners = new Map(); - } - //-------------------------- - // methods - //-------------------------- - addListener(label, callback) { - this.listeners.has(label) || this.listeners.set(label, []); - this.listeners.get(label).push(callback); - } - removeListener(label, callback) { - var isFunction = function(obj) { - return typeof obj == "function" || false; - }; - var listeners = this.listeners.get(label), index; - if (listeners && listeners.length) { - index = listeners.reduce((i, listener, index)=>{ - return isFunction(listener) && listener === callback ? i = index : i; - }, -1); - if (index > -1) { - listeners.splice(index, 1); - this.listeners.set(label, listeners); - return true; - } - } - return false; - } - emitEvent(label, ...args) { - var listeners = this.listeners.get(label); - if (listeners && listeners.length) { - listeners.forEach((listener)=>{ - listener(...args); - }); - return true; - } - return false; - } -} -var $68b475f2a0292491$export$2e2bcd8739ae039 = $68b475f2a0292491$var$EventEmitter; - - - -var $4b862aa2466a294d$exports = {}; -/// <reference lib="WebWorker"/> -var $4b862aa2466a294d$var$_self = typeof window !== "undefined" ? window // if in browser - : typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope ? self // if in worker - : {} // if in node js -; -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT <https://opensource.org/licenses/MIT> - * @author Lea Verou <https://lea.verou.me> - * @namespace - * @public - */ var $4b862aa2466a294d$var$Prism = function(_self) { - // Private helper vars - var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; - var uniqueId = 0; - // The grammar object for plaintext - var plainTextGrammar = {}; - var _ = { - /** - * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the - * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load - * additional languages or plugins yourself. - * - * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. - * - * You obviously have to change this value before the automatic highlighting started. To do this, you can add an - * empty Prism object into the global scope before loading the Prism script like this: - * - * ```js - * window.Prism = window.Prism || {}; - * Prism.manual = true; - * // add a new <script> to load Prism's script - * ``` - * - * @default false - * @type {boolean} - * @memberof Prism - * @public - */ manual: _self.Prism && _self.Prism.manual, - /** - * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses - * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your - * own worker, you don't want it to do this. - * - * By setting this value to `true`, Prism will not add its own listeners to the worker. - * - * You obviously have to change this value before Prism executes. To do this, you can add an - * empty Prism object into the global scope before loading the Prism script like this: - * - * ```js - * window.Prism = window.Prism || {}; - * Prism.disableWorkerMessageHandler = true; - * // Load Prism's script - * ``` - * - * @default false - * @type {boolean} - * @memberof Prism - * @public - */ disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - /** - * A namespace for utility methods. - * - * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may - * change or disappear at any time. - * - * @namespace - * @memberof Prism - */ util: { - encode: function encode(tokens) { - if (tokens instanceof Token) return new Token(tokens.type, encode(tokens.content), tokens.alias); - else if (Array.isArray(tokens)) return tokens.map(encode); - else return tokens.replace(/&/g, "&").replace(/</g, "<").replace(/\u00a0/g, " "); - }, - /** - * Returns the name of the type of the given value. - * - * @param {any} o - * @returns {string} - * @example - * type(null) === 'Null' - * type(undefined) === 'Undefined' - * type(123) === 'Number' - * type('foo') === 'String' - * type(true) === 'Boolean' - * type([1, 2]) === 'Array' - * type({}) === 'Object' - * type(String) === 'Function' - * type(/abc+/) === 'RegExp' - */ type: function(o) { - return Object.prototype.toString.call(o).slice(8, -1); - }, - /** - * Returns a unique number for the given object. Later calls will still return the same number. - * - * @param {Object} obj - * @returns {number} - */ objId: function(obj) { - if (!obj["__id"]) Object.defineProperty(obj, "__id", { - value: ++uniqueId - }); - return obj["__id"]; - }, - /** - * Creates a deep clone of the given object. - * - * The main intended use of this function is to clone language definitions. - * - * @param {T} o - * @param {Record<number, any>} [visited] - * @returns {T} - * @template T - */ clone: function deepClone(o, visited) { - visited = visited || {}; - var clone; - var id; - switch(_.util.type(o)){ - case "Object": - id = _.util.objId(o); - if (visited[id]) return visited[id]; - clone = /** @type {Record<string, any>} */ {}; - visited[id] = clone; - for(var key in o)if (o.hasOwnProperty(key)) clone[key] = deepClone(o[key], visited); - return /** @type {any} */ clone; - case "Array": - id = _.util.objId(o); - if (visited[id]) return visited[id]; - clone = []; - visited[id] = clone; - /** @type {Array} */ /** @type {any} */ o.forEach(function(v, i) { - clone[i] = deepClone(v, visited); - }); - return /** @type {any} */ clone; - default: - return o; - } - }, - /** - * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class. - * - * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned. - * - * @param {Element} element - * @returns {string} - */ getLanguage: function(element) { - while(element){ - var m = lang.exec(element.className); - if (m) return m[1].toLowerCase(); - element = element.parentElement; - } - return "none"; - }, - /** - * Sets the Prism `language-xxxx` class of the given element. - * - * @param {Element} element - * @param {string} language - * @returns {void} - */ setLanguage: function(element, language) { - // remove all `language-xxxx` classes - // (this might leave behind a leading space) - element.className = element.className.replace(RegExp(lang, "gi"), ""); - // add the new `language-xxxx` class - // (using `classList` will automatically clean up spaces for us) - element.classList.add("language-" + language); - }, - /** - * Returns the script element that is currently executing. - * - * This does __not__ work for line script element. - * - * @returns {HTMLScriptElement | null} - */ currentScript: function() { - if (typeof document === "undefined") return null; - if ("currentScript" in document && true /* hack to trip TS' flow analysis */ ) return /** @type {any} */ document.currentScript; - // IE11 workaround - // we'll get the src of the current script by parsing IE11's error stack trace - // this will not work for inline scripts - try { - throw new Error(); - } catch (err) { - // Get file src url from stack. Specifically works with the format of stack traces in IE. - // A stack will look like this: - // - // Error - // at _.util.currentScript (http://localhost/components/prism-core.js:119:5) - // at Global code (http://localhost/components/prism-core.js:606:1) - var src = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(err.stack) || [])[1]; - if (src) { - var scripts = document.getElementsByTagName("script"); - for(var i in scripts){ - if (scripts[i].src == src) return scripts[i]; - } - } - return null; - } - }, - /** - * Returns whether a given class is active for `element`. - * - * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated - * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the - * given class is just the given class with a `no-` prefix. - * - * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is - * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its - * ancestors have the given class or the negated version of it, then the default activation will be returned. - * - * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated - * version of it, the class is considered active. - * - * @param {Element} element - * @param {string} className - * @param {boolean} [defaultActivation=false] - * @returns {boolean} - */ isActive: function(element, className, defaultActivation) { - var no = "no-" + className; - while(element){ - var classList = element.classList; - if (classList.contains(className)) return true; - if (classList.contains(no)) return false; - element = element.parentElement; - } - return !!defaultActivation; - } - }, - /** - * This namespace contains all currently loaded languages and the some helper functions to create and modify languages. - * - * @namespace - * @memberof Prism - * @public - */ languages: { - /** - * The grammar for plain, unformatted text. - */ plain: plainTextGrammar, - plaintext: plainTextGrammar, - text: plainTextGrammar, - txt: plainTextGrammar, - /** - * Creates a deep copy of the language with the given id and appends the given tokens. - * - * If a token in `redef` also appears in the copied language, then the existing token in the copied language - * will be overwritten at its original position. - * - * ## Best practices - * - * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language) - * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to - * understand the language definition because, normally, the order of tokens matters in Prism grammars. - * - * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens. - * Furthermore, all non-overwriting tokens should be placed after the overwriting ones. - * - * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`. - * @param {Grammar} redef The new tokens to append. - * @returns {Grammar} The new language created. - * @public - * @example - * Prism.languages['css-with-colors'] = Prism.languages.extend('css', { - * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token - * // at its original position - * 'comment': { ... }, - * // CSS doesn't have a 'color' token, so this token will be appended - * 'color': /\b(?:red|green|blue)\b/ - * }); - */ extend: function(id, redef) { - var lang = _.util.clone(_.languages[id]); - for(var key in redef)lang[key] = redef[key]; - return lang; - }, - /** - * Inserts tokens _before_ another token in a language definition or any other grammar. - * - * ## Usage - * - * This helper method makes it easy to modify existing languages. For example, the CSS language definition - * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded - * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the - * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do - * this: - * - * ```js - * Prism.languages.markup.style = { - * // token - * }; - * ``` - * - * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens - * before existing tokens. For the CSS example above, you would use it like this: - * - * ```js - * Prism.languages.insertBefore('markup', 'cdata', { - * 'style': { - * // token - * } - * }); - * ``` - * - * ## Special cases - * - * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar - * will be ignored. - * - * This behavior can be used to insert tokens after `before`: - * - * ```js - * Prism.languages.insertBefore('markup', 'comment', { - * 'comment': Prism.languages.markup.comment, - * // tokens after 'comment' - * }); - * ``` - * - * ## Limitations - * - * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object - * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave - * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily - * deleting properties which is necessary to insert at arbitrary positions. - * - * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object. - * Instead, it will create a new object and replace all references to the target object with the new one. This - * can be done without temporarily deleting properties, so the iteration order is well-defined. - * - * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if - * you hold the target object in a variable, then the value of the variable will not change. - * - * ```js - * var oldMarkup = Prism.languages.markup; - * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... }); - * - * assert(oldMarkup !== Prism.languages.markup); - * assert(newMarkup === Prism.languages.markup); - * ``` - * - * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the - * object to be modified. - * @param {string} before The key to insert before. - * @param {Grammar} insert An object containing the key-value pairs to be inserted. - * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the - * object to be modified. - * - * Defaults to `Prism.languages`. - * @returns {Grammar} The new grammar object. - * @public - */ insertBefore: function(inside, before, insert, root) { - root = root || /** @type {any} */ _.languages; - var grammar = root[inside]; - /** @type {Grammar} */ var ret = {}; - for(var token in grammar)if (grammar.hasOwnProperty(token)) { - if (token == before) { - for(var newToken in insert)if (insert.hasOwnProperty(newToken)) ret[newToken] = insert[newToken]; - } - // Do not insert token which also occur in insert. See #1525 - if (!insert.hasOwnProperty(token)) ret[token] = grammar[token]; - } - var old = root[inside]; - root[inside] = ret; - // Update references in other language definitions - _.languages.DFS(_.languages, function(key, value) { - if (value === old && key != inside) this[key] = ret; - }); - return ret; - }, - // Traverse a language definition with Depth First Search - DFS: function DFS(o, callback, type, visited) { - visited = visited || {}; - var objId = _.util.objId; - for(var i in o)if (o.hasOwnProperty(i)) { - callback.call(o, i, o[i], type || i); - var property = o[i]; - var propertyType = _.util.type(property); - if (propertyType === "Object" && !visited[objId(property)]) { - visited[objId(property)] = true; - DFS(property, callback, null, visited); - } else if (propertyType === "Array" && !visited[objId(property)]) { - visited[objId(property)] = true; - DFS(property, callback, i, visited); - } - } - } - }, - plugins: {}, - /** - * This is the most high-level function in Prism’s API. - * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on - * each one of them. - * - * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`. - * - * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}. - * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}. - * @memberof Prism - * @public - */ highlightAll: function(async, callback) { - _.highlightAllUnder(document, async, callback); - }, - /** - * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls - * {@link Prism.highlightElement} on each one of them. - * - * The following hooks will be run: - * 1. `before-highlightall` - * 2. `before-all-elements-highlight` - * 3. All hooks of {@link Prism.highlightElement} for each element. - * - * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted. - * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers. - * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done. - * @memberof Prism - * @public - */ highlightAllUnder: function(container, async, callback) { - var env = { - callback: callback, - container: container, - selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' - }; - _.hooks.run("before-highlightall", env); - env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector)); - _.hooks.run("before-all-elements-highlight", env); - for(var i = 0, element; element = env.elements[i++];)_.highlightElement(element, async === true, env.callback); - }, - /** - * Highlights the code inside a single element. - * - * The following hooks will be run: - * 1. `before-sanity-check` - * 2. `before-highlight` - * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`. - * 4. `before-insert` - * 5. `after-highlight` - * 6. `complete` - * - * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for - * the element's language. - * - * @param {Element} element The element containing the code. - * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier. - * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers - * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is - * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default). - * - * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for - * asynchronous highlighting to work. You can build your own bundle on the - * [Download page](https://prismjs.com/download.html). - * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done. - * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously. - * @memberof Prism - * @public - */ highlightElement: function(element, async, callback) { - // Find language - var language = _.util.getLanguage(element); - var grammar = _.languages[language]; - // Set language on the element, if not present - _.util.setLanguage(element, language); - // Set language on the parent, for styling - var parent = element.parentElement; - if (parent && parent.nodeName.toLowerCase() === "pre") _.util.setLanguage(parent, language); - var code = element.textContent; - var env = { - element: element, - language: language, - grammar: grammar, - code: code - }; - function insertHighlightedCode(highlightedCode) { - env.highlightedCode = highlightedCode; - _.hooks.run("before-insert", env); - env.element.innerHTML = env.highlightedCode; - _.hooks.run("after-highlight", env); - _.hooks.run("complete", env); - callback && callback.call(env.element); - } - _.hooks.run("before-sanity-check", env); - // plugins may change/add the parent/element - parent = env.element.parentElement; - if (parent && parent.nodeName.toLowerCase() === "pre" && !parent.hasAttribute("tabindex")) parent.setAttribute("tabindex", "0"); - if (!env.code) { - _.hooks.run("complete", env); - callback && callback.call(env.element); - return; - } - _.hooks.run("before-highlight", env); - if (!env.grammar) { - insertHighlightedCode(_.util.encode(env.code)); - return; - } - if (async && _self.Worker) { - var worker = new Worker(_.filename); - worker.onmessage = function(evt) { - insertHighlightedCode(evt.data); - }; - worker.postMessage(JSON.stringify({ - language: env.language, - code: env.code, - immediateClose: true - })); - } else insertHighlightedCode(_.highlight(env.code, env.grammar, env.language)); - }, - /** - * Low-level function, only use if you know what you’re doing. It accepts a string of text as input - * and the language definitions to use, and returns a string with the HTML produced. - * - * The following hooks will be run: - * 1. `before-tokenize` - * 2. `after-tokenize` - * 3. `wrap`: On each {@link Token}. - * - * @param {string} text A string with the code to be highlighted. - * @param {Grammar} grammar An object containing the tokens to use. - * - * Usually a language definition like `Prism.languages.markup`. - * @param {string} language The name of the language definition passed to `grammar`. - * @returns {string} The highlighted HTML. - * @memberof Prism - * @public - * @example - * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript'); - */ highlight: function(text, grammar, language) { - var env = { - code: text, - grammar: grammar, - language: language - }; - _.hooks.run("before-tokenize", env); - if (!env.grammar) throw new Error('The language "' + env.language + '" has no grammar.'); - env.tokens = _.tokenize(env.code, env.grammar); - _.hooks.run("after-tokenize", env); - return Token.stringify(_.util.encode(env.tokens), env.language); - }, - /** - * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input - * and the language definitions to use, and returns an array with the tokenized code. - * - * When the language definition includes nested tokens, the function is called recursively on each of these tokens. - * - * This method could be useful in other contexts as well, as a very crude parser. - * - * @param {string} text A string with the code to be highlighted. - * @param {Grammar} grammar An object containing the tokens to use. - * - * Usually a language definition like `Prism.languages.markup`. - * @returns {TokenStream} An array of strings and tokens, a token stream. - * @memberof Prism - * @public - * @example - * let code = `var foo = 0;`; - * let tokens = Prism.tokenize(code, Prism.languages.javascript); - * tokens.forEach(token => { - * if (token instanceof Prism.Token && token.type === 'number') { - * console.log(`Found numeric literal: ${token.content}`); - * } - * }); - */ tokenize: function(text, grammar) { - var rest = grammar.rest; - if (rest) { - for(var token in rest)grammar[token] = rest[token]; - delete grammar.rest; - } - var tokenList = new LinkedList(); - addAfter(tokenList, tokenList.head, text); - matchGrammar(text, tokenList, grammar, tokenList.head, 0); - return toArray(tokenList); - }, - /** - * @namespace - * @memberof Prism - * @public - */ hooks: { - all: {}, - /** - * Adds the given callback to the list of callbacks for the given hook. - * - * The callback will be invoked when the hook it is registered for is run. - * Hooks are usually directly run by a highlight function but you can also run hooks yourself. - * - * One callback function can be registered to multiple hooks and the same hook multiple times. - * - * @param {string} name The name of the hook. - * @param {HookCallback} callback The callback function which is given environment variables. - * @public - */ add: function(name, callback) { - var hooks = _.hooks.all; - hooks[name] = hooks[name] || []; - hooks[name].push(callback); - }, - /** - * Runs a hook invoking all registered callbacks with the given environment variables. - * - * Callbacks will be invoked synchronously and in the order in which they were registered. - * - * @param {string} name The name of the hook. - * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered. - * @public - */ run: function(name, env) { - var callbacks = _.hooks.all[name]; - if (!callbacks || !callbacks.length) return; - for(var i = 0, callback; callback = callbacks[i++];)callback(env); - } - }, - Token: Token - }; - _self.Prism = _; - // Typescript note: - // The following can be used to import the Token type in JSDoc: - // - // @typedef {InstanceType<import("./prism-core")["Token"]>} Token - /** - * Creates a new token. - * - * @param {string} type See {@link Token#type type} - * @param {string | TokenStream} content See {@link Token#content content} - * @param {string|string[]} [alias] The alias(es) of the token. - * @param {string} [matchedStr=""] A copy of the full string this token was created from. - * @class - * @global - * @public - */ function Token(type, content, alias, matchedStr) { - /** - * The type of the token. - * - * This is usually the key of a pattern in a {@link Grammar}. - * - * @type {string} - * @see GrammarToken - * @public - */ this.type = type; - /** - * The strings or tokens contained by this token. - * - * This will be a token stream if the pattern matched also defined an `inside` grammar. - * - * @type {string | TokenStream} - * @public - */ this.content = content; - /** - * The alias(es) of the token. - * - * @type {string|string[]} - * @see GrammarToken - * @public - */ this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length | 0; - } - /** - * A token stream is an array of strings and {@link Token Token} objects. - * - * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process - * them. - * - * 1. No adjacent strings. - * 2. No empty strings. - * - * The only exception here is the token stream that only contains the empty string and nothing else. - * - * @typedef {Array<string | Token>} TokenStream - * @global - * @public - */ /** - * Converts the given token or token stream to an HTML representation. - * - * The following hooks will be run: - * 1. `wrap`: On each {@link Token}. - * - * @param {string | Token | TokenStream} o The token or token stream to be converted. - * @param {string} language The name of current language. - * @returns {string} The HTML representation of the token or token stream. - * @memberof Token - * @static - */ Token.stringify = function stringify(o, language) { - if (typeof o == "string") return o; - if (Array.isArray(o)) { - var s = ""; - o.forEach(function(e) { - s += stringify(e, language); - }); - return s; - } - var env = { - type: o.type, - content: stringify(o.content, language), - tag: "span", - classes: [ - "token", - o.type - ], - attributes: {}, - language: language - }; - var aliases = o.alias; - if (aliases) { - if (Array.isArray(aliases)) Array.prototype.push.apply(env.classes, aliases); - else env.classes.push(aliases); - } - _.hooks.run("wrap", env); - var attributes = ""; - for(var name in env.attributes)attributes += " " + name + '="' + (env.attributes[name] || "").replace(/"/g, """) + '"'; - return "<" + env.tag + ' class="' + env.classes.join(" ") + '"' + attributes + ">" + env.content + "</" + env.tag + ">"; - }; - /** - * @param {RegExp} pattern - * @param {number} pos - * @param {string} text - * @param {boolean} lookbehind - * @returns {RegExpExecArray | null} - */ function matchPattern(pattern, pos, text, lookbehind) { - pattern.lastIndex = pos; - var match = pattern.exec(text); - if (match && lookbehind && match[1]) { - // change the match to remove the text matched by the Prism lookbehind group - var lookbehindLength = match[1].length; - match.index += lookbehindLength; - match[0] = match[0].slice(lookbehindLength); - } - return match; - } - /** - * @param {string} text - * @param {LinkedList<string | Token>} tokenList - * @param {any} grammar - * @param {LinkedListNode<string | Token>} startNode - * @param {number} startPos - * @param {RematchOptions} [rematch] - * @returns {void} - * @private - * - * @typedef RematchOptions - * @property {string} cause - * @property {number} reach - */ function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) { - for(var token in grammar){ - if (!grammar.hasOwnProperty(token) || !grammar[token]) continue; - var patterns = grammar[token]; - patterns = Array.isArray(patterns) ? patterns : [ - patterns - ]; - for(var j = 0; j < patterns.length; ++j){ - if (rematch && rematch.cause == token + "," + j) return; - var patternObj = patterns[j]; - var inside = patternObj.inside; - var lookbehind = !!patternObj.lookbehind; - var greedy = !!patternObj.greedy; - var alias = patternObj.alias; - if (greedy && !patternObj.pattern.global) { - // Without the global flag, lastIndex won't work - var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0]; - patternObj.pattern = RegExp(patternObj.pattern.source, flags + "g"); - } - /** @type {RegExp} */ var pattern = patternObj.pattern || patternObj; - for(var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next){ - if (rematch && pos >= rematch.reach) break; - var str = currentNode.value; - if (tokenList.length > text.length) // Something went terribly wrong, ABORT, ABORT! - return; - if (str instanceof Token) continue; - var removeCount = 1; // this is the to parameter of removeBetween - var match; - if (greedy) { - match = matchPattern(pattern, pos, text, lookbehind); - if (!match || match.index >= text.length) break; - var from = match.index; - var to = match.index + match[0].length; - var p = pos; - // find the node that contains the match - p += currentNode.value.length; - while(from >= p){ - currentNode = currentNode.next; - p += currentNode.value.length; - } - // adjust pos (and p) - p -= currentNode.value.length; - pos = p; - // the current node is a Token, then the match starts inside another Token, which is invalid - if (currentNode.value instanceof Token) continue; - // find the last node which is affected by this match - for(var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === "string"); k = k.next){ - removeCount++; - p += k.value.length; - } - removeCount--; - // replace with the new match - str = text.slice(pos, p); - match.index -= pos; - } else { - match = matchPattern(pattern, 0, str, lookbehind); - if (!match) continue; - } - // eslint-disable-next-line no-redeclare - var from = match.index; - var matchStr = match[0]; - var before = str.slice(0, from); - var after = str.slice(from + matchStr.length); - var reach = pos + str.length; - if (rematch && reach > rematch.reach) rematch.reach = reach; - var removeFrom = currentNode.prev; - if (before) { - removeFrom = addAfter(tokenList, removeFrom, before); - pos += before.length; - } - removeRange(tokenList, removeFrom, removeCount); - var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr); - currentNode = addAfter(tokenList, removeFrom, wrapped); - if (after) addAfter(tokenList, currentNode, after); - if (removeCount > 1) { - // at least one Token object was removed, so we have to do some rematching - // this can only happen if the current pattern is greedy - /** @type {RematchOptions} */ var nestedRematch = { - cause: token + "," + j, - reach: reach - }; - matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch); - // the reach might have been extended because of the rematching - if (rematch && nestedRematch.reach > rematch.reach) rematch.reach = nestedRematch.reach; - } - } - } - } - } - /** - * @typedef LinkedListNode - * @property {T} value - * @property {LinkedListNode<T> | null} prev The previous node. - * @property {LinkedListNode<T> | null} next The next node. - * @template T - * @private - */ /** - * @template T - * @private - */ function LinkedList() { - /** @type {LinkedListNode<T>} */ var head = { - value: null, - prev: null, - next: null - }; - /** @type {LinkedListNode<T>} */ var tail = { - value: null, - prev: head, - next: null - }; - head.next = tail; - /** @type {LinkedListNode<T>} */ this.head = head; - /** @type {LinkedListNode<T>} */ this.tail = tail; - this.length = 0; - } - /** - * Adds a new node with the given value to the list. - * - * @param {LinkedList<T>} list - * @param {LinkedListNode<T>} node - * @param {T} value - * @returns {LinkedListNode<T>} The added node. - * @template T - */ function addAfter(list, node, value) { - // assumes that node != list.tail && values.length >= 0 - var next = node.next; - var newNode = { - value: value, - prev: node, - next: next - }; - node.next = newNode; - next.prev = newNode; - list.length++; - return newNode; - } - /** - * Removes `count` nodes after the given node. The given node will not be removed. - * - * @param {LinkedList<T>} list - * @param {LinkedListNode<T>} node - * @param {number} count - * @template T - */ function removeRange(list, node, count) { - var next = node.next; - for(var i = 0; i < count && next !== list.tail; i++)next = next.next; - node.next = next; - next.prev = node; - list.length -= i; - } - /** - * @param {LinkedList<T>} list - * @returns {T[]} - * @template T - */ function toArray(list) { - var array = []; - var node = list.head.next; - while(node !== list.tail){ - array.push(node.value); - node = node.next; - } - return array; - } - if (!_self.document) { - if (!_self.addEventListener) // in Node.js - return _; - if (!_.disableWorkerMessageHandler) // In worker - _self.addEventListener("message", function(evt) { - var message = JSON.parse(evt.data); - var lang = message.language; - var code = message.code; - var immediateClose = message.immediateClose; - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) _self.close(); - }, false); - return _; - } - // Get current script and highlight - var script = _.util.currentScript(); - if (script) { - _.filename = script.src; - if (script.hasAttribute("data-manual")) _.manual = true; - } - function highlightAutomaticallyCallback() { - if (!_.manual) _.highlightAll(); - } - if (!_.manual) { - // If the document state is "loading", then we'll use DOMContentLoaded. - // If the document state is "interactive" and the prism.js script is deferred, then we'll also use the - // DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they - // might take longer one animation frame to execute which can create a race condition where only some plugins have - // been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded. - // See https://github.com/PrismJS/prism/issues/2102 - var readyState = document.readyState; - if (readyState === "loading" || readyState === "interactive" && script && script.defer) document.addEventListener("DOMContentLoaded", highlightAutomaticallyCallback); - else if (window.requestAnimationFrame) window.requestAnimationFrame(highlightAutomaticallyCallback); - else window.setTimeout(highlightAutomaticallyCallback, 16); - } - return _; -}($4b862aa2466a294d$var$_self); -if (0, $4b862aa2466a294d$exports) $4b862aa2466a294d$exports = $4b862aa2466a294d$var$Prism; -// hack for components to work correctly in node.js -if (typeof $parcel$global !== "undefined") $parcel$global.Prism = $4b862aa2466a294d$var$Prism; - // some additional documentation/types - /** - * The expansion of a simple `RegExp` literal to support additional properties. - * - * @typedef GrammarToken - * @property {RegExp} pattern The regular expression of the token. - * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively) - * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token. - * @property {boolean} [greedy=false] Whether the token is greedy. - * @property {string|string[]} [alias] An optional alias or list of aliases. - * @property {Grammar} [inside] The nested grammar of this token. - * - * The `inside` grammar will be used to tokenize the text value of each token of this kind. - * - * This can be used to make nested and even recursive language definitions. - * - * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into - * each another. - * @global - * @public - */ /** - * @typedef Grammar - * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>} - * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar. - * @global - * @public - */ /** - * A function which will invoked after an element was successfully highlighted. - * - * @callback HighlightCallback - * @param {Element} element The element successfully highlighted. - * @returns {void} - * @global - * @public - */ /** - * @callback HookCallback - * @param {Object<string, any>} env The environment variables of the hook. - * @returns {void} - * @global - * @public - */ - - -Prism.languages.markup = { - "comment": { - pattern: /<!--(?:(?!<!--)[\s\S])*?-->/, - greedy: true - }, - "prolog": { - pattern: /<\?[\s\S]+?\?>/, - greedy: true - }, - "doctype": { - // https://www.w3.org/TR/xml/#NT-doctypedecl - pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i, - greedy: true, - inside: { - "internal-subset": { - pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/, - lookbehind: true, - greedy: true, - inside: null // see below - }, - "string": { - pattern: /"[^"]*"|'[^']*'/, - greedy: true - }, - "punctuation": /^<!|>$|[[\]]/, - "doctype-tag": /^DOCTYPE/i, - "name": /[^\s<>'"]+/ - } - }, - "cdata": { - pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, - greedy: true - }, - "tag": { - pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, - greedy: true, - inside: { - "tag": { - pattern: /^<\/?[^\s>\/]+/, - inside: { - "punctuation": /^<\/?/, - "namespace": /^[^\s>\/:]+:/ - } - }, - "special-attr": [], - "attr-value": { - pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, - inside: { - "punctuation": [ - { - pattern: /^=/, - alias: "attr-equals" - }, - { - pattern: /^(\s*)["']|["']$/, - lookbehind: true - } - ] - } - }, - "punctuation": /\/?>/, - "attr-name": { - pattern: /[^\s>\/]+/, - inside: { - "namespace": /^[^\s>\/:]+:/ - } - } - } - }, - "entity": [ - { - pattern: /&[\da-z]{1,8};/i, - alias: "named-entity" - }, - /&#x?[\da-f]{1,8};/i - ] -}; -Prism.languages.markup["tag"].inside["attr-value"].inside["entity"] = Prism.languages.markup["entity"]; -Prism.languages.markup["doctype"].inside["internal-subset"].inside = Prism.languages.markup; -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add("wrap", function(env) { - if (env.type === "entity") env.attributes["title"] = env.content.replace(/&/, "&"); -}); -Object.defineProperty(Prism.languages.markup.tag, "addInlined", { - /** - * Adds an inlined language to markup. - * - * An example of an inlined language is CSS with `<style>` tags. - * - * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as - * case insensitive. - * @param {string} lang The language key. - * @example - * addInlined('style', 'css'); - */ value: function addInlined(tagName, lang) { - var includedCdataInside = {}; - includedCdataInside["language-" + lang] = { - pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i, - lookbehind: true, - inside: Prism.languages[lang] - }; - includedCdataInside["cdata"] = /^<!\[CDATA\[|\]\]>$/i; - var inside = { - "included-cdata": { - pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, - inside: includedCdataInside - } - }; - inside["language-" + lang] = { - pattern: /[\s\S]+/, - inside: Prism.languages[lang] - }; - var def = {}; - def[tagName] = { - pattern: RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g, function() { - return tagName; - }), "i"), - lookbehind: true, - greedy: true, - inside: inside - }; - Prism.languages.insertBefore("markup", "cdata", def); - } -}); -Object.defineProperty(Prism.languages.markup.tag, "addAttribute", { - /** - * Adds an pattern to highlight languages embedded in HTML attributes. - * - * An example of an inlined language is CSS with `style` attributes. - * - * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as - * case insensitive. - * @param {string} lang The language key. - * @example - * addAttribute('style', 'css'); - */ value: function(attrName, lang) { - Prism.languages.markup.tag.inside["special-attr"].push({ - pattern: RegExp(/(^|["'\s])/.source + "(?:" + attrName + ")" + /\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source, "i"), - lookbehind: true, - inside: { - "attr-name": /^[^\s=]+/, - "attr-value": { - pattern: /=[\s\S]+/, - inside: { - "value": { - pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/, - lookbehind: true, - alias: [ - lang, - "language-" + lang - ], - inside: Prism.languages[lang] - }, - "punctuation": [ - { - pattern: /^=/, - alias: "attr-equals" - }, - /"|'/ - ] - } - } - } - }); - } -}); -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; -Prism.languages.xml = Prism.languages.extend("markup", {}); -Prism.languages.ssml = Prism.languages.xml; -Prism.languages.atom = Prism.languages.xml; -Prism.languages.rss = Prism.languages.xml; - - -(function(Prism1) { - // Allow only one line break - var inner = /(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source; - /** - * This function is intended for the creation of the bold or italic pattern. - * - * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped. - * - * _Note:_ Keep in mind that this adds a capturing group. - * - * @param {string} pattern - * @returns {RegExp} - */ function createInline(pattern) { - pattern = pattern.replace(/<inner>/g, function() { - return inner; - }); - return RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + "(?:" + pattern + ")"); - } - var tableCell = /(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source; - var tableRow = /\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g, function() { - return tableCell; - }); - var tableLine = /\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source; - Prism1.languages.markdown = Prism1.languages.extend("markup", {}); - Prism1.languages.insertBefore("markdown", "prolog", { - "front-matter-block": { - pattern: /(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/, - lookbehind: true, - greedy: true, - inside: { - "punctuation": /^---|---$/, - "front-matter": { - pattern: /\S+(?:\s+\S+)*/, - alias: [ - "yaml", - "language-yaml" - ], - inside: Prism1.languages.yaml - } - } - }, - "blockquote": { - // > ... - pattern: /^>(?:[\t ]*>)*/m, - alias: "punctuation" - }, - "table": { - pattern: RegExp("^" + tableRow + tableLine + "(?:" + tableRow + ")*", "m"), - inside: { - "table-data-rows": { - pattern: RegExp("^(" + tableRow + tableLine + ")(?:" + tableRow + ")*$"), - lookbehind: true, - inside: { - "table-data": { - pattern: RegExp(tableCell), - inside: Prism1.languages.markdown - }, - "punctuation": /\|/ - } - }, - "table-line": { - pattern: RegExp("^(" + tableRow + ")" + tableLine + "$"), - lookbehind: true, - inside: { - "punctuation": /\||:?-{3,}:?/ - } - }, - "table-header-row": { - pattern: RegExp("^" + tableRow + "$"), - inside: { - "table-header": { - pattern: RegExp(tableCell), - alias: "important", - inside: Prism1.languages.markdown - }, - "punctuation": /\|/ - } - } - } - }, - "code": [ - { - // Prefixed by 4 spaces or 1 tab and preceded by an empty line - pattern: /((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/, - lookbehind: true, - alias: "keyword" - }, - { - // ```optional language - // code block - // ``` - pattern: /^```[\s\S]*?^```$/m, - greedy: true, - inside: { - "code-block": { - pattern: /^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m, - lookbehind: true - }, - "code-language": { - pattern: /^(```).+/, - lookbehind: true - }, - "punctuation": /```/ - } - } - ], - "title": [ - { - // title 1 - // ======= - // title 2 - // ------- - pattern: /\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m, - alias: "important", - inside: { - punctuation: /==+$|--+$/ - } - }, - { - // # title 1 - // ###### title 6 - pattern: /(^\s*)#.+/m, - lookbehind: true, - alias: "important", - inside: { - punctuation: /^#+|#+$/ - } - } - ], - "hr": { - // *** - // --- - // * * * - // ----------- - pattern: /(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m, - lookbehind: true, - alias: "punctuation" - }, - "list": { - // * item - // + item - // - item - // 1. item - pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, - lookbehind: true, - alias: "punctuation" - }, - "url-reference": { - // [id]: http://example.com "Optional title" - // [id]: http://example.com 'Optional title' - // [id]: http://example.com (Optional title) - // [id]: <http://example.com> "Optional title" - pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, - inside: { - "variable": { - pattern: /^(!?\[)[^\]]+/, - lookbehind: true - }, - "string": /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/, - "punctuation": /^[\[\]!:]|[<>]/ - }, - alias: "url" - }, - "bold": { - // **strong** - // __strong__ - // allow one nested instance of italic text using the same delimiter - pattern: createInline(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source), - lookbehind: true, - greedy: true, - inside: { - "content": { - pattern: /(^..)[\s\S]+(?=..$)/, - lookbehind: true, - inside: {} // see below - }, - "punctuation": /\*\*|__/ - } - }, - "italic": { - // *em* - // _em_ - // allow one nested instance of bold text using the same delimiter - pattern: createInline(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source), - lookbehind: true, - greedy: true, - inside: { - "content": { - pattern: /(^.)[\s\S]+(?=.$)/, - lookbehind: true, - inside: {} // see below - }, - "punctuation": /[*_]/ - } - }, - "strike": { - // ~~strike through~~ - // ~strike~ - // eslint-disable-next-line regexp/strict - pattern: createInline(/(~~?)(?:(?!~)<inner>)+\2/.source), - lookbehind: true, - greedy: true, - inside: { - "content": { - pattern: /(^~~?)[\s\S]+(?=\1$)/, - lookbehind: true, - inside: {} // see below - }, - "punctuation": /~~?/ - } - }, - "code-snippet": { - // `code` - // ``code`` - pattern: /(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/, - lookbehind: true, - greedy: true, - alias: [ - "code", - "keyword" - ] - }, - "url": { - // [example](http://example.com "Optional title") - // [example][id] - // [example] [id] - pattern: createInline(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source), - lookbehind: true, - greedy: true, - inside: { - "operator": /^!/, - "content": { - pattern: /(^\[)[^\]]+(?=\])/, - lookbehind: true, - inside: {} // see below - }, - "variable": { - pattern: /(^\][ \t]?\[)[^\]]+(?=\]$)/, - lookbehind: true - }, - "url": { - pattern: /(^\]\()[^\s)]+/, - lookbehind: true - }, - "string": { - pattern: /(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/, - lookbehind: true - } - } - } - }); - [ - "url", - "bold", - "italic", - "strike" - ].forEach(function(token) { - [ - "url", - "bold", - "italic", - "strike", - "code-snippet" - ].forEach(function(inside) { - if (token !== inside) Prism1.languages.markdown[token].inside.content.inside[inside] = Prism1.languages.markdown[inside]; - }); - }); - Prism1.hooks.add("after-tokenize", function(env) { - if (env.language !== "markdown" && env.language !== "md") return; - function walkTokens(tokens) { - if (!tokens || typeof tokens === "string") return; - for(var i = 0, l = tokens.length; i < l; i++){ - var token = tokens[i]; - if (token.type !== "code") { - walkTokens(token.content); - continue; - } - /* - * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token - * is optional. But the grammar is defined so that there is only one case we have to handle: - * - * token.content = [ - * <span class="punctuation">```</span>, - * <span class="code-language">xxxx</span>, - * '\n', // exactly one new lines (\r or \n or \r\n) - * <span class="code-block">...</span>, - * '\n', // exactly one new lines again - * <span class="punctuation">```</span> - * ]; - */ var codeLang = token.content[1]; - var codeBlock = token.content[3]; - if (codeLang && codeBlock && codeLang.type === "code-language" && codeBlock.type === "code-block" && typeof codeLang.content === "string") { - // this might be a language that Prism does not support - // do some replacements to support C++, C#, and F# - var lang = codeLang.content.replace(/\b#/g, "sharp").replace(/\b\+\+/g, "pp"); - // only use the first word - lang = (/[a-z][\w-]*/i.exec(lang) || [ - "" - ])[0].toLowerCase(); - var alias = "language-" + lang; - // add alias - if (!codeBlock.alias) codeBlock.alias = [ - alias - ]; - else if (typeof codeBlock.alias === "string") codeBlock.alias = [ - codeBlock.alias, - alias - ]; - else codeBlock.alias.push(alias); - } - } - } - walkTokens(env.tokens); - }); - Prism1.hooks.add("wrap", function(env) { - if (env.type !== "code-block") return; - var codeLang = ""; - for(var i = 0, l = env.classes.length; i < l; i++){ - var cls = env.classes[i]; - var match = /language-(.+)/.exec(cls); - if (match) { - codeLang = match[1]; - break; - } - } - var grammar = Prism1.languages[codeLang]; - if (!grammar) { - if (codeLang && codeLang !== "none" && Prism1.plugins.autoloader) { - var id = "md-" + new Date().valueOf() + "-" + Math.floor(Math.random() * 1e16); - env.attributes["id"] = id; - Prism1.plugins.autoloader.loadLanguages(codeLang, function() { - var ele = document.getElementById(id); - if (ele) ele.innerHTML = Prism1.highlight(ele.textContent, Prism1.languages[codeLang], codeLang); - }); - } - } else env.content = Prism1.highlight(textContent(env.content), grammar, codeLang); - }); - var tagPattern = RegExp(Prism1.languages.markup.tag.pattern.source, "gi"); - /** - * A list of known entity names. - * - * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function. - * - * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2} - */ var KNOWN_ENTITY_NAMES = { - "amp": "&", - "lt": "<", - "gt": ">", - "quot": '"' - }; - // IE 11 doesn't support `String.fromCodePoint` - var fromCodePoint = String.fromCodePoint || String.fromCharCode; - /** - * Returns the text content of a given HTML source code string. - * - * @param {string} html - * @returns {string} - */ function textContent(html) { - // remove all tags - var text = html.replace(tagPattern, ""); - // decode known entities - text = text.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function(m, code) { - code = code.toLowerCase(); - if (code[0] === "#") { - var value; - if (code[1] === "x") value = parseInt(code.slice(2), 16); - else value = Number(code.slice(1)); - return fromCodePoint(value); - } else { - var known = KNOWN_ENTITY_NAMES[code]; - if (known) return known; - // unable to decode - return m; - } - }); - return text; - } - Prism1.languages.md = Prism1.languages.markdown; -})(Prism); - - -class $e6c02983873e6cdf$var$TextEditor extends (0, $68b475f2a0292491$export$2e2bcd8739ae039) { - /** - * Text Editor UI Component - * @constructor - * @param {object} textEditor - Text area that will edit text - * @param {number} scrollLimit - YPos where editor position will become fixed - */ //-------------------------- - // constructor - //-------------------------- - constructor(textEditor, scrollLimit){ - super(); - document.querySelector('[role="text-editor-control"]').addEventListener("scroll", (e)=>{ - console.log("HERE"); - }); - document.body.addEventListener("scroll", (e)=>{ - var fixLimit = scrollLimit; - console.log("POSITION", document.body.scrollTop + " : " + fixLimit); - if (document.body.scrollTop + 5 >= fixLimit) document.querySelector('[role="text-editor-control"]').classList.add("control-freeze"); - else document.querySelector('[role="text-editor-control"]').classList.remove("control-freeze"); - }); - document.getElementById("edit").addEventListener("input", (e)=>{ - let result_element = document.querySelector("#highlight-content"); - this.textEditor = textEditor; - // Update code - let text = e.target.value; - result_element.innerHTML = text.replace(new RegExp("&", "g"), "&").replace(new RegExp("<", "g"), "<"); - let editorHeight = document.getElementById("highlight").offsetHeight; - document.querySelector('[role="edit-post-wrapper"]').style.height = editorHeight + "px"; - e.target.style.height = editorHeight + 30 + "px"; //TODO: yeah, it's ugly but it works for now, fix soon - // Syntax Highlight - (0, (/*@__PURE__*/$parcel$interopDefault($4b862aa2466a294d$exports))).highlightElement(result_element); - }); - document.getElementById("edit").addEventListener("scroll", (e)=>{ - /* Scroll result to scroll coords of event - sync with textarea */ let result_element = document.querySelector("#highlight"); - // Get and set x and y - result_element.scrollTop = e.scrollTop; - result_element.scrollLeft = e.scrollLeft; - }); - document.getElementById("edit").dispatchEvent(new Event("input")); - this.setInputs(); - //freeze editor formatting so it doesn't scroll off screen - } - //-------------------------- - // methods - //-------------------------- - setInputs() { - var editorButtons = document.querySelectorAll(".editor-button"); - for(var i = 0, length = editorButtons.length; i < length; i++)editorButtons[i].addEventListener("click", (e)=>this.handleEditorOption(e), false); - } - notify(type, data) { - switch(type){ - case $995f55a4eccd256d$export$f88aea22a746eab: - document.getElementById("submit-update").classList.add("icon-hide"); - document.getElementById("submit-good").classList.remove("icon-hide"); - document.getElementById("edit-update").classList.remove("submit-start"); - document.getElementById("edit-update").classList.add("submit-cool"); - setTimeout(()=>{ - document.getElementById("submit-update").classList.remove("icon-hide"); - document.getElementById("submit-good").classList.add("icon-hide"); - document.getElementById("edit-update").classList.add("submit-start"); - document.getElementById("edit-update").classList.remove("submit-cool"); - }, 2000); - break; - case $995f55a4eccd256d$export$a2d54b707b6e22e1: - break; - case $0d6abf40542266b3$export$80082ca64f03d0e9: - { - let len = this.textEditor.value.length; - let start = this.textEditor.selectionStart; - let end = this.textEditor.selectionEnd; - let insert = ""; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - document.getElementById("edit").dispatchEvent(new Event("input")); - break; - } - } - } - //-------------------------- - // event handlers - //-------------------------- - handleEditorOption(e) { - e.preventDefault(); - let len = this.textEditor.value.length; - let start = this.textEditor.selectionStart; - let end = this.textEditor.selectionEnd; - let selectedText = this.textEditor.value.substring(start, end); - let insert = ""; - switch(e.target.id){ - case "edit-bold": - insert = "**" + selectedText + "**"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-italic": - insert = "*" + selectedText + "*"; - //console.log(this.textEditor); - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-strikethrough": - insert = "~~" + selectedText + "~~"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-header1": - insert = "# " + selectedText + "\n"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-header2": - insert = "## " + selectedText + "\n"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-header3": - insert = "### " + selectedText + "\n"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - break; - case "edit-link": - { - let url = prompt("Let's get that url, boss"); - let link = url.toLowerCase(); - insert = "[" + selectedText + "](" + link + ")"; - this.textEditor.value = this.textEditor.value.substring(0, start) + insert + this.textEditor.value.substring(end, len); - } - break; - case "edit-image": - //this.caretPos = position(this.textEditor).pos; - this.emitEvent($0d6abf40542266b3$export$80082ca64f03d0e9); - break; - case "submit-save": - case "edit-save": - this.emitEvent($0d6abf40542266b3$export$1844db352cf5aef3); - break; - case "submit-update": - case "edit-update": - this.emitEvent($0d6abf40542266b3$export$14580fc61246740); - break; - case "edit-delete": - this.emitEvent($0d6abf40542266b3$export$e0c06b1ddd9992cc); - break; - default: - break; - } - document.getElementById("edit").dispatchEvent(new Event("input")); - } -} -var $e6c02983873e6cdf$export$2e2bcd8739ae039 = $e6c02983873e6cdf$var$TextEditor; - - -/* - * anime.js v3.2.1 - * (c) 2020 Julian Garnier - * Released under the MIT license - * animejs.com - */ // Defaults -var $8b9e2899b2e82f52$var$defaultInstanceSettings = { - update: null, - begin: null, - loopBegin: null, - changeBegin: null, - change: null, - changeComplete: null, - loopComplete: null, - complete: null, - loop: 1, - direction: "normal", - autoplay: true, - timelineOffset: 0 -}; -var $8b9e2899b2e82f52$var$defaultTweenSettings = { - duration: 1000, - delay: 0, - endDelay: 0, - easing: "easeOutElastic(1, .5)", - round: 0 -}; -var $8b9e2899b2e82f52$var$validTransforms = [ - "translateX", - "translateY", - "translateZ", - "rotate", - "rotateX", - "rotateY", - "rotateZ", - "scale", - "scaleX", - "scaleY", - "scaleZ", - "skew", - "skewX", - "skewY", - "perspective", - "matrix", - "matrix3d" -]; -// Caching -var $8b9e2899b2e82f52$var$cache = { - CSS: {}, - springs: {} -}; -// Utils -function $8b9e2899b2e82f52$var$minMax(val, min, max) { - return Math.min(Math.max(val, min), max); -} -function $8b9e2899b2e82f52$var$stringContains(str, text) { - return str.indexOf(text) > -1; -} -function $8b9e2899b2e82f52$var$applyArguments(func, args) { - return func.apply(null, args); -} -var $8b9e2899b2e82f52$var$is = { - arr: function(a) { - return Array.isArray(a); - }, - obj: function(a) { - return $8b9e2899b2e82f52$var$stringContains(Object.prototype.toString.call(a), "Object"); - }, - pth: function(a) { - return $8b9e2899b2e82f52$var$is.obj(a) && a.hasOwnProperty("totalLength"); - }, - svg: function(a) { - return a instanceof SVGElement; - }, - inp: function(a) { - return a instanceof HTMLInputElement; - }, - dom: function(a) { - return a.nodeType || $8b9e2899b2e82f52$var$is.svg(a); - }, - str: function(a) { - return typeof a === "string"; - }, - fnc: function(a) { - return typeof a === "function"; - }, - und: function(a) { - return typeof a === "undefined"; - }, - nil: function(a) { - return $8b9e2899b2e82f52$var$is.und(a) || a === null; - }, - hex: function(a) { - return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); - }, - rgb: function(a) { - return /^rgb/.test(a); - }, - hsl: function(a) { - return /^hsl/.test(a); - }, - col: function(a) { - return $8b9e2899b2e82f52$var$is.hex(a) || $8b9e2899b2e82f52$var$is.rgb(a) || $8b9e2899b2e82f52$var$is.hsl(a); - }, - key: function(a) { - return !$8b9e2899b2e82f52$var$defaultInstanceSettings.hasOwnProperty(a) && !$8b9e2899b2e82f52$var$defaultTweenSettings.hasOwnProperty(a) && a !== "targets" && a !== "keyframes"; - } -}; -// Easings -function $8b9e2899b2e82f52$var$parseEasingParameters(string) { - var match = /\(([^)]+)\)/.exec(string); - return match ? match[1].split(",").map(function(p) { - return parseFloat(p); - }) : []; -} -// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js -function $8b9e2899b2e82f52$var$spring(string, duration) { - var params = $8b9e2899b2e82f52$var$parseEasingParameters(string); - var mass = $8b9e2899b2e82f52$var$minMax($8b9e2899b2e82f52$var$is.und(params[0]) ? 1 : params[0], .1, 100); - var stiffness = $8b9e2899b2e82f52$var$minMax($8b9e2899b2e82f52$var$is.und(params[1]) ? 100 : params[1], .1, 100); - var damping = $8b9e2899b2e82f52$var$minMax($8b9e2899b2e82f52$var$is.und(params[2]) ? 10 : params[2], .1, 100); - var velocity = $8b9e2899b2e82f52$var$minMax($8b9e2899b2e82f52$var$is.und(params[3]) ? 0 : params[3], .1, 100); - var w0 = Math.sqrt(stiffness / mass); - var zeta = damping / (2 * Math.sqrt(stiffness * mass)); - var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0; - var a = 1; - var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0; - function solver(t) { - var progress = duration ? duration * t / 1000 : t; - if (zeta < 1) progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress)); - else progress = (a + b * progress) * Math.exp(-progress * w0); - if (t === 0 || t === 1) return t; - return 1 - progress; - } - function getDuration() { - var cached = $8b9e2899b2e82f52$var$cache.springs[string]; - if (cached) return cached; - var frame = 1 / 6; - var elapsed = 0; - var rest = 0; - while(true){ - elapsed += frame; - if (solver(elapsed) === 1) { - rest++; - if (rest >= 16) break; - } else rest = 0; - } - var duration = elapsed * frame * 1000; - $8b9e2899b2e82f52$var$cache.springs[string] = duration; - return duration; - } - return duration ? solver : getDuration; -} -// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function -function $8b9e2899b2e82f52$var$steps(steps) { - if (steps === void 0) steps = 10; - return function(t) { - return Math.ceil($8b9e2899b2e82f52$var$minMax(t, 0.000001, 1) * steps) * (1 / steps); - }; -} -// BezierEasing https://github.com/gre/bezier-easing -var $8b9e2899b2e82f52$var$bezier = function() { - var kSplineTableSize = 11; - var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); - function A(aA1, aA2) { - return 1.0 - 3.0 * aA2 + 3.0 * aA1; - } - function B(aA1, aA2) { - return 3.0 * aA2 - 6.0 * aA1; - } - function C(aA1) { - return 3.0 * aA1; - } - function calcBezier(aT, aA1, aA2) { - return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; - } - function getSlope(aT, aA1, aA2) { - return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); - } - function binarySubdivide(aX, aA, aB, mX1, mX2) { - var currentX, currentT, i = 0; - do { - currentT = aA + (aB - aA) / 2.0; - currentX = calcBezier(currentT, mX1, mX2) - aX; - if (currentX > 0.0) aB = currentT; - else aA = currentT; - }while (Math.abs(currentX) > 0.0000001 && ++i < 10); - return currentT; - } - function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { - for(var i = 0; i < 4; ++i){ - var currentSlope = getSlope(aGuessT, mX1, mX2); - if (currentSlope === 0.0) return aGuessT; - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - return aGuessT; - } - function bezier(mX1, mY1, mX2, mY2) { - if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) return; - var sampleValues = new Float32Array(kSplineTableSize); - if (mX1 !== mY1 || mX2 !== mY2) for(var i = 0; i < kSplineTableSize; ++i)sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); - function getTForX(aX) { - var intervalStart = 0; - var currentSample = 1; - var lastSample = kSplineTableSize - 1; - for(; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample)intervalStart += kSampleStepSize; - --currentSample; - var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); - var guessForT = intervalStart + dist * kSampleStepSize; - var initialSlope = getSlope(guessForT, mX1, mX2); - if (initialSlope >= 0.001) return newtonRaphsonIterate(aX, guessForT, mX1, mX2); - else if (initialSlope === 0.0) return guessForT; - else return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); - } - return function(x) { - if (mX1 === mY1 && mX2 === mY2) return x; - if (x === 0 || x === 1) return x; - return calcBezier(getTForX(x), mY1, mY2); - }; - } - return bezier; -}(); -var $8b9e2899b2e82f52$var$penner = function() { - // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing) - var eases = { - linear: function() { - return function(t) { - return t; - }; - } - }; - var functionEasings = { - Sine: function() { - return function(t) { - return 1 - Math.cos(t * Math.PI / 2); - }; - }, - Circ: function() { - return function(t) { - return 1 - Math.sqrt(1 - t * t); - }; - }, - Back: function() { - return function(t) { - return t * t * (3 * t - 2); - }; - }, - Bounce: function() { - return function(t) { - var pow2, b = 4; - while(t < ((pow2 = Math.pow(2, --b)) - 1) / 11); - return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - t, 2); - }; - }, - Elastic: function(amplitude, period) { - if (amplitude === void 0) amplitude = 1; - if (period === void 0) period = .5; - var a = $8b9e2899b2e82f52$var$minMax(amplitude, 1, 10); - var p = $8b9e2899b2e82f52$var$minMax(period, .1, 2); - return function(t) { - return t === 0 || t === 1 ? t : -a * Math.pow(2, 10 * (t - 1)) * Math.sin((t - 1 - p / (Math.PI * 2) * Math.asin(1 / a)) * (Math.PI * 2) / p); - }; - } - }; - var baseEasings = [ - "Quad", - "Cubic", - "Quart", - "Quint", - "Expo" - ]; - baseEasings.forEach(function(name, i) { - functionEasings[name] = function() { - return function(t) { - return Math.pow(t, i + 2); - }; - }; - }); - Object.keys(functionEasings).forEach(function(name) { - var easeIn = functionEasings[name]; - eases["easeIn" + name] = easeIn; - eases["easeOut" + name] = function(a, b) { - return function(t) { - return 1 - easeIn(a, b)(1 - t); - }; - }; - eases["easeInOut" + name] = function(a, b) { - return function(t) { - return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : 1 - easeIn(a, b)(t * -2 + 2) / 2; - }; - }; - eases["easeOutIn" + name] = function(a, b) { - return function(t) { - return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : (easeIn(a, b)(t * 2 - 1) + 1) / 2; - }; - }; - }); - return eases; -}(); -function $8b9e2899b2e82f52$var$parseEasings(easing, duration) { - if ($8b9e2899b2e82f52$var$is.fnc(easing)) return easing; - var name = easing.split("(")[0]; - var ease = $8b9e2899b2e82f52$var$penner[name]; - var args = $8b9e2899b2e82f52$var$parseEasingParameters(easing); - switch(name){ - case "spring": - return $8b9e2899b2e82f52$var$spring(easing, duration); - case "cubicBezier": - return $8b9e2899b2e82f52$var$applyArguments($8b9e2899b2e82f52$var$bezier, args); - case "steps": - return $8b9e2899b2e82f52$var$applyArguments($8b9e2899b2e82f52$var$steps, args); - default: - return $8b9e2899b2e82f52$var$applyArguments(ease, args); - } -} -// Strings -function $8b9e2899b2e82f52$var$selectString(str) { - try { - var nodes = document.querySelectorAll(str); - return nodes; - } catch (e) { - return; - } -} -// Arrays -function $8b9e2899b2e82f52$var$filterArray(arr, callback) { - var len = arr.length; - var thisArg = arguments.length >= 2 ? arguments[1] : void 0; - var result = []; - for(var i = 0; i < len; i++)if (i in arr) { - var val = arr[i]; - if (callback.call(thisArg, val, i, arr)) result.push(val); - } - return result; -} -function $8b9e2899b2e82f52$var$flattenArray(arr) { - return arr.reduce(function(a, b) { - return a.concat($8b9e2899b2e82f52$var$is.arr(b) ? $8b9e2899b2e82f52$var$flattenArray(b) : b); - }, []); -} -function $8b9e2899b2e82f52$var$toArray(o) { - if ($8b9e2899b2e82f52$var$is.arr(o)) return o; - if ($8b9e2899b2e82f52$var$is.str(o)) o = $8b9e2899b2e82f52$var$selectString(o) || o; - if (o instanceof NodeList || o instanceof HTMLCollection) return [].slice.call(o); - return [ - o - ]; -} -function $8b9e2899b2e82f52$var$arrayContains(arr, val) { - return arr.some(function(a) { - return a === val; - }); -} -// Objects -function $8b9e2899b2e82f52$var$cloneObject(o) { - var clone = {}; - for(var p in o)clone[p] = o[p]; - return clone; -} -function $8b9e2899b2e82f52$var$replaceObjectProps(o1, o2) { - var o = $8b9e2899b2e82f52$var$cloneObject(o1); - for(var p in o1)o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; - return o; -} -function $8b9e2899b2e82f52$var$mergeObjects(o1, o2) { - var o = $8b9e2899b2e82f52$var$cloneObject(o1); - for(var p in o2)o[p] = $8b9e2899b2e82f52$var$is.und(o1[p]) ? o2[p] : o1[p]; - return o; -} -// Colors -function $8b9e2899b2e82f52$var$rgbToRgba(rgbValue) { - var rgb = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(rgbValue); - return rgb ? "rgba(" + rgb[1] + ",1)" : rgbValue; -} -function $8b9e2899b2e82f52$var$hexToRgba(hexValue) { - var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; - var hex = hexValue.replace(rgx, function(m, r, g, b) { - return r + r + g + g + b + b; - }); - var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - var r = parseInt(rgb[1], 16); - var g = parseInt(rgb[2], 16); - var b = parseInt(rgb[3], 16); - return "rgba(" + r + "," + g + "," + b + ",1)"; -} -function $8b9e2899b2e82f52$var$hslToRgba(hslValue) { - var hsl = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(hslValue) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(hslValue); - var h = parseInt(hsl[1], 10) / 360; - var s = parseInt(hsl[2], 10) / 100; - var l = parseInt(hsl[3], 10) / 100; - var a = hsl[4] || 1; - function hue2rgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1 / 6) return p + (q - p) * 6 * t; - if (t < 0.5) return q; - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; - return p; - } - var r, g, b; - if (s == 0) r = g = b = l; - else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1 / 3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1 / 3); - } - return "rgba(" + r * 255 + "," + g * 255 + "," + b * 255 + "," + a + ")"; -} -function $8b9e2899b2e82f52$var$colorToRgb(val) { - if ($8b9e2899b2e82f52$var$is.rgb(val)) return $8b9e2899b2e82f52$var$rgbToRgba(val); - if ($8b9e2899b2e82f52$var$is.hex(val)) return $8b9e2899b2e82f52$var$hexToRgba(val); - if ($8b9e2899b2e82f52$var$is.hsl(val)) return $8b9e2899b2e82f52$var$hslToRgba(val); -} -// Units -function $8b9e2899b2e82f52$var$getUnit(val) { - var split = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val); - if (split) return split[1]; -} -function $8b9e2899b2e82f52$var$getTransformUnit(propName) { - if ($8b9e2899b2e82f52$var$stringContains(propName, "translate") || propName === "perspective") return "px"; - if ($8b9e2899b2e82f52$var$stringContains(propName, "rotate") || $8b9e2899b2e82f52$var$stringContains(propName, "skew")) return "deg"; -} -// Values -function $8b9e2899b2e82f52$var$getFunctionValue(val, animatable) { - if (!$8b9e2899b2e82f52$var$is.fnc(val)) return val; - return val(animatable.target, animatable.id, animatable.total); -} -function $8b9e2899b2e82f52$var$getAttribute(el, prop) { - return el.getAttribute(prop); -} -function $8b9e2899b2e82f52$var$convertPxToUnit(el, value, unit) { - var valueUnit = $8b9e2899b2e82f52$var$getUnit(value); - if ($8b9e2899b2e82f52$var$arrayContains([ - unit, - "deg", - "rad", - "turn" - ], valueUnit)) return value; - var cached = $8b9e2899b2e82f52$var$cache.CSS[value + unit]; - if (!$8b9e2899b2e82f52$var$is.und(cached)) return cached; - var baseline = 100; - var tempEl = document.createElement(el.tagName); - var parentEl = el.parentNode && el.parentNode !== document ? el.parentNode : document.body; - parentEl.appendChild(tempEl); - tempEl.style.position = "absolute"; - tempEl.style.width = baseline + unit; - var factor = baseline / tempEl.offsetWidth; - parentEl.removeChild(tempEl); - var convertedUnit = factor * parseFloat(value); - $8b9e2899b2e82f52$var$cache.CSS[value + unit] = convertedUnit; - return convertedUnit; -} -function $8b9e2899b2e82f52$var$getCSSValue(el, prop, unit) { - if (prop in el.style) { - var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); - var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || "0"; - return unit ? $8b9e2899b2e82f52$var$convertPxToUnit(el, value, unit) : value; - } -} -function $8b9e2899b2e82f52$var$getAnimationType(el, prop) { - if ($8b9e2899b2e82f52$var$is.dom(el) && !$8b9e2899b2e82f52$var$is.inp(el) && (!$8b9e2899b2e82f52$var$is.nil($8b9e2899b2e82f52$var$getAttribute(el, prop)) || $8b9e2899b2e82f52$var$is.svg(el) && el[prop])) return "attribute"; - if ($8b9e2899b2e82f52$var$is.dom(el) && $8b9e2899b2e82f52$var$arrayContains($8b9e2899b2e82f52$var$validTransforms, prop)) return "transform"; - if ($8b9e2899b2e82f52$var$is.dom(el) && prop !== "transform" && $8b9e2899b2e82f52$var$getCSSValue(el, prop)) return "css"; - if (el[prop] != null) return "object"; -} -function $8b9e2899b2e82f52$var$getElementTransforms(el) { - if (!$8b9e2899b2e82f52$var$is.dom(el)) return; - var str = el.style.transform || ""; - var reg = /(\w+)\(([^)]*)\)/g; - var transforms = new Map(); - var m; - while(m = reg.exec(str))transforms.set(m[1], m[2]); - return transforms; -} -function $8b9e2899b2e82f52$var$getTransformValue(el, propName, animatable, unit) { - var defaultVal = $8b9e2899b2e82f52$var$stringContains(propName, "scale") ? 1 : 0 + $8b9e2899b2e82f52$var$getTransformUnit(propName); - var value = $8b9e2899b2e82f52$var$getElementTransforms(el).get(propName) || defaultVal; - if (animatable) { - animatable.transforms.list.set(propName, value); - animatable.transforms["last"] = propName; - } - return unit ? $8b9e2899b2e82f52$var$convertPxToUnit(el, value, unit) : value; -} -function $8b9e2899b2e82f52$var$getOriginalTargetValue(target, propName, unit, animatable) { - switch($8b9e2899b2e82f52$var$getAnimationType(target, propName)){ - case "transform": - return $8b9e2899b2e82f52$var$getTransformValue(target, propName, animatable, unit); - case "css": - return $8b9e2899b2e82f52$var$getCSSValue(target, propName, unit); - case "attribute": - return $8b9e2899b2e82f52$var$getAttribute(target, propName); - default: - return target[propName] || 0; - } -} -function $8b9e2899b2e82f52$var$getRelativeValue(to, from) { - var operator = /^(\*=|\+=|-=)/.exec(to); - if (!operator) return to; - var u = $8b9e2899b2e82f52$var$getUnit(to) || 0; - var x = parseFloat(from); - var y = parseFloat(to.replace(operator[0], "")); - switch(operator[0][0]){ - case "+": - return x + y + u; - case "-": - return x - y + u; - case "*": - return x * y + u; - } -} -function $8b9e2899b2e82f52$var$validateValue(val, unit) { - if ($8b9e2899b2e82f52$var$is.col(val)) return $8b9e2899b2e82f52$var$colorToRgb(val); - if (/\s/g.test(val)) return val; - var originalUnit = $8b9e2899b2e82f52$var$getUnit(val); - var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val; - if (unit) return unitLess + unit; - return unitLess; -} -// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes -// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744 -function $8b9e2899b2e82f52$var$getDistance(p1, p2) { - return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)); -} -function $8b9e2899b2e82f52$var$getCircleLength(el) { - return Math.PI * 2 * $8b9e2899b2e82f52$var$getAttribute(el, "r"); -} -function $8b9e2899b2e82f52$var$getRectLength(el) { - return $8b9e2899b2e82f52$var$getAttribute(el, "width") * 2 + $8b9e2899b2e82f52$var$getAttribute(el, "height") * 2; -} -function $8b9e2899b2e82f52$var$getLineLength(el) { - return $8b9e2899b2e82f52$var$getDistance({ - x: $8b9e2899b2e82f52$var$getAttribute(el, "x1"), - y: $8b9e2899b2e82f52$var$getAttribute(el, "y1") - }, { - x: $8b9e2899b2e82f52$var$getAttribute(el, "x2"), - y: $8b9e2899b2e82f52$var$getAttribute(el, "y2") - }); -} -function $8b9e2899b2e82f52$var$getPolylineLength(el) { - var points = el.points; - var totalLength = 0; - var previousPos; - for(var i = 0; i < points.numberOfItems; i++){ - var currentPos = points.getItem(i); - if (i > 0) totalLength += $8b9e2899b2e82f52$var$getDistance(previousPos, currentPos); - previousPos = currentPos; - } - return totalLength; -} -function $8b9e2899b2e82f52$var$getPolygonLength(el) { - var points = el.points; - return $8b9e2899b2e82f52$var$getPolylineLength(el) + $8b9e2899b2e82f52$var$getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0)); -} -// Path animation -function $8b9e2899b2e82f52$var$getTotalLength(el) { - if (el.getTotalLength) return el.getTotalLength(); - switch(el.tagName.toLowerCase()){ - case "circle": - return $8b9e2899b2e82f52$var$getCircleLength(el); - case "rect": - return $8b9e2899b2e82f52$var$getRectLength(el); - case "line": - return $8b9e2899b2e82f52$var$getLineLength(el); - case "polyline": - return $8b9e2899b2e82f52$var$getPolylineLength(el); - case "polygon": - return $8b9e2899b2e82f52$var$getPolygonLength(el); - } -} -function $8b9e2899b2e82f52$var$setDashoffset(el) { - var pathLength = $8b9e2899b2e82f52$var$getTotalLength(el); - el.setAttribute("stroke-dasharray", pathLength); - return pathLength; -} -// Motion path -function $8b9e2899b2e82f52$var$getParentSvgEl(el) { - var parentEl = el.parentNode; - while($8b9e2899b2e82f52$var$is.svg(parentEl)){ - if (!$8b9e2899b2e82f52$var$is.svg(parentEl.parentNode)) break; - parentEl = parentEl.parentNode; - } - return parentEl; -} -function $8b9e2899b2e82f52$var$getParentSvg(pathEl, svgData) { - var svg = svgData || {}; - var parentSvgEl = svg.el || $8b9e2899b2e82f52$var$getParentSvgEl(pathEl); - var rect = parentSvgEl.getBoundingClientRect(); - var viewBoxAttr = $8b9e2899b2e82f52$var$getAttribute(parentSvgEl, "viewBox"); - var width = rect.width; - var height = rect.height; - var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(" ") : [ - 0, - 0, - width, - height - ]); - return { - el: parentSvgEl, - viewBox: viewBox, - x: viewBox[0] / 1, - y: viewBox[1] / 1, - w: width, - h: height, - vW: viewBox[2], - vH: viewBox[3] - }; -} -function $8b9e2899b2e82f52$var$getPath(path, percent) { - var pathEl = $8b9e2899b2e82f52$var$is.str(path) ? $8b9e2899b2e82f52$var$selectString(path)[0] : path; - var p = percent || 100; - return function(property) { - return { - property: property, - el: pathEl, - svg: $8b9e2899b2e82f52$var$getParentSvg(pathEl), - totalLength: $8b9e2899b2e82f52$var$getTotalLength(pathEl) * (p / 100) - }; - }; -} -function $8b9e2899b2e82f52$var$getPathProgress(path, progress, isPathTargetInsideSVG) { - function point(offset) { - if (offset === void 0) offset = 0; - var l = progress + offset >= 1 ? progress + offset : 0; - return path.el.getPointAtLength(l); - } - var svg = $8b9e2899b2e82f52$var$getParentSvg(path.el, path.svg); - var p = point(); - var p0 = point(-1); - var p1 = point(1); - var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW; - var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH; - switch(path.property){ - case "x": - return (p.x - svg.x) * scaleX; - case "y": - return (p.y - svg.y) * scaleY; - case "angle": - return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI; - } -} -// Decompose value -function $8b9e2899b2e82f52$var$decomposeValue(val, unit) { - // const rgx = /-?\d*\.?\d+/g; // handles basic numbers - // const rgx = /[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g; // handles exponents notation - var rgx = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g; // handles exponents notation - var value = $8b9e2899b2e82f52$var$validateValue($8b9e2899b2e82f52$var$is.pth(val) ? val.totalLength : val, unit) + ""; - return { - original: value, - numbers: value.match(rgx) ? value.match(rgx).map(Number) : [ - 0 - ], - strings: $8b9e2899b2e82f52$var$is.str(val) || unit ? value.split(rgx) : [] - }; -} -// Animatables -function $8b9e2899b2e82f52$var$parseTargets(targets) { - var targetsArray = targets ? $8b9e2899b2e82f52$var$flattenArray($8b9e2899b2e82f52$var$is.arr(targets) ? targets.map($8b9e2899b2e82f52$var$toArray) : $8b9e2899b2e82f52$var$toArray(targets)) : []; - return $8b9e2899b2e82f52$var$filterArray(targetsArray, function(item, pos, self) { - return self.indexOf(item) === pos; - }); -} -function $8b9e2899b2e82f52$var$getAnimatables(targets) { - var parsed = $8b9e2899b2e82f52$var$parseTargets(targets); - return parsed.map(function(t, i) { - return { - target: t, - id: i, - total: parsed.length, - transforms: { - list: $8b9e2899b2e82f52$var$getElementTransforms(t) - } - }; - }); -} -// Properties -function $8b9e2899b2e82f52$var$normalizePropertyTweens(prop, tweenSettings) { - var settings = $8b9e2899b2e82f52$var$cloneObject(tweenSettings); - // Override duration if easing is a spring - if (/^spring/.test(settings.easing)) settings.duration = $8b9e2899b2e82f52$var$spring(settings.easing); - if ($8b9e2899b2e82f52$var$is.arr(prop)) { - var l = prop.length; - var isFromTo = l === 2 && !$8b9e2899b2e82f52$var$is.obj(prop[0]); - if (!isFromTo) // Duration divided by the number of tweens - { - if (!$8b9e2899b2e82f52$var$is.fnc(tweenSettings.duration)) settings.duration = tweenSettings.duration / l; - } else // Transform [from, to] values shorthand to a valid tween value - prop = { - value: prop - }; - } - var propArray = $8b9e2899b2e82f52$var$is.arr(prop) ? prop : [ - prop - ]; - return propArray.map(function(v, i) { - var obj = $8b9e2899b2e82f52$var$is.obj(v) && !$8b9e2899b2e82f52$var$is.pth(v) ? v : { - value: v - }; - // Default delay value should only be applied to the first tween - if ($8b9e2899b2e82f52$var$is.und(obj.delay)) obj.delay = !i ? tweenSettings.delay : 0; - // Default endDelay value should only be applied to the last tween - if ($8b9e2899b2e82f52$var$is.und(obj.endDelay)) obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; - return obj; - }).map(function(k) { - return $8b9e2899b2e82f52$var$mergeObjects(k, settings); - }); -} -function $8b9e2899b2e82f52$var$flattenKeyframes(keyframes) { - var propertyNames = $8b9e2899b2e82f52$var$filterArray($8b9e2899b2e82f52$var$flattenArray(keyframes.map(function(key) { - return Object.keys(key); - })), function(p) { - return $8b9e2899b2e82f52$var$is.key(p); - }).reduce(function(a, b) { - if (a.indexOf(b) < 0) a.push(b); - return a; - }, []); - var properties = {}; - var loop = function(i) { - var propName = propertyNames[i]; - properties[propName] = keyframes.map(function(key) { - var newKey = {}; - for(var p in key){ - if ($8b9e2899b2e82f52$var$is.key(p)) { - if (p == propName) newKey.value = key[p]; - } else newKey[p] = key[p]; - } - return newKey; - }); - }; - for(var i = 0; i < propertyNames.length; i++)loop(i); - return properties; -} -function $8b9e2899b2e82f52$var$getProperties(tweenSettings, params) { - var properties = []; - var keyframes = params.keyframes; - if (keyframes) params = $8b9e2899b2e82f52$var$mergeObjects($8b9e2899b2e82f52$var$flattenKeyframes(keyframes), params); - for(var p in params)if ($8b9e2899b2e82f52$var$is.key(p)) properties.push({ - name: p, - tweens: $8b9e2899b2e82f52$var$normalizePropertyTweens(params[p], tweenSettings) - }); - return properties; -} -// Tweens -function $8b9e2899b2e82f52$var$normalizeTweenValues(tween, animatable) { - var t = {}; - for(var p in tween){ - var value = $8b9e2899b2e82f52$var$getFunctionValue(tween[p], animatable); - if ($8b9e2899b2e82f52$var$is.arr(value)) { - value = value.map(function(v) { - return $8b9e2899b2e82f52$var$getFunctionValue(v, animatable); - }); - if (value.length === 1) value = value[0]; - } - t[p] = value; - } - t.duration = parseFloat(t.duration); - t.delay = parseFloat(t.delay); - return t; -} -function $8b9e2899b2e82f52$var$normalizeTweens(prop, animatable) { - var previousTween; - return prop.tweens.map(function(t) { - var tween = $8b9e2899b2e82f52$var$normalizeTweenValues(t, animatable); - var tweenValue = tween.value; - var to = $8b9e2899b2e82f52$var$is.arr(tweenValue) ? tweenValue[1] : tweenValue; - var toUnit = $8b9e2899b2e82f52$var$getUnit(to); - var originalValue = $8b9e2899b2e82f52$var$getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable); - var previousValue = previousTween ? previousTween.to.original : originalValue; - var from = $8b9e2899b2e82f52$var$is.arr(tweenValue) ? tweenValue[0] : previousValue; - var fromUnit = $8b9e2899b2e82f52$var$getUnit(from) || $8b9e2899b2e82f52$var$getUnit(originalValue); - var unit = toUnit || fromUnit; - if ($8b9e2899b2e82f52$var$is.und(to)) to = previousValue; - tween.from = $8b9e2899b2e82f52$var$decomposeValue(from, unit); - tween.to = $8b9e2899b2e82f52$var$decomposeValue($8b9e2899b2e82f52$var$getRelativeValue(to, from), unit); - tween.start = previousTween ? previousTween.end : 0; - tween.end = tween.start + tween.delay + tween.duration + tween.endDelay; - tween.easing = $8b9e2899b2e82f52$var$parseEasings(tween.easing, tween.duration); - tween.isPath = $8b9e2899b2e82f52$var$is.pth(tweenValue); - tween.isPathTargetInsideSVG = tween.isPath && $8b9e2899b2e82f52$var$is.svg(animatable.target); - tween.isColor = $8b9e2899b2e82f52$var$is.col(tween.from.original); - if (tween.isColor) tween.round = 1; - previousTween = tween; - return tween; - }); -} -// Tween progress -var $8b9e2899b2e82f52$var$setProgressValue = { - css: function(t, p, v) { - return t.style[p] = v; - }, - attribute: function(t, p, v) { - return t.setAttribute(p, v); - }, - object: function(t, p, v) { - return t[p] = v; - }, - transform: function(t, p, v, transforms, manual) { - transforms.list.set(p, v); - if (p === transforms.last || manual) { - var str = ""; - transforms.list.forEach(function(value, prop) { - str += prop + "(" + value + ") "; - }); - t.style.transform = str; - } - } -}; -// Set Value helper -function $8b9e2899b2e82f52$var$setTargetsValue(targets, properties) { - var animatables = $8b9e2899b2e82f52$var$getAnimatables(targets); - animatables.forEach(function(animatable) { - for(var property in properties){ - var value = $8b9e2899b2e82f52$var$getFunctionValue(properties[property], animatable); - var target = animatable.target; - var valueUnit = $8b9e2899b2e82f52$var$getUnit(value); - var originalValue = $8b9e2899b2e82f52$var$getOriginalTargetValue(target, property, valueUnit, animatable); - var unit = valueUnit || $8b9e2899b2e82f52$var$getUnit(originalValue); - var to = $8b9e2899b2e82f52$var$getRelativeValue($8b9e2899b2e82f52$var$validateValue(value, unit), originalValue); - var animType = $8b9e2899b2e82f52$var$getAnimationType(target, property); - $8b9e2899b2e82f52$var$setProgressValue[animType](target, property, to, animatable.transforms, true); - } - }); -} -// Animations -function $8b9e2899b2e82f52$var$createAnimation(animatable, prop) { - var animType = $8b9e2899b2e82f52$var$getAnimationType(animatable.target, prop.name); - if (animType) { - var tweens = $8b9e2899b2e82f52$var$normalizeTweens(prop, animatable); - var lastTween = tweens[tweens.length - 1]; - return { - type: animType, - property: prop.name, - animatable: animatable, - tweens: tweens, - duration: lastTween.end, - delay: tweens[0].delay, - endDelay: lastTween.endDelay - }; - } -} -function $8b9e2899b2e82f52$var$getAnimations(animatables, properties) { - return $8b9e2899b2e82f52$var$filterArray($8b9e2899b2e82f52$var$flattenArray(animatables.map(function(animatable) { - return properties.map(function(prop) { - return $8b9e2899b2e82f52$var$createAnimation(animatable, prop); - }); - })), function(a) { - return !$8b9e2899b2e82f52$var$is.und(a); - }); -} -// Create Instance -function $8b9e2899b2e82f52$var$getInstanceTimings(animations, tweenSettings) { - var animLength = animations.length; - var getTlOffset = function(anim) { - return anim.timelineOffset ? anim.timelineOffset : 0; - }; - var timings = {}; - timings.duration = animLength ? Math.max.apply(Math, animations.map(function(anim) { - return getTlOffset(anim) + anim.duration; - })) : tweenSettings.duration; - timings.delay = animLength ? Math.min.apply(Math, animations.map(function(anim) { - return getTlOffset(anim) + anim.delay; - })) : tweenSettings.delay; - timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function(anim) { - return getTlOffset(anim) + anim.duration - anim.endDelay; - })) : tweenSettings.endDelay; - return timings; -} -var $8b9e2899b2e82f52$var$instanceID = 0; -function $8b9e2899b2e82f52$var$createNewInstance(params) { - var instanceSettings = $8b9e2899b2e82f52$var$replaceObjectProps($8b9e2899b2e82f52$var$defaultInstanceSettings, params); - var tweenSettings = $8b9e2899b2e82f52$var$replaceObjectProps($8b9e2899b2e82f52$var$defaultTweenSettings, params); - var properties = $8b9e2899b2e82f52$var$getProperties(tweenSettings, params); - var animatables = $8b9e2899b2e82f52$var$getAnimatables(params.targets); - var animations = $8b9e2899b2e82f52$var$getAnimations(animatables, properties); - var timings = $8b9e2899b2e82f52$var$getInstanceTimings(animations, tweenSettings); - var id = $8b9e2899b2e82f52$var$instanceID; - $8b9e2899b2e82f52$var$instanceID++; - return $8b9e2899b2e82f52$var$mergeObjects(instanceSettings, { - id: id, - children: [], - animatables: animatables, - animations: animations, - duration: timings.duration, - delay: timings.delay, - endDelay: timings.endDelay - }); -} -// Core -var $8b9e2899b2e82f52$var$activeInstances = []; -var $8b9e2899b2e82f52$var$engine = function() { - var raf; - function play() { - if (!raf && (!$8b9e2899b2e82f52$var$isDocumentHidden() || !$8b9e2899b2e82f52$var$anime.suspendWhenDocumentHidden) && $8b9e2899b2e82f52$var$activeInstances.length > 0) raf = requestAnimationFrame(step); - } - function step(t) { - // memo on algorithm issue: - // dangerous iteration over mutable `activeInstances` - // (that collection may be updated from within callbacks of `tick`-ed animation instances) - var activeInstancesLength = $8b9e2899b2e82f52$var$activeInstances.length; - var i = 0; - while(i < activeInstancesLength){ - var activeInstance = $8b9e2899b2e82f52$var$activeInstances[i]; - if (!activeInstance.paused) { - activeInstance.tick(t); - i++; - } else { - $8b9e2899b2e82f52$var$activeInstances.splice(i, 1); - activeInstancesLength--; - } - } - raf = i > 0 ? requestAnimationFrame(step) : undefined; - } - function handleVisibilityChange() { - if (!$8b9e2899b2e82f52$var$anime.suspendWhenDocumentHidden) return; - if ($8b9e2899b2e82f52$var$isDocumentHidden()) // suspend ticks - raf = cancelAnimationFrame(raf); - else { - // first adjust animations to consider the time that ticks were suspended - $8b9e2899b2e82f52$var$activeInstances.forEach(function(instance) { - return instance._onDocumentVisibility(); - }); - $8b9e2899b2e82f52$var$engine(); - } - } - if (typeof document !== "undefined") document.addEventListener("visibilitychange", handleVisibilityChange); - return play; -}(); -function $8b9e2899b2e82f52$var$isDocumentHidden() { - return !!document && document.hidden; -} -// Public Instance -function $8b9e2899b2e82f52$var$anime(params) { - if (params === void 0) params = {}; - var startTime = 0, lastTime = 0, now = 0; - var children, childrenLength = 0; - var resolve = null; - function makePromise(instance) { - var promise = window.Promise && new Promise(function(_resolve) { - return resolve = _resolve; - }); - instance.finished = promise; - return promise; - } - var instance = $8b9e2899b2e82f52$var$createNewInstance(params); - var promise = makePromise(instance); - function toggleInstanceDirection() { - var direction = instance.direction; - if (direction !== "alternate") instance.direction = direction !== "normal" ? "normal" : "reverse"; - instance.reversed = !instance.reversed; - children.forEach(function(child) { - return child.reversed = instance.reversed; - }); - } - function adjustTime(time) { - return instance.reversed ? instance.duration - time : time; - } - function resetTime() { - startTime = 0; - lastTime = adjustTime(instance.currentTime) * (1 / $8b9e2899b2e82f52$var$anime.speed); - } - function seekChild(time, child) { - if (child) child.seek(time - child.timelineOffset); - } - function syncInstanceChildren(time) { - if (!instance.reversePlayback) for(var i = 0; i < childrenLength; i++)seekChild(time, children[i]); - else for(var i$1 = childrenLength; i$1--;)seekChild(time, children[i$1]); - } - function setAnimationsProgress(insTime) { - var i = 0; - var animations = instance.animations; - var animationsLength = animations.length; - while(i < animationsLength){ - var anim = animations[i]; - var animatable = anim.animatable; - var tweens = anim.tweens; - var tweenLength = tweens.length - 1; - var tween = tweens[tweenLength]; - // Only check for keyframes if there is more than one tween - if (tweenLength) tween = $8b9e2899b2e82f52$var$filterArray(tweens, function(t) { - return insTime < t.end; - })[0] || tween; - var elapsed = $8b9e2899b2e82f52$var$minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration; - var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed); - var strings = tween.to.strings; - var round = tween.round; - var numbers = []; - var toNumbersLength = tween.to.numbers.length; - var progress = void 0; - for(var n = 0; n < toNumbersLength; n++){ - var value = void 0; - var toNumber = tween.to.numbers[n]; - var fromNumber = tween.from.numbers[n] || 0; - if (!tween.isPath) value = fromNumber + eased * (toNumber - fromNumber); - else value = $8b9e2899b2e82f52$var$getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG); - if (round) { - if (!(tween.isColor && n > 2)) value = Math.round(value * round) / round; - } - numbers.push(value); - } - // Manual Array.reduce for better performances - var stringsLength = strings.length; - if (!stringsLength) progress = numbers[0]; - else { - progress = strings[0]; - for(var s = 0; s < stringsLength; s++){ - var a = strings[s]; - var b = strings[s + 1]; - var n$1 = numbers[s]; - if (!isNaN(n$1)) { - if (!b) progress += n$1 + " "; - else progress += n$1 + b; - } - } - } - $8b9e2899b2e82f52$var$setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms); - anim.currentValue = progress; - i++; - } - } - function setCallback(cb) { - if (instance[cb] && !instance.passThrough) instance[cb](instance); - } - function countIteration() { - if (instance.remaining && instance.remaining !== true) instance.remaining--; - } - function setInstanceProgress(engineTime) { - var insDuration = instance.duration; - var insDelay = instance.delay; - var insEndDelay = insDuration - instance.endDelay; - var insTime = adjustTime(engineTime); - instance.progress = $8b9e2899b2e82f52$var$minMax(insTime / insDuration * 100, 0, 100); - instance.reversePlayback = insTime < instance.currentTime; - if (children) syncInstanceChildren(insTime); - if (!instance.began && instance.currentTime > 0) { - instance.began = true; - setCallback("begin"); - } - if (!instance.loopBegan && instance.currentTime > 0) { - instance.loopBegan = true; - setCallback("loopBegin"); - } - if (insTime <= insDelay && instance.currentTime !== 0) setAnimationsProgress(0); - if (insTime >= insEndDelay && instance.currentTime !== insDuration || !insDuration) setAnimationsProgress(insDuration); - if (insTime > insDelay && insTime < insEndDelay) { - if (!instance.changeBegan) { - instance.changeBegan = true; - instance.changeCompleted = false; - setCallback("changeBegin"); - } - setCallback("change"); - setAnimationsProgress(insTime); - } else if (instance.changeBegan) { - instance.changeCompleted = true; - instance.changeBegan = false; - setCallback("changeComplete"); - } - instance.currentTime = $8b9e2899b2e82f52$var$minMax(insTime, 0, insDuration); - if (instance.began) setCallback("update"); - if (engineTime >= insDuration) { - lastTime = 0; - countIteration(); - if (!instance.remaining) { - instance.paused = true; - if (!instance.completed) { - instance.completed = true; - setCallback("loopComplete"); - setCallback("complete"); - if (!instance.passThrough && "Promise" in window) { - resolve(); - promise = makePromise(instance); - } - } - } else { - startTime = now; - setCallback("loopComplete"); - instance.loopBegan = false; - if (instance.direction === "alternate") toggleInstanceDirection(); - } - } - } - instance.reset = function() { - var direction = instance.direction; - instance.passThrough = false; - instance.currentTime = 0; - instance.progress = 0; - instance.paused = true; - instance.began = false; - instance.loopBegan = false; - instance.changeBegan = false; - instance.completed = false; - instance.changeCompleted = false; - instance.reversePlayback = false; - instance.reversed = direction === "reverse"; - instance.remaining = instance.loop; - children = instance.children; - childrenLength = children.length; - for(var i = childrenLength; i--;)instance.children[i].reset(); - if (instance.reversed && instance.loop !== true || direction === "alternate" && instance.loop === 1) instance.remaining++; - setAnimationsProgress(instance.reversed ? instance.duration : 0); - }; - // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF) - instance._onDocumentVisibility = resetTime; - // Set Value helper - instance.set = function(targets, properties) { - $8b9e2899b2e82f52$var$setTargetsValue(targets, properties); - return instance; - }; - instance.tick = function(t) { - now = t; - if (!startTime) startTime = now; - setInstanceProgress((now + (lastTime - startTime)) * $8b9e2899b2e82f52$var$anime.speed); - }; - instance.seek = function(time) { - setInstanceProgress(adjustTime(time)); - }; - instance.pause = function() { - instance.paused = true; - resetTime(); - }; - instance.play = function() { - if (!instance.paused) return; - if (instance.completed) instance.reset(); - instance.paused = false; - $8b9e2899b2e82f52$var$activeInstances.push(instance); - resetTime(); - $8b9e2899b2e82f52$var$engine(); - }; - instance.reverse = function() { - toggleInstanceDirection(); - instance.completed = instance.reversed ? false : true; - resetTime(); - }; - instance.restart = function() { - instance.reset(); - instance.play(); - }; - instance.remove = function(targets) { - var targetsArray = $8b9e2899b2e82f52$var$parseTargets(targets); - $8b9e2899b2e82f52$var$removeTargetsFromInstance(targetsArray, instance); - }; - instance.reset(); - if (instance.autoplay) instance.play(); - return instance; -} -// Remove targets from animation -function $8b9e2899b2e82f52$var$removeTargetsFromAnimations(targetsArray, animations) { - for(var a = animations.length; a--;)if ($8b9e2899b2e82f52$var$arrayContains(targetsArray, animations[a].animatable.target)) animations.splice(a, 1); -} -function $8b9e2899b2e82f52$var$removeTargetsFromInstance(targetsArray, instance) { - var animations = instance.animations; - var children = instance.children; - $8b9e2899b2e82f52$var$removeTargetsFromAnimations(targetsArray, animations); - for(var c = children.length; c--;){ - var child = children[c]; - var childAnimations = child.animations; - $8b9e2899b2e82f52$var$removeTargetsFromAnimations(targetsArray, childAnimations); - if (!childAnimations.length && !child.children.length) children.splice(c, 1); - } - if (!animations.length && !children.length) instance.pause(); -} -function $8b9e2899b2e82f52$var$removeTargetsFromActiveInstances(targets) { - var targetsArray = $8b9e2899b2e82f52$var$parseTargets(targets); - for(var i = $8b9e2899b2e82f52$var$activeInstances.length; i--;){ - var instance = $8b9e2899b2e82f52$var$activeInstances[i]; - $8b9e2899b2e82f52$var$removeTargetsFromInstance(targetsArray, instance); - } -} -// Stagger helpers -function $8b9e2899b2e82f52$var$stagger(val, params) { - if (params === void 0) params = {}; - var direction = params.direction || "normal"; - var easing = params.easing ? $8b9e2899b2e82f52$var$parseEasings(params.easing) : null; - var grid = params.grid; - var axis = params.axis; - var fromIndex = params.from || 0; - var fromFirst = fromIndex === "first"; - var fromCenter = fromIndex === "center"; - var fromLast = fromIndex === "last"; - var isRange = $8b9e2899b2e82f52$var$is.arr(val); - var val1 = isRange ? parseFloat(val[0]) : parseFloat(val); - var val2 = isRange ? parseFloat(val[1]) : 0; - var unit = $8b9e2899b2e82f52$var$getUnit(isRange ? val[1] : val) || 0; - var start = params.start || 0 + (isRange ? val1 : 0); - var values = []; - var maxValue = 0; - return function(el, i, t) { - if (fromFirst) fromIndex = 0; - if (fromCenter) fromIndex = (t - 1) / 2; - if (fromLast) fromIndex = t - 1; - if (!values.length) { - for(var index = 0; index < t; index++){ - if (!grid) values.push(Math.abs(fromIndex - index)); - else { - var fromX = !fromCenter ? fromIndex % grid[0] : (grid[0] - 1) / 2; - var fromY = !fromCenter ? Math.floor(fromIndex / grid[0]) : (grid[1] - 1) / 2; - var toX = index % grid[0]; - var toY = Math.floor(index / grid[0]); - var distanceX = fromX - toX; - var distanceY = fromY - toY; - var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY); - if (axis === "x") value = -distanceX; - if (axis === "y") value = -distanceY; - values.push(value); - } - maxValue = Math.max.apply(Math, values); - } - if (easing) values = values.map(function(val) { - return easing(val / maxValue) * maxValue; - }); - if (direction === "reverse") values = values.map(function(val) { - return axis ? val < 0 ? val * -1 : -val : Math.abs(maxValue - val); - }); - } - var spacing = isRange ? (val2 - val1) / maxValue : val1; - return start + spacing * (Math.round(values[i] * 100) / 100) + unit; - }; -} -// Timeline -function $8b9e2899b2e82f52$var$timeline(params) { - if (params === void 0) params = {}; - var tl = $8b9e2899b2e82f52$var$anime(params); - tl.duration = 0; - tl.add = function(instanceParams, timelineOffset) { - var tlIndex = $8b9e2899b2e82f52$var$activeInstances.indexOf(tl); - var children = tl.children; - if (tlIndex > -1) $8b9e2899b2e82f52$var$activeInstances.splice(tlIndex, 1); - function passThrough(ins) { - ins.passThrough = true; - } - for(var i = 0; i < children.length; i++)passThrough(children[i]); - var insParams = $8b9e2899b2e82f52$var$mergeObjects(instanceParams, $8b9e2899b2e82f52$var$replaceObjectProps($8b9e2899b2e82f52$var$defaultTweenSettings, params)); - insParams.targets = insParams.targets || params.targets; - var tlDuration = tl.duration; - insParams.autoplay = false; - insParams.direction = tl.direction; - insParams.timelineOffset = $8b9e2899b2e82f52$var$is.und(timelineOffset) ? tlDuration : $8b9e2899b2e82f52$var$getRelativeValue(timelineOffset, tlDuration); - passThrough(tl); - tl.seek(insParams.timelineOffset); - var ins = $8b9e2899b2e82f52$var$anime(insParams); - passThrough(ins); - children.push(ins); - var timings = $8b9e2899b2e82f52$var$getInstanceTimings(children, params); - tl.delay = timings.delay; - tl.endDelay = timings.endDelay; - tl.duration = timings.duration; - tl.seek(0); - tl.reset(); - if (tl.autoplay) tl.play(); - return tl; - }; - return tl; -} -$8b9e2899b2e82f52$var$anime.version = "3.2.1"; -$8b9e2899b2e82f52$var$anime.speed = 1; -// TODO:#review: naming, documentation -$8b9e2899b2e82f52$var$anime.suspendWhenDocumentHidden = true; -$8b9e2899b2e82f52$var$anime.running = $8b9e2899b2e82f52$var$activeInstances; -$8b9e2899b2e82f52$var$anime.remove = $8b9e2899b2e82f52$var$removeTargetsFromActiveInstances; -$8b9e2899b2e82f52$var$anime.get = $8b9e2899b2e82f52$var$getOriginalTargetValue; -$8b9e2899b2e82f52$var$anime.set = $8b9e2899b2e82f52$var$setTargetsValue; -$8b9e2899b2e82f52$var$anime.convertPx = $8b9e2899b2e82f52$var$convertPxToUnit; -$8b9e2899b2e82f52$var$anime.path = $8b9e2899b2e82f52$var$getPath; -$8b9e2899b2e82f52$var$anime.setDashoffset = $8b9e2899b2e82f52$var$setDashoffset; -$8b9e2899b2e82f52$var$anime.stagger = $8b9e2899b2e82f52$var$stagger; -$8b9e2899b2e82f52$var$anime.timeline = $8b9e2899b2e82f52$var$timeline; -$8b9e2899b2e82f52$var$anime.easing = $8b9e2899b2e82f52$var$parseEasings; -$8b9e2899b2e82f52$var$anime.penner = $8b9e2899b2e82f52$var$penner; -$8b9e2899b2e82f52$var$anime.random = function(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; -}; -var $8b9e2899b2e82f52$export$2e2bcd8739ae039 = $8b9e2899b2e82f52$var$anime; - - -const $accfb6154319a04b$var$notifcation = document.querySelector(".notify-message"); -const $accfb6154319a04b$var$notify = document.getElementById("notify-message"); -const $accfb6154319a04b$var$responseText = document.querySelector(".response-text"); -const $accfb6154319a04b$var$notifyText = document.querySelector(".notify-text"); -const $accfb6154319a04b$var$notifyIcons = document.querySelector(".notify-icons"); -//const notifyProgress = document.getElementById('notify-progress'); -const $accfb6154319a04b$var$iconGood = document.querySelector(".notify-good"); -const $accfb6154319a04b$var$iconNotGood = document.querySelector(".notify-notgood"); -const $accfb6154319a04b$var$iconWorking = document.querySelector(".notify-working"); -class $accfb6154319a04b$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - alert(text, status) { - $accfb6154319a04b$var$iconWorking.style.display = "none"; - $accfb6154319a04b$var$iconGood.style.display = "none"; - $accfb6154319a04b$var$iconNotGood.style.display = "none"; - var color = ""; - $accfb6154319a04b$var$responseText.innerHTML = text; - if (status !== null) { - if (status) { - color = "#32cd32"; - $accfb6154319a04b$var$iconWorking.style.display = "none"; - $accfb6154319a04b$var$iconGood.style.display = "block"; - } else { - color = "#F64747"; - $accfb6154319a04b$var$iconWorking.style.display = "none"; - $accfb6154319a04b$var$iconNotGood.style.display = "block"; - } - } else { - color = "#200317"; - $accfb6154319a04b$var$iconWorking.style.display = "block"; - } - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: document.querySelector(".top-nav"), - rotateX: "180deg", - easing: "easeOutQuint" - }); - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: document.querySelector(".notify"), - rotateX: "10deg", - easing: "easeOutQuint", - complete: ()=>{ - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: $accfb6154319a04b$var$notifyIcons, - width: 39, - opacity: 1, - easing: "easeInQuint", - duration: 300 - }); - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: $accfb6154319a04b$var$notifyText, - backgroundColor: color, - opacity: 1, - easing: "easeInOutQuad", - duration: 400, - complete: ()=>{ - setTimeout(()=>{ - if (status !== null) { - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: $accfb6154319a04b$var$notifyText, - backgroundColor: color, - opacity: 0, - easing: "easeInOutQuad", - duration: 400 - }); - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: $accfb6154319a04b$var$notifyIcons, - width: 0, - opacity: 0, - easing: "easeOutQuint", - duration: 350 - }); - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: document.querySelector(".top-nav"), - rotateX: "0deg", - easing: "easeOutQuint" - }); - new (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: document.querySelector(".notify"), - rotateX: "180deg", - easing: "easeOutQuint" - }); - } - }, 2500); - } - }); - } - }); - } -} - - -/**! - * Sortable 1.15.0 - * @author RubaXa <trash@rubaxa.org> - * @author owenm <owen23355@gmail.com> - * @license MIT - */ function $64afbd09cd65a300$var$ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function(sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - return keys; -} -function $64afbd09cd65a300$var$_objectSpread2(target) { - for(var i = 1; i < arguments.length; i++){ - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) $64afbd09cd65a300$var$ownKeys(Object(source), true).forEach(function(key) { - $64afbd09cd65a300$var$_defineProperty(target, key, source[key]); - }); - else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - else $64afbd09cd65a300$var$ownKeys(Object(source)).forEach(function(key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - return target; -} -function $64afbd09cd65a300$var$_typeof(obj) { - "@babel/helpers - typeof"; - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") $64afbd09cd65a300$var$_typeof = function(obj) { - return typeof obj; - }; - else $64afbd09cd65a300$var$_typeof = function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - return $64afbd09cd65a300$var$_typeof(obj); -} -function $64afbd09cd65a300$var$_defineProperty(obj, key, value) { - if (key in obj) Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - else obj[key] = value; - return obj; -} -function $64afbd09cd65a300$var$_extends() { - $64afbd09cd65a300$var$_extends = Object.assign || function(target) { - for(var i = 1; i < arguments.length; i++){ - var source = arguments[i]; - for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key]; - } - return target; - }; - return $64afbd09cd65a300$var$_extends.apply(this, arguments); -} -function $64afbd09cd65a300$var$_objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - for(i = 0; i < sourceKeys.length; i++){ - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - return target; -} -function $64afbd09cd65a300$var$_objectWithoutProperties(source, excluded) { - if (source == null) return {}; - var target = $64afbd09cd65a300$var$_objectWithoutPropertiesLoose(source, excluded); - var key, i; - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - for(i = 0; i < sourceSymbolKeys.length; i++){ - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - return target; -} -function $64afbd09cd65a300$var$_toConsumableArray(arr) { - return $64afbd09cd65a300$var$_arrayWithoutHoles(arr) || $64afbd09cd65a300$var$_iterableToArray(arr) || $64afbd09cd65a300$var$_unsupportedIterableToArray(arr) || $64afbd09cd65a300$var$_nonIterableSpread(); -} -function $64afbd09cd65a300$var$_arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return $64afbd09cd65a300$var$_arrayLikeToArray(arr); -} -function $64afbd09cd65a300$var$_iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); -} -function $64afbd09cd65a300$var$_unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return $64afbd09cd65a300$var$_arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $64afbd09cd65a300$var$_arrayLikeToArray(o, minLen); -} -function $64afbd09cd65a300$var$_arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; - return arr2; -} -function $64afbd09cd65a300$var$_nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} -var $64afbd09cd65a300$var$version = "1.15.0"; -function $64afbd09cd65a300$var$userAgent(pattern) { - if (typeof window !== "undefined" && window.navigator) return !!/*@__PURE__*/ navigator.userAgent.match(pattern); -} -var $64afbd09cd65a300$var$IE11OrLess = $64afbd09cd65a300$var$userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i); -var $64afbd09cd65a300$var$Edge = $64afbd09cd65a300$var$userAgent(/Edge/i); -var $64afbd09cd65a300$var$FireFox = $64afbd09cd65a300$var$userAgent(/firefox/i); -var $64afbd09cd65a300$var$Safari = $64afbd09cd65a300$var$userAgent(/safari/i) && !$64afbd09cd65a300$var$userAgent(/chrome/i) && !$64afbd09cd65a300$var$userAgent(/android/i); -var $64afbd09cd65a300$var$IOS = $64afbd09cd65a300$var$userAgent(/iP(ad|od|hone)/i); -var $64afbd09cd65a300$var$ChromeForAndroid = $64afbd09cd65a300$var$userAgent(/chrome/i) && $64afbd09cd65a300$var$userAgent(/android/i); -var $64afbd09cd65a300$var$captureMode = { - capture: false, - passive: false -}; -function $64afbd09cd65a300$var$on(el, event, fn) { - el.addEventListener(event, fn, !$64afbd09cd65a300$var$IE11OrLess && $64afbd09cd65a300$var$captureMode); -} -function $64afbd09cd65a300$var$off(el, event, fn) { - el.removeEventListener(event, fn, !$64afbd09cd65a300$var$IE11OrLess && $64afbd09cd65a300$var$captureMode); -} -function $64afbd09cd65a300$var$matches(/**HTMLElement*/ el, /**String*/ selector) { - if (!selector) return; - selector[0] === ">" && (selector = selector.substring(1)); - if (el) try { - if (el.matches) return el.matches(selector); - else if (el.msMatchesSelector) return el.msMatchesSelector(selector); - else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - } catch (_) { - return false; - } - return false; -} -function $64afbd09cd65a300$var$getParentOrHost(el) { - return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode; -} -function $64afbd09cd65a300$var$closest(/**HTMLElement*/ el, /**String*/ selector, /**HTMLElement*/ ctx, includeCTX) { - if (el) { - ctx = ctx || document; - do { - if (selector != null && (selector[0] === ">" ? el.parentNode === ctx && $64afbd09cd65a300$var$matches(el, selector) : $64afbd09cd65a300$var$matches(el, selector)) || includeCTX && el === ctx) return el; - if (el === ctx) break; - /* jshint boss:true */ }while (el = $64afbd09cd65a300$var$getParentOrHost(el)); - } - return null; -} -var $64afbd09cd65a300$var$R_SPACE = /\s+/g; -function $64afbd09cd65a300$var$toggleClass(el, name, state) { - if (el && name) { - if (el.classList) el.classList[state ? "add" : "remove"](name); - else { - var className = (" " + el.className + " ").replace($64afbd09cd65a300$var$R_SPACE, " ").replace(" " + name + " ", " "); - el.className = (className + (state ? " " + name : "")).replace($64afbd09cd65a300$var$R_SPACE, " "); - } - } -} -function $64afbd09cd65a300$var$css(el, prop, val) { - var style = el && el.style; - if (style) { - if (val === void 0) { - if (document.defaultView && document.defaultView.getComputedStyle) val = document.defaultView.getComputedStyle(el, ""); - else if (el.currentStyle) val = el.currentStyle; - return prop === void 0 ? val : val[prop]; - } else { - if (!(prop in style) && prop.indexOf("webkit") === -1) prop = "-webkit-" + prop; - style[prop] = val + (typeof val === "string" ? "" : "px"); - } - } -} -function $64afbd09cd65a300$var$matrix(el, selfOnly) { - var appliedTransforms = ""; - if (typeof el === "string") appliedTransforms = el; - else do { - var transform = $64afbd09cd65a300$var$css(el, "transform"); - if (transform && transform !== "none") appliedTransforms = transform + " " + appliedTransforms; - /* jshint boss:true */ }while (!selfOnly && (el = el.parentNode)); - var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; - /*jshint -W056 */ return matrixFn && new matrixFn(appliedTransforms); -} -function $64afbd09cd65a300$var$find(ctx, tagName, iterator) { - if (ctx) { - var list = ctx.getElementsByTagName(tagName), i = 0, n = list.length; - if (iterator) for(; i < n; i++)iterator(list[i], i); - return list; - } - return []; -} -function $64afbd09cd65a300$var$getWindowScrollingElement() { - var scrollingElement = document.scrollingElement; - if (scrollingElement) return scrollingElement; - else return document.documentElement; -} -/** - * Returns the "bounding client rect" of given element - * @param {HTMLElement} el The element whose boundingClientRect is wanted - * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container - * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr - * @param {[Boolean]} undoScale Whether the container's scale() should be undone - * @param {[HTMLElement]} container The parent the element will be placed in - * @return {Object} The boundingClientRect of el, with specified adjustments - */ function $64afbd09cd65a300$var$getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) { - if (!el.getBoundingClientRect && el !== window) return; - var elRect, top, left, bottom, right, height, width; - if (el !== window && el.parentNode && el !== $64afbd09cd65a300$var$getWindowScrollingElement()) { - elRect = el.getBoundingClientRect(); - top = elRect.top; - left = elRect.left; - bottom = elRect.bottom; - right = elRect.right; - height = elRect.height; - width = elRect.width; - } else { - top = 0; - left = 0; - bottom = window.innerHeight; - right = window.innerWidth; - height = window.innerHeight; - width = window.innerWidth; - } - if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) { - // Adjust for translate() - container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312) - // Not needed on <= IE11 - if (!$64afbd09cd65a300$var$IE11OrLess) { - do if (container && container.getBoundingClientRect && ($64afbd09cd65a300$var$css(container, "transform") !== "none" || relativeToNonStaticParent && $64afbd09cd65a300$var$css(container, "position") !== "static")) { - var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container - top -= containerRect.top + parseInt($64afbd09cd65a300$var$css(container, "border-top-width")); - left -= containerRect.left + parseInt($64afbd09cd65a300$var$css(container, "border-left-width")); - bottom = top + elRect.height; - right = left + elRect.width; - break; - } - while (container = container.parentNode); - } - } - if (undoScale && el !== window) { - // Adjust for scale() - var elMatrix = $64afbd09cd65a300$var$matrix(container || el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d; - if (elMatrix) { - top /= scaleY; - left /= scaleX; - width /= scaleX; - height /= scaleY; - bottom = top + height; - right = left + width; - } - } - return { - top: top, - left: left, - bottom: bottom, - right: right, - width: width, - height: height - }; -} -/** - * Checks if a side of an element is scrolled past a side of its parents - * @param {HTMLElement} el The element who's side being scrolled out of view is in question - * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom') - * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom') - * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element - */ function $64afbd09cd65a300$var$isScrolledPast(el, elSide, parentSide) { - var parent = $64afbd09cd65a300$var$getParentAutoScrollElement(el, true), elSideVal = $64afbd09cd65a300$var$getRect(el)[elSide]; - /* jshint boss:true */ while(parent){ - var parentSideVal = $64afbd09cd65a300$var$getRect(parent)[parentSide], visible = void 0; - if (parentSide === "top" || parentSide === "left") visible = elSideVal >= parentSideVal; - else visible = elSideVal <= parentSideVal; - if (!visible) return parent; - if (parent === $64afbd09cd65a300$var$getWindowScrollingElement()) break; - parent = $64afbd09cd65a300$var$getParentAutoScrollElement(parent, false); - } - return false; -} -/** - * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible) - * and non-draggable elements - * @param {HTMLElement} el The parent element - * @param {Number} childNum The index of the child - * @param {Object} options Parent Sortable's options - * @return {HTMLElement} The child at index childNum, or null if not found - */ function $64afbd09cd65a300$var$getChild(el, childNum, options, includeDragEl) { - var currentChild = 0, i = 0, children = el.children; - while(i < children.length){ - if (children[i].style.display !== "none" && children[i] !== $64afbd09cd65a300$export$31b3ca70d8f57423.ghost && (includeDragEl || children[i] !== $64afbd09cd65a300$export$31b3ca70d8f57423.dragged) && $64afbd09cd65a300$var$closest(children[i], options.draggable, el, false)) { - if (currentChild === childNum) return children[i]; - currentChild++; - } - i++; - } - return null; -} -/** - * Gets the last child in the el, ignoring ghostEl or invisible elements (clones) - * @param {HTMLElement} el Parent element - * @param {selector} selector Any other elements that should be ignored - * @return {HTMLElement} The last child, ignoring ghostEl - */ function $64afbd09cd65a300$var$lastChild(el, selector) { - var last = el.lastElementChild; - while(last && (last === $64afbd09cd65a300$export$31b3ca70d8f57423.ghost || $64afbd09cd65a300$var$css(last, "display") === "none" || selector && !$64afbd09cd65a300$var$matches(last, selector)))last = last.previousElementSibling; - return last || null; -} -/** - * Returns the index of an element within its parent for a selected set of - * elements - * @param {HTMLElement} el - * @param {selector} selector - * @return {number} - */ function $64afbd09cd65a300$var$index(el, selector) { - var index = 0; - if (!el || !el.parentNode) return -1; - /* jshint boss:true */ while(el = el.previousElementSibling)if (el.nodeName.toUpperCase() !== "TEMPLATE" && el !== $64afbd09cd65a300$export$31b3ca70d8f57423.clone && (!selector || $64afbd09cd65a300$var$matches(el, selector))) index++; - return index; -} -/** - * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements. - * The value is returned in real pixels. - * @param {HTMLElement} el - * @return {Array} Offsets in the format of [left, top] - */ function $64afbd09cd65a300$var$getRelativeScrollOffset(el) { - var offsetLeft = 0, offsetTop = 0, winScroller = $64afbd09cd65a300$var$getWindowScrollingElement(); - if (el) do { - var elMatrix = $64afbd09cd65a300$var$matrix(el), scaleX = elMatrix.a, scaleY = elMatrix.d; - offsetLeft += el.scrollLeft * scaleX; - offsetTop += el.scrollTop * scaleY; - }while (el !== winScroller && (el = el.parentNode)); - return [ - offsetLeft, - offsetTop - ]; -} -/** - * Returns the index of the object within the given array - * @param {Array} arr Array that may or may not hold the object - * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find - * @return {Number} The index of the object in the array, or -1 - */ function $64afbd09cd65a300$var$indexOfObject(arr, obj) { - for(var i in arr){ - if (!arr.hasOwnProperty(i)) continue; - for(var key in obj){ - if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i); - } - } - return -1; -} -function $64afbd09cd65a300$var$getParentAutoScrollElement(el, includeSelf) { - // skip to window - if (!el || !el.getBoundingClientRect) return $64afbd09cd65a300$var$getWindowScrollingElement(); - var elem = el; - var gotSelf = false; - do // we don't need to get elem css if it isn't even overflowing in the first place (performance) - if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) { - var elemCSS = $64afbd09cd65a300$var$css(elem); - if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == "auto" || elemCSS.overflowX == "scroll") || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == "auto" || elemCSS.overflowY == "scroll")) { - if (!elem.getBoundingClientRect || elem === document.body) return $64afbd09cd65a300$var$getWindowScrollingElement(); - if (gotSelf || includeSelf) return elem; - gotSelf = true; - } - } - while (elem = elem.parentNode); - return $64afbd09cd65a300$var$getWindowScrollingElement(); -} -function $64afbd09cd65a300$var$extend(dst, src) { - if (dst && src) { - for(var key in src)if (src.hasOwnProperty(key)) dst[key] = src[key]; - } - return dst; -} -function $64afbd09cd65a300$var$isRectEqual(rect1, rect2) { - return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width); -} -var $64afbd09cd65a300$var$_throttleTimeout; -function $64afbd09cd65a300$var$throttle(callback, ms) { - return function() { - if (!$64afbd09cd65a300$var$_throttleTimeout) { - var args = arguments, _this = this; - if (args.length === 1) callback.call(_this, args[0]); - else callback.apply(_this, args); - $64afbd09cd65a300$var$_throttleTimeout = setTimeout(function() { - $64afbd09cd65a300$var$_throttleTimeout = void 0; - }, ms); - } - }; -} -function $64afbd09cd65a300$var$cancelThrottle() { - clearTimeout($64afbd09cd65a300$var$_throttleTimeout); - $64afbd09cd65a300$var$_throttleTimeout = void 0; -} -function $64afbd09cd65a300$var$scrollBy(el, x, y) { - el.scrollLeft += x; - el.scrollTop += y; -} -function $64afbd09cd65a300$var$clone(el) { - var Polymer = window.Polymer; - var $ = window.jQuery || window.Zepto; - if (Polymer && Polymer.dom) return Polymer.dom(el).cloneNode(true); - else if ($) return $(el).clone(true)[0]; - else return el.cloneNode(true); -} -function $64afbd09cd65a300$var$setRect(el, rect) { - $64afbd09cd65a300$var$css(el, "position", "absolute"); - $64afbd09cd65a300$var$css(el, "top", rect.top); - $64afbd09cd65a300$var$css(el, "left", rect.left); - $64afbd09cd65a300$var$css(el, "width", rect.width); - $64afbd09cd65a300$var$css(el, "height", rect.height); -} -function $64afbd09cd65a300$var$unsetRect(el) { - $64afbd09cd65a300$var$css(el, "position", ""); - $64afbd09cd65a300$var$css(el, "top", ""); - $64afbd09cd65a300$var$css(el, "left", ""); - $64afbd09cd65a300$var$css(el, "width", ""); - $64afbd09cd65a300$var$css(el, "height", ""); -} -var $64afbd09cd65a300$var$expando = "Sortable" + new Date().getTime(); -function $64afbd09cd65a300$var$AnimationStateManager() { - var animationStates = [], animationCallbackId; - return { - captureAnimationState: function captureAnimationState() { - animationStates = []; - if (!this.options.animation) return; - var children = [].slice.call(this.el.children); - children.forEach(function(child) { - if ($64afbd09cd65a300$var$css(child, "display") === "none" || child === $64afbd09cd65a300$export$31b3ca70d8f57423.ghost) return; - animationStates.push({ - target: child, - rect: $64afbd09cd65a300$var$getRect(child) - }); - var fromRect = $64afbd09cd65a300$var$_objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation - if (child.thisAnimationDuration) { - var childMatrix = $64afbd09cd65a300$var$matrix(child, true); - if (childMatrix) { - fromRect.top -= childMatrix.f; - fromRect.left -= childMatrix.e; - } - } - child.fromRect = fromRect; - }); - }, - addAnimationState: function addAnimationState(state) { - animationStates.push(state); - }, - removeAnimationState: function removeAnimationState(target) { - animationStates.splice($64afbd09cd65a300$var$indexOfObject(animationStates, { - target: target - }), 1); - }, - animateAll: function animateAll(callback) { - var _this = this; - if (!this.options.animation) { - clearTimeout(animationCallbackId); - if (typeof callback === "function") callback(); - return; - } - var animating = false, animationTime = 0; - animationStates.forEach(function(state) { - var time = 0, target = state.target, fromRect = target.fromRect, toRect = $64afbd09cd65a300$var$getRect(target), prevFromRect = target.prevFromRect, prevToRect = target.prevToRect, animatingRect = state.rect, targetMatrix = $64afbd09cd65a300$var$matrix(target, true); - if (targetMatrix) { - // Compensate for current animation - toRect.top -= targetMatrix.f; - toRect.left -= targetMatrix.e; - } - target.toRect = toRect; - if (target.thisAnimationDuration) // Could also check if animatingRect is between fromRect and toRect - { - if ($64afbd09cd65a300$var$isRectEqual(prevFromRect, toRect) && !$64afbd09cd65a300$var$isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect - (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) // If returning to same place as started from animation and on same axis - time = $64afbd09cd65a300$var$calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options); - } // if fromRect != toRect: animate - if (!$64afbd09cd65a300$var$isRectEqual(toRect, fromRect)) { - target.prevFromRect = fromRect; - target.prevToRect = toRect; - if (!time) time = _this.options.animation; - _this.animate(target, animatingRect, toRect, time); - } - if (time) { - animating = true; - animationTime = Math.max(animationTime, time); - clearTimeout(target.animationResetTimer); - target.animationResetTimer = setTimeout(function() { - target.animationTime = 0; - target.prevFromRect = null; - target.fromRect = null; - target.prevToRect = null; - target.thisAnimationDuration = null; - }, time); - target.thisAnimationDuration = time; - } - }); - clearTimeout(animationCallbackId); - if (!animating) { - if (typeof callback === "function") callback(); - } else animationCallbackId = setTimeout(function() { - if (typeof callback === "function") callback(); - }, animationTime); - animationStates = []; - }, - animate: function animate(target, currentRect, toRect, duration) { - if (duration) { - $64afbd09cd65a300$var$css(target, "transition", ""); - $64afbd09cd65a300$var$css(target, "transform", ""); - var elMatrix = $64afbd09cd65a300$var$matrix(this.el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d, translateX = (currentRect.left - toRect.left) / (scaleX || 1), translateY = (currentRect.top - toRect.top) / (scaleY || 1); - target.animatingX = !!translateX; - target.animatingY = !!translateY; - $64afbd09cd65a300$var$css(target, "transform", "translate3d(" + translateX + "px," + translateY + "px,0)"); - this.forRepaintDummy = $64afbd09cd65a300$var$repaint(target); // repaint - $64afbd09cd65a300$var$css(target, "transition", "transform " + duration + "ms" + (this.options.easing ? " " + this.options.easing : "")); - $64afbd09cd65a300$var$css(target, "transform", "translate3d(0,0,0)"); - typeof target.animated === "number" && clearTimeout(target.animated); - target.animated = setTimeout(function() { - $64afbd09cd65a300$var$css(target, "transition", ""); - $64afbd09cd65a300$var$css(target, "transform", ""); - target.animated = false; - target.animatingX = false; - target.animatingY = false; - }, duration); - } - } - }; -} -function $64afbd09cd65a300$var$repaint(target) { - return target.offsetWidth; -} -function $64afbd09cd65a300$var$calculateRealTime(animatingRect, fromRect, toRect, options) { - return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation; -} -var $64afbd09cd65a300$var$plugins = []; -var $64afbd09cd65a300$var$defaults = { - initializeByDefault: true -}; -var $64afbd09cd65a300$var$PluginManager = { - mount: function mount(plugin) { - // Set default static properties - for(var option in $64afbd09cd65a300$var$defaults)if ($64afbd09cd65a300$var$defaults.hasOwnProperty(option) && !(option in plugin)) plugin[option] = $64afbd09cd65a300$var$defaults[option]; - $64afbd09cd65a300$var$plugins.forEach(function(p) { - if (p.pluginName === plugin.pluginName) throw "Sortable: Cannot mount plugin ".concat(plugin.pluginName, " more than once"); - }); - $64afbd09cd65a300$var$plugins.push(plugin); - }, - pluginEvent: function pluginEvent(eventName, sortable, evt) { - var _this = this; - this.eventCanceled = false; - evt.cancel = function() { - _this.eventCanceled = true; - }; - var eventNameGlobal = eventName + "Global"; - $64afbd09cd65a300$var$plugins.forEach(function(plugin) { - if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable - if (sortable[plugin.pluginName][eventNameGlobal]) sortable[plugin.pluginName][eventNameGlobal]($64afbd09cd65a300$var$_objectSpread2({ - sortable: sortable - }, evt)); - // Only fire plugin event if plugin is enabled in this sortable, - // and plugin has event defined - if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) sortable[plugin.pluginName][eventName]($64afbd09cd65a300$var$_objectSpread2({ - sortable: sortable - }, evt)); - }); - }, - initializePlugins: function initializePlugins(sortable, el, defaults, options) { - $64afbd09cd65a300$var$plugins.forEach(function(plugin) { - var pluginName = plugin.pluginName; - if (!sortable.options[pluginName] && !plugin.initializeByDefault) return; - var initialized = new plugin(sortable, el, sortable.options); - initialized.sortable = sortable; - initialized.options = sortable.options; - sortable[pluginName] = initialized; // Add default options from plugin - $64afbd09cd65a300$var$_extends(defaults, initialized.defaults); - }); - for(var option in sortable.options){ - if (!sortable.options.hasOwnProperty(option)) continue; - var modified = this.modifyOption(sortable, option, sortable.options[option]); - if (typeof modified !== "undefined") sortable.options[option] = modified; - } - }, - getEventProperties: function getEventProperties(name, sortable) { - var eventProperties = {}; - $64afbd09cd65a300$var$plugins.forEach(function(plugin) { - if (typeof plugin.eventProperties !== "function") return; - $64afbd09cd65a300$var$_extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name)); - }); - return eventProperties; - }, - modifyOption: function modifyOption(sortable, name, value) { - var modifiedValue; - $64afbd09cd65a300$var$plugins.forEach(function(plugin) { - // Plugin must exist on the Sortable - if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin - if (plugin.optionListeners && typeof plugin.optionListeners[name] === "function") modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value); - }); - return modifiedValue; - } -}; -function $64afbd09cd65a300$var$dispatchEvent(_ref) { - var sortable = _ref.sortable, rootEl = _ref.rootEl, name = _ref.name, targetEl = _ref.targetEl, cloneEl = _ref.cloneEl, toEl = _ref.toEl, fromEl = _ref.fromEl, oldIndex = _ref.oldIndex, newIndex = _ref.newIndex, oldDraggableIndex = _ref.oldDraggableIndex, newDraggableIndex = _ref.newDraggableIndex, originalEvent = _ref.originalEvent, putSortable = _ref.putSortable, extraEventProperties = _ref.extraEventProperties; - sortable = sortable || rootEl && rootEl[$64afbd09cd65a300$var$expando]; - if (!sortable) return; - var evt, options = sortable.options, onName = "on" + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature - if (window.CustomEvent && !$64afbd09cd65a300$var$IE11OrLess && !$64afbd09cd65a300$var$Edge) evt = new CustomEvent(name, { - bubbles: true, - cancelable: true - }); - else { - evt = document.createEvent("Event"); - evt.initEvent(name, true, true); - } - evt.to = toEl || rootEl; - evt.from = fromEl || rootEl; - evt.item = targetEl || rootEl; - evt.clone = cloneEl; - evt.oldIndex = oldIndex; - evt.newIndex = newIndex; - evt.oldDraggableIndex = oldDraggableIndex; - evt.newDraggableIndex = newDraggableIndex; - evt.originalEvent = originalEvent; - evt.pullMode = putSortable ? putSortable.lastPutMode : undefined; - var allEventProperties = $64afbd09cd65a300$var$_objectSpread2($64afbd09cd65a300$var$_objectSpread2({}, extraEventProperties), $64afbd09cd65a300$var$PluginManager.getEventProperties(name, sortable)); - for(var option in allEventProperties)evt[option] = allEventProperties[option]; - if (rootEl) rootEl.dispatchEvent(evt); - if (options[onName]) options[onName].call(sortable, evt); -} -var $64afbd09cd65a300$var$_excluded = [ - "evt" -]; -var $64afbd09cd65a300$var$pluginEvent = function pluginEvent(eventName, sortable) { - var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, originalEvent = _ref.evt, data = $64afbd09cd65a300$var$_objectWithoutProperties(_ref, $64afbd09cd65a300$var$_excluded); - $64afbd09cd65a300$var$PluginManager.pluginEvent.bind($64afbd09cd65a300$export$31b3ca70d8f57423)(eventName, sortable, $64afbd09cd65a300$var$_objectSpread2({ - dragEl: $64afbd09cd65a300$var$dragEl, - parentEl: $64afbd09cd65a300$var$parentEl, - ghostEl: $64afbd09cd65a300$var$ghostEl, - rootEl: $64afbd09cd65a300$var$rootEl, - nextEl: $64afbd09cd65a300$var$nextEl, - lastDownEl: $64afbd09cd65a300$var$lastDownEl, - cloneEl: $64afbd09cd65a300$var$cloneEl, - cloneHidden: $64afbd09cd65a300$var$cloneHidden, - dragStarted: $64afbd09cd65a300$var$moved, - putSortable: $64afbd09cd65a300$var$putSortable, - activeSortable: $64afbd09cd65a300$export$31b3ca70d8f57423.active, - originalEvent: originalEvent, - oldIndex: $64afbd09cd65a300$var$oldIndex, - oldDraggableIndex: $64afbd09cd65a300$var$oldDraggableIndex, - newIndex: $64afbd09cd65a300$var$newIndex, - newDraggableIndex: $64afbd09cd65a300$var$newDraggableIndex, - hideGhostForTarget: $64afbd09cd65a300$var$_hideGhostForTarget, - unhideGhostForTarget: $64afbd09cd65a300$var$_unhideGhostForTarget, - cloneNowHidden: function cloneNowHidden() { - $64afbd09cd65a300$var$cloneHidden = true; - }, - cloneNowShown: function cloneNowShown() { - $64afbd09cd65a300$var$cloneHidden = false; - }, - dispatchSortableEvent: function dispatchSortableEvent(name) { - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: sortable, - name: name, - originalEvent: originalEvent - }); - } - }, data)); -}; -function $64afbd09cd65a300$var$_dispatchEvent(info) { - $64afbd09cd65a300$var$dispatchEvent($64afbd09cd65a300$var$_objectSpread2({ - putSortable: $64afbd09cd65a300$var$putSortable, - cloneEl: $64afbd09cd65a300$var$cloneEl, - targetEl: $64afbd09cd65a300$var$dragEl, - rootEl: $64afbd09cd65a300$var$rootEl, - oldIndex: $64afbd09cd65a300$var$oldIndex, - oldDraggableIndex: $64afbd09cd65a300$var$oldDraggableIndex, - newIndex: $64afbd09cd65a300$var$newIndex, - newDraggableIndex: $64afbd09cd65a300$var$newDraggableIndex - }, info)); -} -var $64afbd09cd65a300$var$dragEl, $64afbd09cd65a300$var$parentEl, $64afbd09cd65a300$var$ghostEl, $64afbd09cd65a300$var$rootEl, $64afbd09cd65a300$var$nextEl, $64afbd09cd65a300$var$lastDownEl, $64afbd09cd65a300$var$cloneEl, $64afbd09cd65a300$var$cloneHidden, $64afbd09cd65a300$var$oldIndex, $64afbd09cd65a300$var$newIndex, $64afbd09cd65a300$var$oldDraggableIndex, $64afbd09cd65a300$var$newDraggableIndex, $64afbd09cd65a300$var$activeGroup, $64afbd09cd65a300$var$putSortable, $64afbd09cd65a300$var$awaitingDragStarted = false, $64afbd09cd65a300$var$ignoreNextClick = false, $64afbd09cd65a300$var$sortables = [], $64afbd09cd65a300$var$tapEvt, $64afbd09cd65a300$var$touchEvt, $64afbd09cd65a300$var$lastDx, $64afbd09cd65a300$var$lastDy, $64afbd09cd65a300$var$tapDistanceLeft, $64afbd09cd65a300$var$tapDistanceTop, $64afbd09cd65a300$var$moved, $64afbd09cd65a300$var$lastTarget, $64afbd09cd65a300$var$lastDirection, $64afbd09cd65a300$var$pastFirstInvertThresh = false, $64afbd09cd65a300$var$isCircumstantialInvert = false, $64afbd09cd65a300$var$targetMoveDistance, // For positioning ghost absolutely -$64afbd09cd65a300$var$ghostRelativeParent, $64afbd09cd65a300$var$ghostRelativeParentInitialScroll = [], // (left, top) -$64afbd09cd65a300$var$_silent = false, $64afbd09cd65a300$var$savedInputChecked = []; -/** @const */ var $64afbd09cd65a300$var$documentExists = typeof document !== "undefined", $64afbd09cd65a300$var$PositionGhostAbsolutely = $64afbd09cd65a300$var$IOS, $64afbd09cd65a300$var$CSSFloatProperty = $64afbd09cd65a300$var$Edge || $64afbd09cd65a300$var$IE11OrLess ? "cssFloat" : "float", // This will not pass for IE9, because IE9 DnD only works on anchors -$64afbd09cd65a300$var$supportDraggable = $64afbd09cd65a300$var$documentExists && !$64afbd09cd65a300$var$ChromeForAndroid && !$64afbd09cd65a300$var$IOS && "draggable" in document.createElement("div"), $64afbd09cd65a300$var$supportCssPointerEvents = function() { - if (!$64afbd09cd65a300$var$documentExists) return; // false when <= IE11 - if ($64afbd09cd65a300$var$IE11OrLess) return false; - var el = document.createElement("x"); - el.style.cssText = "pointer-events:auto"; - return el.style.pointerEvents === "auto"; -}(), $64afbd09cd65a300$var$_detectDirection = function _detectDirection(el, options) { - var elCSS = $64afbd09cd65a300$var$css(el), elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth), child1 = $64afbd09cd65a300$var$getChild(el, 0, options), child2 = $64afbd09cd65a300$var$getChild(el, 1, options), firstChildCSS = child1 && $64afbd09cd65a300$var$css(child1), secondChildCSS = child2 && $64afbd09cd65a300$var$css(child2), firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + $64afbd09cd65a300$var$getRect(child1).width, secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + $64afbd09cd65a300$var$getRect(child2).width; - if (elCSS.display === "flex") return elCSS.flexDirection === "column" || elCSS.flexDirection === "column-reverse" ? "vertical" : "horizontal"; - if (elCSS.display === "grid") return elCSS.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal"; - if (child1 && firstChildCSS["float"] && firstChildCSS["float"] !== "none") { - var touchingSideChild2 = firstChildCSS["float"] === "left" ? "left" : "right"; - return child2 && (secondChildCSS.clear === "both" || secondChildCSS.clear === touchingSideChild2) ? "vertical" : "horizontal"; - } - return child1 && (firstChildCSS.display === "block" || firstChildCSS.display === "flex" || firstChildCSS.display === "table" || firstChildCSS.display === "grid" || firstChildWidth >= elWidth && elCSS[$64afbd09cd65a300$var$CSSFloatProperty] === "none" || child2 && elCSS[$64afbd09cd65a300$var$CSSFloatProperty] === "none" && firstChildWidth + secondChildWidth > elWidth) ? "vertical" : "horizontal"; -}, $64afbd09cd65a300$var$_dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) { - var dragElS1Opp = vertical ? dragRect.left : dragRect.top, dragElS2Opp = vertical ? dragRect.right : dragRect.bottom, dragElOppLength = vertical ? dragRect.width : dragRect.height, targetS1Opp = vertical ? targetRect.left : targetRect.top, targetS2Opp = vertical ? targetRect.right : targetRect.bottom, targetOppLength = vertical ? targetRect.width : targetRect.height; - return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2; -}, /** - * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold. - * @param {Number} x X position - * @param {Number} y Y position - * @return {HTMLElement} Element of the first found nearest Sortable - */ $64afbd09cd65a300$var$_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) { - var ret; - $64afbd09cd65a300$var$sortables.some(function(sortable) { - var threshold = sortable[$64afbd09cd65a300$var$expando].options.emptyInsertThreshold; - if (!threshold || $64afbd09cd65a300$var$lastChild(sortable)) return; - var rect = $64afbd09cd65a300$var$getRect(sortable), insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold, insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold; - if (insideHorizontally && insideVertically) return ret = sortable; - }); - return ret; -}, $64afbd09cd65a300$var$_prepareGroup = function _prepareGroup(options) { - function toFn(value, pull) { - return function(to, from, dragEl, evt) { - var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name; - if (value == null && (pull || sameGroup)) // Default pull value - // Default pull and put value if same group - return true; - else if (value == null || value === false) return false; - else if (pull && value === "clone") return value; - else if (typeof value === "function") return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt); - else { - var otherGroup = (pull ? to : from).options.group.name; - return value === true || typeof value === "string" && value === otherGroup || value.join && value.indexOf(otherGroup) > -1; - } - }; - } - var group = {}; - var originalGroup = options.group; - if (!originalGroup || $64afbd09cd65a300$var$_typeof(originalGroup) != "object") originalGroup = { - name: originalGroup - }; - group.name = originalGroup.name; - group.checkPull = toFn(originalGroup.pull, true); - group.checkPut = toFn(originalGroup.put); - group.revertClone = originalGroup.revertClone; - options.group = group; -}, $64afbd09cd65a300$var$_hideGhostForTarget = function _hideGhostForTarget() { - if (!$64afbd09cd65a300$var$supportCssPointerEvents && $64afbd09cd65a300$var$ghostEl) $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "display", "none"); -}, $64afbd09cd65a300$var$_unhideGhostForTarget = function _unhideGhostForTarget() { - if (!$64afbd09cd65a300$var$supportCssPointerEvents && $64afbd09cd65a300$var$ghostEl) $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "display", ""); -}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position -if ($64afbd09cd65a300$var$documentExists && !$64afbd09cd65a300$var$ChromeForAndroid) document.addEventListener("click", function(evt) { - if ($64afbd09cd65a300$var$ignoreNextClick) { - evt.preventDefault(); - evt.stopPropagation && evt.stopPropagation(); - evt.stopImmediatePropagation && evt.stopImmediatePropagation(); - $64afbd09cd65a300$var$ignoreNextClick = false; - return false; - } -}, true); -var $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) { - if ($64afbd09cd65a300$var$dragEl) { - evt = evt.touches ? evt.touches[0] : evt; - var nearest = $64afbd09cd65a300$var$_detectNearestEmptySortable(evt.clientX, evt.clientY); - if (nearest) { - // Create imitation event - var event = {}; - for(var i in evt)if (evt.hasOwnProperty(i)) event[i] = evt[i]; - event.target = event.rootEl = nearest; - event.preventDefault = void 0; - event.stopPropagation = void 0; - nearest[$64afbd09cd65a300$var$expando]._onDragOver(event); - } - } -}; -var $64afbd09cd65a300$var$_checkOutsideTargetEl = function _checkOutsideTargetEl(evt) { - if ($64afbd09cd65a300$var$dragEl) $64afbd09cd65a300$var$dragEl.parentNode[$64afbd09cd65a300$var$expando]._isOutsideThisEl(evt.target); -}; -/** - * @class Sortable - * @param {HTMLElement} el - * @param {Object} [options] - */ function $64afbd09cd65a300$export$31b3ca70d8f57423(el, options) { - if (!(el && el.nodeType && el.nodeType === 1)) throw "Sortable: `el` must be an HTMLElement, not ".concat(({}).toString.call(el)); - this.el = el; // root element - this.options = options = $64afbd09cd65a300$var$_extends({}, options); // Export instance - el[$64afbd09cd65a300$var$expando] = this; - var defaults = { - group: null, - sort: true, - disabled: false, - store: null, - handle: null, - draggable: /^[uo]l$/i.test(el.nodeName) ? ">li" : ">*", - swapThreshold: 1, - // percentage; 0 <= x <= 1 - invertSwap: false, - // invert always - invertedSwapThreshold: null, - // will be set to same as swapThreshold if default - removeCloneOnHide: true, - direction: function direction() { - return $64afbd09cd65a300$var$_detectDirection(el, this.options); - }, - ghostClass: "sortable-ghost", - chosenClass: "sortable-chosen", - dragClass: "sortable-drag", - ignore: "a, img", - filter: null, - preventOnFilter: true, - animation: 0, - easing: null, - setData: function setData(dataTransfer, dragEl) { - dataTransfer.setData("Text", dragEl.textContent); - }, - dropBubble: false, - dragoverBubble: false, - dataIdAttr: "data-id", - delay: 0, - delayOnTouchOnly: false, - touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, - forceFallback: false, - fallbackClass: "sortable-fallback", - fallbackOnBody: false, - fallbackTolerance: 0, - fallbackOffset: { - x: 0, - y: 0 - }, - supportPointer: $64afbd09cd65a300$export$31b3ca70d8f57423.supportPointer !== false && "PointerEvent" in window && !$64afbd09cd65a300$var$Safari, - emptyInsertThreshold: 5 - }; - $64afbd09cd65a300$var$PluginManager.initializePlugins(this, el, defaults); // Set default options - for(var name in defaults)!(name in options) && (options[name] = defaults[name]); - $64afbd09cd65a300$var$_prepareGroup(options); // Bind all private methods - for(var fn in this)if (fn.charAt(0) === "_" && typeof this[fn] === "function") this[fn] = this[fn].bind(this); - // Setup drag mode - this.nativeDraggable = options.forceFallback ? false : $64afbd09cd65a300$var$supportDraggable; - if (this.nativeDraggable) // Touch start threshold cannot be greater than the native dragstart threshold - this.options.touchStartThreshold = 1; - // Bind events - if (options.supportPointer) $64afbd09cd65a300$var$on(el, "pointerdown", this._onTapStart); - else { - $64afbd09cd65a300$var$on(el, "mousedown", this._onTapStart); - $64afbd09cd65a300$var$on(el, "touchstart", this._onTapStart); - } - if (this.nativeDraggable) { - $64afbd09cd65a300$var$on(el, "dragover", this); - $64afbd09cd65a300$var$on(el, "dragenter", this); - } - $64afbd09cd65a300$var$sortables.push(this.el); // Restore sorting - options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager - $64afbd09cd65a300$var$_extends(this, $64afbd09cd65a300$var$AnimationStateManager()); -} -$64afbd09cd65a300$export$31b3ca70d8f57423.prototype = /** @lends Sortable.prototype */ { - constructor: $64afbd09cd65a300$export$31b3ca70d8f57423, - _isOutsideThisEl: function _isOutsideThisEl(target) { - if (!this.el.contains(target) && target !== this.el) $64afbd09cd65a300$var$lastTarget = null; - }, - _getDirection: function _getDirection(evt, target) { - return typeof this.options.direction === "function" ? this.options.direction.call(this, evt, target, $64afbd09cd65a300$var$dragEl) : this.options.direction; - }, - _onTapStart: function _onTapStart(/** Event|TouchEvent */ evt) { - if (!evt.cancelable) return; - var _this = this, el = this.el, options = this.options, preventOnFilter = options.preventOnFilter, type = evt.type, touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === "touch" && evt, target = (touch || evt).target, originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target, filter = options.filter; - $64afbd09cd65a300$var$_saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group. - if ($64afbd09cd65a300$var$dragEl) return; - if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) return; // only left button and enabled - // cancel dnd if original target is content editable - if (originalTarget.isContentEditable) return; - // Safari ignores further event handling after mousedown - if (!this.nativeDraggable && $64afbd09cd65a300$var$Safari && target && target.tagName.toUpperCase() === "SELECT") return; - target = $64afbd09cd65a300$var$closest(target, options.draggable, el, false); - if (target && target.animated) return; - if ($64afbd09cd65a300$var$lastDownEl === target) // Ignoring duplicate `down` - return; - // Get the index of the dragged element within its parent - $64afbd09cd65a300$var$oldIndex = $64afbd09cd65a300$var$index(target); - $64afbd09cd65a300$var$oldDraggableIndex = $64afbd09cd65a300$var$index(target, options.draggable); // Check filter - if (typeof filter === "function") { - if (filter.call(this, evt, target, this)) { - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: _this, - rootEl: originalTarget, - name: "filter", - targetEl: target, - toEl: el, - fromEl: el - }); - $64afbd09cd65a300$var$pluginEvent("filter", _this, { - evt: evt - }); - preventOnFilter && evt.cancelable && evt.preventDefault(); - return; // cancel dnd - } - } else if (filter) { - filter = filter.split(",").some(function(criteria) { - criteria = $64afbd09cd65a300$var$closest(originalTarget, criteria.trim(), el, false); - if (criteria) { - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: _this, - rootEl: criteria, - name: "filter", - targetEl: target, - fromEl: el, - toEl: el - }); - $64afbd09cd65a300$var$pluginEvent("filter", _this, { - evt: evt - }); - return true; - } - }); - if (filter) { - preventOnFilter && evt.cancelable && evt.preventDefault(); - return; // cancel dnd - } - } - if (options.handle && !$64afbd09cd65a300$var$closest(originalTarget, options.handle, el, false)) return; - // Prepare `dragstart` - this._prepareDragStart(evt, touch, target); - }, - _prepareDragStart: function _prepareDragStart(/** Event */ evt, /** Touch */ touch, /** HTMLElement */ target) { - var _this = this, el = _this.el, options = _this.options, ownerDocument = el.ownerDocument, dragStartFn; - if (target && !$64afbd09cd65a300$var$dragEl && target.parentNode === el) { - var dragRect = $64afbd09cd65a300$var$getRect(target); - $64afbd09cd65a300$var$rootEl = el; - $64afbd09cd65a300$var$dragEl = target; - $64afbd09cd65a300$var$parentEl = $64afbd09cd65a300$var$dragEl.parentNode; - $64afbd09cd65a300$var$nextEl = $64afbd09cd65a300$var$dragEl.nextSibling; - $64afbd09cd65a300$var$lastDownEl = target; - $64afbd09cd65a300$var$activeGroup = options.group; - $64afbd09cd65a300$export$31b3ca70d8f57423.dragged = $64afbd09cd65a300$var$dragEl; - $64afbd09cd65a300$var$tapEvt = { - target: $64afbd09cd65a300$var$dragEl, - clientX: (touch || evt).clientX, - clientY: (touch || evt).clientY - }; - $64afbd09cd65a300$var$tapDistanceLeft = $64afbd09cd65a300$var$tapEvt.clientX - dragRect.left; - $64afbd09cd65a300$var$tapDistanceTop = $64afbd09cd65a300$var$tapEvt.clientY - dragRect.top; - this._lastX = (touch || evt).clientX; - this._lastY = (touch || evt).clientY; - $64afbd09cd65a300$var$dragEl.style["will-change"] = "all"; - dragStartFn = function dragStartFn() { - $64afbd09cd65a300$var$pluginEvent("delayEnded", _this, { - evt: evt - }); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - _this._onDrop(); - return; - } // Delayed drag has been triggered - // we can re-enable the events: touchmove/mousemove - _this._disableDelayedDragEvents(); - if (!$64afbd09cd65a300$var$FireFox && _this.nativeDraggable) $64afbd09cd65a300$var$dragEl.draggable = true; - // Bind the events: dragstart/dragend - _this._triggerDragStart(evt, touch); // Drag start event - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: _this, - name: "choose", - originalEvent: evt - }); // Chosen item - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, options.chosenClass, true); - }; // Disable "draggable" - options.ignore.split(",").forEach(function(criteria) { - $64afbd09cd65a300$var$find($64afbd09cd65a300$var$dragEl, criteria.trim(), $64afbd09cd65a300$var$_disableDraggable); - }); - $64afbd09cd65a300$var$on(ownerDocument, "dragover", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - $64afbd09cd65a300$var$on(ownerDocument, "mousemove", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - $64afbd09cd65a300$var$on(ownerDocument, "touchmove", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - $64afbd09cd65a300$var$on(ownerDocument, "mouseup", _this._onDrop); - $64afbd09cd65a300$var$on(ownerDocument, "touchend", _this._onDrop); - $64afbd09cd65a300$var$on(ownerDocument, "touchcancel", _this._onDrop); // Make dragEl draggable (must be before delay for FireFox) - if ($64afbd09cd65a300$var$FireFox && this.nativeDraggable) { - this.options.touchStartThreshold = 4; - $64afbd09cd65a300$var$dragEl.draggable = true; - } - $64afbd09cd65a300$var$pluginEvent("delayStart", this, { - evt: evt - }); // Delay is impossible for native DnD in Edge or IE - if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !($64afbd09cd65a300$var$Edge || $64afbd09cd65a300$var$IE11OrLess))) { - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - this._onDrop(); - return; - } // If the user moves the pointer or let go the click or touch - // before the delay has been reached: - // disable the delayed drag - $64afbd09cd65a300$var$on(ownerDocument, "mouseup", _this._disableDelayedDrag); - $64afbd09cd65a300$var$on(ownerDocument, "touchend", _this._disableDelayedDrag); - $64afbd09cd65a300$var$on(ownerDocument, "touchcancel", _this._disableDelayedDrag); - $64afbd09cd65a300$var$on(ownerDocument, "mousemove", _this._delayedDragTouchMoveHandler); - $64afbd09cd65a300$var$on(ownerDocument, "touchmove", _this._delayedDragTouchMoveHandler); - options.supportPointer && $64afbd09cd65a300$var$on(ownerDocument, "pointermove", _this._delayedDragTouchMoveHandler); - _this._dragStartTimer = setTimeout(dragStartFn, options.delay); - } else dragStartFn(); - } - }, - _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(/** TouchEvent|PointerEvent **/ e) { - var touch = e.touches ? e.touches[0] : e; - if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) this._disableDelayedDrag(); - }, - _disableDelayedDrag: function _disableDelayedDrag() { - $64afbd09cd65a300$var$dragEl && $64afbd09cd65a300$var$_disableDraggable($64afbd09cd65a300$var$dragEl); - clearTimeout(this._dragStartTimer); - this._disableDelayedDragEvents(); - }, - _disableDelayedDragEvents: function _disableDelayedDragEvents() { - var ownerDocument = this.el.ownerDocument; - $64afbd09cd65a300$var$off(ownerDocument, "mouseup", this._disableDelayedDrag); - $64afbd09cd65a300$var$off(ownerDocument, "touchend", this._disableDelayedDrag); - $64afbd09cd65a300$var$off(ownerDocument, "touchcancel", this._disableDelayedDrag); - $64afbd09cd65a300$var$off(ownerDocument, "mousemove", this._delayedDragTouchMoveHandler); - $64afbd09cd65a300$var$off(ownerDocument, "touchmove", this._delayedDragTouchMoveHandler); - $64afbd09cd65a300$var$off(ownerDocument, "pointermove", this._delayedDragTouchMoveHandler); - }, - _triggerDragStart: function _triggerDragStart(/** Event */ evt, /** Touch */ touch) { - touch = touch || evt.pointerType == "touch" && evt; - if (!this.nativeDraggable || touch) { - if (this.options.supportPointer) $64afbd09cd65a300$var$on(document, "pointermove", this._onTouchMove); - else if (touch) $64afbd09cd65a300$var$on(document, "touchmove", this._onTouchMove); - else $64afbd09cd65a300$var$on(document, "mousemove", this._onTouchMove); - } else { - $64afbd09cd65a300$var$on($64afbd09cd65a300$var$dragEl, "dragend", this); - $64afbd09cd65a300$var$on($64afbd09cd65a300$var$rootEl, "dragstart", this._onDragStart); - } - try { - if (document.selection) // Timeout neccessary for IE9 - $64afbd09cd65a300$var$_nextTick(function() { - document.selection.empty(); - }); - else window.getSelection().removeAllRanges(); - } catch (err) {} - }, - _dragStarted: function _dragStarted(fallback, evt) { - $64afbd09cd65a300$var$awaitingDragStarted = false; - if ($64afbd09cd65a300$var$rootEl && $64afbd09cd65a300$var$dragEl) { - $64afbd09cd65a300$var$pluginEvent("dragStarted", this, { - evt: evt - }); - if (this.nativeDraggable) $64afbd09cd65a300$var$on(document, "dragover", $64afbd09cd65a300$var$_checkOutsideTargetEl); - var options = this.options; // Apply effect - !fallback && $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, options.dragClass, false); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, options.ghostClass, true); - $64afbd09cd65a300$export$31b3ca70d8f57423.active = this; - fallback && this._appendGhost(); // Drag start event - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "start", - originalEvent: evt - }); - } else this._nulling(); - }, - _emulateDragOver: function _emulateDragOver() { - if ($64afbd09cd65a300$var$touchEvt) { - this._lastX = $64afbd09cd65a300$var$touchEvt.clientX; - this._lastY = $64afbd09cd65a300$var$touchEvt.clientY; - $64afbd09cd65a300$var$_hideGhostForTarget(); - var target = document.elementFromPoint($64afbd09cd65a300$var$touchEvt.clientX, $64afbd09cd65a300$var$touchEvt.clientY); - var parent = target; - while(target && target.shadowRoot){ - target = target.shadowRoot.elementFromPoint($64afbd09cd65a300$var$touchEvt.clientX, $64afbd09cd65a300$var$touchEvt.clientY); - if (target === parent) break; - parent = target; - } - $64afbd09cd65a300$var$dragEl.parentNode[$64afbd09cd65a300$var$expando]._isOutsideThisEl(target); - if (parent) do { - if (parent[$64afbd09cd65a300$var$expando]) { - var inserted = void 0; - inserted = parent[$64afbd09cd65a300$var$expando]._onDragOver({ - clientX: $64afbd09cd65a300$var$touchEvt.clientX, - clientY: $64afbd09cd65a300$var$touchEvt.clientY, - target: target, - rootEl: parent - }); - if (inserted && !this.options.dragoverBubble) break; - } - target = parent; // store last element - }while (parent = parent.parentNode); - $64afbd09cd65a300$var$_unhideGhostForTarget(); - } - }, - _onTouchMove: function _onTouchMove(/**TouchEvent*/ evt) { - if ($64afbd09cd65a300$var$tapEvt) { - var options = this.options, fallbackTolerance = options.fallbackTolerance, fallbackOffset = options.fallbackOffset, touch = evt.touches ? evt.touches[0] : evt, ghostMatrix = $64afbd09cd65a300$var$ghostEl && $64afbd09cd65a300$var$matrix($64afbd09cd65a300$var$ghostEl, true), scaleX = $64afbd09cd65a300$var$ghostEl && ghostMatrix && ghostMatrix.a, scaleY = $64afbd09cd65a300$var$ghostEl && ghostMatrix && ghostMatrix.d, relativeScrollOffset = $64afbd09cd65a300$var$PositionGhostAbsolutely && $64afbd09cd65a300$var$ghostRelativeParent && $64afbd09cd65a300$var$getRelativeScrollOffset($64afbd09cd65a300$var$ghostRelativeParent), dx = (touch.clientX - $64afbd09cd65a300$var$tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - $64afbd09cd65a300$var$ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1), dy = (touch.clientY - $64afbd09cd65a300$var$tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - $64afbd09cd65a300$var$ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging - if (!$64afbd09cd65a300$export$31b3ca70d8f57423.active && !$64afbd09cd65a300$var$awaitingDragStarted) { - if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) return; - this._onDragStart(evt, true); - } - if ($64afbd09cd65a300$var$ghostEl) { - if (ghostMatrix) { - ghostMatrix.e += dx - ($64afbd09cd65a300$var$lastDx || 0); - ghostMatrix.f += dy - ($64afbd09cd65a300$var$lastDy || 0); - } else ghostMatrix = { - a: 1, - b: 0, - c: 0, - d: 1, - e: dx, - f: dy - }; - var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")"); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "webkitTransform", cssMatrix); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "mozTransform", cssMatrix); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "msTransform", cssMatrix); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "transform", cssMatrix); - $64afbd09cd65a300$var$lastDx = dx; - $64afbd09cd65a300$var$lastDy = dy; - $64afbd09cd65a300$var$touchEvt = touch; - } - evt.cancelable && evt.preventDefault(); - } - }, - _appendGhost: function _appendGhost() { - // Bug if using scale(): https://stackoverflow.com/questions/2637058 - // Not being adjusted for - if (!$64afbd09cd65a300$var$ghostEl) { - var container = this.options.fallbackOnBody ? document.body : $64afbd09cd65a300$var$rootEl, rect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$dragEl, true, $64afbd09cd65a300$var$PositionGhostAbsolutely, true, container), options = this.options; // Position absolutely - if ($64afbd09cd65a300$var$PositionGhostAbsolutely) { - // Get relatively positioned parent - $64afbd09cd65a300$var$ghostRelativeParent = container; - while($64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostRelativeParent, "position") === "static" && $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostRelativeParent, "transform") === "none" && $64afbd09cd65a300$var$ghostRelativeParent !== document)$64afbd09cd65a300$var$ghostRelativeParent = $64afbd09cd65a300$var$ghostRelativeParent.parentNode; - if ($64afbd09cd65a300$var$ghostRelativeParent !== document.body && $64afbd09cd65a300$var$ghostRelativeParent !== document.documentElement) { - if ($64afbd09cd65a300$var$ghostRelativeParent === document) $64afbd09cd65a300$var$ghostRelativeParent = $64afbd09cd65a300$var$getWindowScrollingElement(); - rect.top += $64afbd09cd65a300$var$ghostRelativeParent.scrollTop; - rect.left += $64afbd09cd65a300$var$ghostRelativeParent.scrollLeft; - } else $64afbd09cd65a300$var$ghostRelativeParent = $64afbd09cd65a300$var$getWindowScrollingElement(); - $64afbd09cd65a300$var$ghostRelativeParentInitialScroll = $64afbd09cd65a300$var$getRelativeScrollOffset($64afbd09cd65a300$var$ghostRelativeParent); - } - $64afbd09cd65a300$var$ghostEl = $64afbd09cd65a300$var$dragEl.cloneNode(true); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$ghostEl, options.ghostClass, false); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$ghostEl, options.fallbackClass, true); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$ghostEl, options.dragClass, true); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "transition", ""); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "transform", ""); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "box-sizing", "border-box"); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "margin", 0); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "top", rect.top); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "left", rect.left); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "width", rect.width); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "height", rect.height); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "opacity", "0.8"); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "position", $64afbd09cd65a300$var$PositionGhostAbsolutely ? "absolute" : "fixed"); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "zIndex", "100000"); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "pointerEvents", "none"); - $64afbd09cd65a300$export$31b3ca70d8f57423.ghost = $64afbd09cd65a300$var$ghostEl; - container.appendChild($64afbd09cd65a300$var$ghostEl); // Set transform-origin - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$ghostEl, "transform-origin", $64afbd09cd65a300$var$tapDistanceLeft / parseInt($64afbd09cd65a300$var$ghostEl.style.width) * 100 + "% " + $64afbd09cd65a300$var$tapDistanceTop / parseInt($64afbd09cd65a300$var$ghostEl.style.height) * 100 + "%"); - } - }, - _onDragStart: function _onDragStart(/**Event*/ evt, /**boolean*/ fallback) { - var _this = this; - var dataTransfer = evt.dataTransfer; - var options = _this.options; - $64afbd09cd65a300$var$pluginEvent("dragStart", this, { - evt: evt - }); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - this._onDrop(); - return; - } - $64afbd09cd65a300$var$pluginEvent("setupClone", this); - if (!$64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - $64afbd09cd65a300$var$cloneEl = $64afbd09cd65a300$var$clone($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$cloneEl.removeAttribute("id"); - $64afbd09cd65a300$var$cloneEl.draggable = false; - $64afbd09cd65a300$var$cloneEl.style["will-change"] = ""; - this._hideClone(); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$cloneEl, this.options.chosenClass, false); - $64afbd09cd65a300$export$31b3ca70d8f57423.clone = $64afbd09cd65a300$var$cloneEl; - } // #1143: IFrame support workaround - _this.cloneId = $64afbd09cd65a300$var$_nextTick(function() { - $64afbd09cd65a300$var$pluginEvent("clone", _this); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) return; - if (!_this.options.removeCloneOnHide) $64afbd09cd65a300$var$rootEl.insertBefore($64afbd09cd65a300$var$cloneEl, $64afbd09cd65a300$var$dragEl); - _this._hideClone(); - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: _this, - name: "clone" - }); - }); - !fallback && $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, options.dragClass, true); // Set proper drop events - if (fallback) { - $64afbd09cd65a300$var$ignoreNextClick = true; - _this._loopId = setInterval(_this._emulateDragOver, 50); - } else { - // Undo what was set in _prepareDragStart before drag started - $64afbd09cd65a300$var$off(document, "mouseup", _this._onDrop); - $64afbd09cd65a300$var$off(document, "touchend", _this._onDrop); - $64afbd09cd65a300$var$off(document, "touchcancel", _this._onDrop); - if (dataTransfer) { - dataTransfer.effectAllowed = "move"; - options.setData && options.setData.call(_this, dataTransfer, $64afbd09cd65a300$var$dragEl); - } - $64afbd09cd65a300$var$on(document, "drop", _this); // #1276 fix: - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$dragEl, "transform", "translateZ(0)"); - } - $64afbd09cd65a300$var$awaitingDragStarted = true; - _this._dragStartId = $64afbd09cd65a300$var$_nextTick(_this._dragStarted.bind(_this, fallback, evt)); - $64afbd09cd65a300$var$on(document, "selectstart", _this); - $64afbd09cd65a300$var$moved = true; - if ($64afbd09cd65a300$var$Safari) $64afbd09cd65a300$var$css(document.body, "user-select", "none"); - }, - // Returns true - if no further action is needed (either inserted or another condition) - _onDragOver: function _onDragOver(/**Event*/ evt) { - var el = this.el, target = evt.target, dragRect, targetRect, revert, options = this.options, group = options.group, activeSortable = $64afbd09cd65a300$export$31b3ca70d8f57423.active, isOwner = $64afbd09cd65a300$var$activeGroup === group, canSort = options.sort, fromSortable = $64afbd09cd65a300$var$putSortable || activeSortable, vertical, _this = this, completedFired = false; - if ($64afbd09cd65a300$var$_silent) return; - function dragOverEvent(name, extra) { - $64afbd09cd65a300$var$pluginEvent(name, _this, $64afbd09cd65a300$var$_objectSpread2({ - evt: evt, - isOwner: isOwner, - axis: vertical ? "vertical" : "horizontal", - revert: revert, - dragRect: dragRect, - targetRect: targetRect, - canSort: canSort, - fromSortable: fromSortable, - target: target, - completed: completed, - onMove: function onMove(target, after) { - return $64afbd09cd65a300$var$_onMove($64afbd09cd65a300$var$rootEl, el, $64afbd09cd65a300$var$dragEl, dragRect, target, $64afbd09cd65a300$var$getRect(target), evt, after); - }, - changed: changed - }, extra)); - } // Capture animation state - function capture() { - dragOverEvent("dragOverAnimationCapture"); - _this.captureAnimationState(); - if (_this !== fromSortable) fromSortable.captureAnimationState(); - } // Return invocation when dragEl is inserted (or completed) - function completed(insertion) { - dragOverEvent("dragOverCompleted", { - insertion: insertion - }); - if (insertion) { - // Clones must be hidden before folding animation to capture dragRectAbsolute properly - if (isOwner) activeSortable._hideClone(); - else activeSortable._showClone(_this); - if (_this !== fromSortable) { - // Set ghost class to new sortable's ghost class - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, $64afbd09cd65a300$var$putSortable ? $64afbd09cd65a300$var$putSortable.options.ghostClass : activeSortable.options.ghostClass, false); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, options.ghostClass, true); - } - if ($64afbd09cd65a300$var$putSortable !== _this && _this !== $64afbd09cd65a300$export$31b3ca70d8f57423.active) $64afbd09cd65a300$var$putSortable = _this; - else if (_this === $64afbd09cd65a300$export$31b3ca70d8f57423.active && $64afbd09cd65a300$var$putSortable) $64afbd09cd65a300$var$putSortable = null; - // Animation - if (fromSortable === _this) _this._ignoreWhileAnimating = target; - _this.animateAll(function() { - dragOverEvent("dragOverAnimationComplete"); - _this._ignoreWhileAnimating = null; - }); - if (_this !== fromSortable) { - fromSortable.animateAll(); - fromSortable._ignoreWhileAnimating = null; - } - } // Null lastTarget if it is not inside a previously swapped element - if (target === $64afbd09cd65a300$var$dragEl && !$64afbd09cd65a300$var$dragEl.animated || target === el && !target.animated) $64afbd09cd65a300$var$lastTarget = null; - // no bubbling and not fallback - if (!options.dragoverBubble && !evt.rootEl && target !== document) { - $64afbd09cd65a300$var$dragEl.parentNode[$64afbd09cd65a300$var$expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted - !insertion && $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent(evt); - } - !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation(); - return completedFired = true; - } // Call when dragEl has been inserted - function changed() { - $64afbd09cd65a300$var$newIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$newDraggableIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl, options.draggable); - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: _this, - name: "change", - toEl: el, - newIndex: $64afbd09cd65a300$var$newIndex, - newDraggableIndex: $64afbd09cd65a300$var$newDraggableIndex, - originalEvent: evt - }); - } - if (evt.preventDefault !== void 0) evt.cancelable && evt.preventDefault(); - target = $64afbd09cd65a300$var$closest(target, options.draggable, el, true); - dragOverEvent("dragOver"); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) return completedFired; - if ($64afbd09cd65a300$var$dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) return completed(false); - $64afbd09cd65a300$var$ignoreNextClick = false; - if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = $64afbd09cd65a300$var$parentEl !== $64afbd09cd65a300$var$rootEl // Reverting item into the original list - ) : $64afbd09cd65a300$var$putSortable === this || (this.lastPutMode = $64afbd09cd65a300$var$activeGroup.checkPull(this, activeSortable, $64afbd09cd65a300$var$dragEl, evt)) && group.checkPut(this, activeSortable, $64afbd09cd65a300$var$dragEl, evt))) { - vertical = this._getDirection(evt, target) === "vertical"; - dragRect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$dragEl); - dragOverEvent("dragOverValid"); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) return completedFired; - if (revert) { - $64afbd09cd65a300$var$parentEl = $64afbd09cd65a300$var$rootEl; // actualization - capture(); - this._hideClone(); - dragOverEvent("revert"); - if (!$64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - if ($64afbd09cd65a300$var$nextEl) $64afbd09cd65a300$var$rootEl.insertBefore($64afbd09cd65a300$var$dragEl, $64afbd09cd65a300$var$nextEl); - else $64afbd09cd65a300$var$rootEl.appendChild($64afbd09cd65a300$var$dragEl); - } - return completed(true); - } - var elLastChild = $64afbd09cd65a300$var$lastChild(el, options.draggable); - if (!elLastChild || $64afbd09cd65a300$var$_ghostIsLast(evt, vertical, this) && !elLastChild.animated) { - // Insert to end of list - // If already at end of list: Do not insert - if (elLastChild === $64afbd09cd65a300$var$dragEl) return completed(false); - // if there is a last element, it is the target - if (elLastChild && el === evt.target) target = elLastChild; - if (target) targetRect = $64afbd09cd65a300$var$getRect(target); - if ($64afbd09cd65a300$var$_onMove($64afbd09cd65a300$var$rootEl, el, $64afbd09cd65a300$var$dragEl, dragRect, target, targetRect, evt, !!target) !== false) { - capture(); - if (elLastChild && elLastChild.nextSibling) // the last draggable element is not the last node - el.insertBefore($64afbd09cd65a300$var$dragEl, elLastChild.nextSibling); - else el.appendChild($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$parentEl = el; // actualization - changed(); - return completed(true); - } - } else if (elLastChild && $64afbd09cd65a300$var$_ghostIsFirst(evt, vertical, this)) { - // Insert to start of list - var firstChild = $64afbd09cd65a300$var$getChild(el, 0, options, true); - if (firstChild === $64afbd09cd65a300$var$dragEl) return completed(false); - target = firstChild; - targetRect = $64afbd09cd65a300$var$getRect(target); - if ($64afbd09cd65a300$var$_onMove($64afbd09cd65a300$var$rootEl, el, $64afbd09cd65a300$var$dragEl, dragRect, target, targetRect, evt, false) !== false) { - capture(); - el.insertBefore($64afbd09cd65a300$var$dragEl, firstChild); - $64afbd09cd65a300$var$parentEl = el; // actualization - changed(); - return completed(true); - } - } else if (target.parentNode === el) { - targetRect = $64afbd09cd65a300$var$getRect(target); - var direction = 0, targetBeforeFirstSwap, differentLevel = $64afbd09cd65a300$var$dragEl.parentNode !== el, differentRowCol = !$64afbd09cd65a300$var$_dragElInRowColumn($64afbd09cd65a300$var$dragEl.animated && $64afbd09cd65a300$var$dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical), side1 = vertical ? "top" : "left", scrolledPastTop = $64afbd09cd65a300$var$isScrolledPast(target, "top", "top") || $64afbd09cd65a300$var$isScrolledPast($64afbd09cd65a300$var$dragEl, "top", "top"), scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0; - if ($64afbd09cd65a300$var$lastTarget !== target) { - targetBeforeFirstSwap = targetRect[side1]; - $64afbd09cd65a300$var$pastFirstInvertThresh = false; - $64afbd09cd65a300$var$isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel; - } - direction = $64afbd09cd65a300$var$_getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, $64afbd09cd65a300$var$isCircumstantialInvert, $64afbd09cd65a300$var$lastTarget === target); - var sibling; - if (direction !== 0) { - // Check if target is beside dragEl in respective direction (ignoring hidden elements) - var dragIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl); - do { - dragIndex -= direction; - sibling = $64afbd09cd65a300$var$parentEl.children[dragIndex]; - }while (sibling && ($64afbd09cd65a300$var$css(sibling, "display") === "none" || sibling === $64afbd09cd65a300$var$ghostEl)); - } // If dragEl is already beside target: Do not insert - if (direction === 0 || sibling === target) return completed(false); - $64afbd09cd65a300$var$lastTarget = target; - $64afbd09cd65a300$var$lastDirection = direction; - var nextSibling = target.nextElementSibling, after = false; - after = direction === 1; - var moveVector = $64afbd09cd65a300$var$_onMove($64afbd09cd65a300$var$rootEl, el, $64afbd09cd65a300$var$dragEl, dragRect, target, targetRect, evt, after); - if (moveVector !== false) { - if (moveVector === 1 || moveVector === -1) after = moveVector === 1; - $64afbd09cd65a300$var$_silent = true; - setTimeout($64afbd09cd65a300$var$_unsilent, 30); - capture(); - if (after && !nextSibling) el.appendChild($64afbd09cd65a300$var$dragEl); - else target.parentNode.insertBefore($64afbd09cd65a300$var$dragEl, after ? nextSibling : target); - // Undo chrome's scroll adjustment (has no effect on other browsers) - if (scrolledPastTop) $64afbd09cd65a300$var$scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop); - $64afbd09cd65a300$var$parentEl = $64afbd09cd65a300$var$dragEl.parentNode; // actualization - // must be done before animation - if (targetBeforeFirstSwap !== undefined && !$64afbd09cd65a300$var$isCircumstantialInvert) $64afbd09cd65a300$var$targetMoveDistance = Math.abs(targetBeforeFirstSwap - $64afbd09cd65a300$var$getRect(target)[side1]); - changed(); - return completed(true); - } - } - if (el.contains($64afbd09cd65a300$var$dragEl)) return completed(false); - } - return false; - }, - _ignoreWhileAnimating: null, - _offMoveEvents: function _offMoveEvents() { - $64afbd09cd65a300$var$off(document, "mousemove", this._onTouchMove); - $64afbd09cd65a300$var$off(document, "touchmove", this._onTouchMove); - $64afbd09cd65a300$var$off(document, "pointermove", this._onTouchMove); - $64afbd09cd65a300$var$off(document, "dragover", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - $64afbd09cd65a300$var$off(document, "mousemove", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - $64afbd09cd65a300$var$off(document, "touchmove", $64afbd09cd65a300$var$nearestEmptyInsertDetectEvent); - }, - _offUpEvents: function _offUpEvents() { - var ownerDocument = this.el.ownerDocument; - $64afbd09cd65a300$var$off(ownerDocument, "mouseup", this._onDrop); - $64afbd09cd65a300$var$off(ownerDocument, "touchend", this._onDrop); - $64afbd09cd65a300$var$off(ownerDocument, "pointerup", this._onDrop); - $64afbd09cd65a300$var$off(ownerDocument, "touchcancel", this._onDrop); - $64afbd09cd65a300$var$off(document, "selectstart", this); - }, - _onDrop: function _onDrop(/**Event*/ evt) { - var el = this.el, options = this.options; // Get the index of the dragged element within its parent - $64afbd09cd65a300$var$newIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$newDraggableIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl, options.draggable); - $64afbd09cd65a300$var$pluginEvent("drop", this, { - evt: evt - }); - $64afbd09cd65a300$var$parentEl = $64afbd09cd65a300$var$dragEl && $64afbd09cd65a300$var$dragEl.parentNode; // Get again after plugin event - $64afbd09cd65a300$var$newIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$newDraggableIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl, options.draggable); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) { - this._nulling(); - return; - } - $64afbd09cd65a300$var$awaitingDragStarted = false; - $64afbd09cd65a300$var$isCircumstantialInvert = false; - $64afbd09cd65a300$var$pastFirstInvertThresh = false; - clearInterval(this._loopId); - clearTimeout(this._dragStartTimer); - $64afbd09cd65a300$var$_cancelNextTick(this.cloneId); - $64afbd09cd65a300$var$_cancelNextTick(this._dragStartId); // Unbind events - if (this.nativeDraggable) { - $64afbd09cd65a300$var$off(document, "drop", this); - $64afbd09cd65a300$var$off(el, "dragstart", this._onDragStart); - } - this._offMoveEvents(); - this._offUpEvents(); - if ($64afbd09cd65a300$var$Safari) $64afbd09cd65a300$var$css(document.body, "user-select", ""); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$dragEl, "transform", ""); - if (evt) { - if ($64afbd09cd65a300$var$moved) { - evt.cancelable && evt.preventDefault(); - !options.dropBubble && evt.stopPropagation(); - } - $64afbd09cd65a300$var$ghostEl && $64afbd09cd65a300$var$ghostEl.parentNode && $64afbd09cd65a300$var$ghostEl.parentNode.removeChild($64afbd09cd65a300$var$ghostEl); - if ($64afbd09cd65a300$var$rootEl === $64afbd09cd65a300$var$parentEl || $64afbd09cd65a300$var$putSortable && $64afbd09cd65a300$var$putSortable.lastPutMode !== "clone") // Remove clone(s) - $64afbd09cd65a300$var$cloneEl && $64afbd09cd65a300$var$cloneEl.parentNode && $64afbd09cd65a300$var$cloneEl.parentNode.removeChild($64afbd09cd65a300$var$cloneEl); - if ($64afbd09cd65a300$var$dragEl) { - if (this.nativeDraggable) $64afbd09cd65a300$var$off($64afbd09cd65a300$var$dragEl, "dragend", this); - $64afbd09cd65a300$var$_disableDraggable($64afbd09cd65a300$var$dragEl); - $64afbd09cd65a300$var$dragEl.style["will-change"] = ""; // Remove classes - // ghostClass is added in dragStarted - if ($64afbd09cd65a300$var$moved && !$64afbd09cd65a300$var$awaitingDragStarted) $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, $64afbd09cd65a300$var$putSortable ? $64afbd09cd65a300$var$putSortable.options.ghostClass : this.options.ghostClass, false); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl, this.options.chosenClass, false); // Drag stop event - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "unchoose", - toEl: $64afbd09cd65a300$var$parentEl, - newIndex: null, - newDraggableIndex: null, - originalEvent: evt - }); - if ($64afbd09cd65a300$var$rootEl !== $64afbd09cd65a300$var$parentEl) { - if ($64afbd09cd65a300$var$newIndex >= 0) { - // Add event - $64afbd09cd65a300$var$_dispatchEvent({ - rootEl: $64afbd09cd65a300$var$parentEl, - name: "add", - toEl: $64afbd09cd65a300$var$parentEl, - fromEl: $64afbd09cd65a300$var$rootEl, - originalEvent: evt - }); // Remove event - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "remove", - toEl: $64afbd09cd65a300$var$parentEl, - originalEvent: evt - }); // drag from one list and drop into another - $64afbd09cd65a300$var$_dispatchEvent({ - rootEl: $64afbd09cd65a300$var$parentEl, - name: "sort", - toEl: $64afbd09cd65a300$var$parentEl, - fromEl: $64afbd09cd65a300$var$rootEl, - originalEvent: evt - }); - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "sort", - toEl: $64afbd09cd65a300$var$parentEl, - originalEvent: evt - }); - } - $64afbd09cd65a300$var$putSortable && $64afbd09cd65a300$var$putSortable.save(); - } else { - if ($64afbd09cd65a300$var$newIndex !== $64afbd09cd65a300$var$oldIndex) { - if ($64afbd09cd65a300$var$newIndex >= 0) { - // drag & drop within the same list - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "update", - toEl: $64afbd09cd65a300$var$parentEl, - originalEvent: evt - }); - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "sort", - toEl: $64afbd09cd65a300$var$parentEl, - originalEvent: evt - }); - } - } - } - if ($64afbd09cd65a300$export$31b3ca70d8f57423.active) { - /* jshint eqnull:true */ if ($64afbd09cd65a300$var$newIndex == null || $64afbd09cd65a300$var$newIndex === -1) { - $64afbd09cd65a300$var$newIndex = $64afbd09cd65a300$var$oldIndex; - $64afbd09cd65a300$var$newDraggableIndex = $64afbd09cd65a300$var$oldDraggableIndex; - } - $64afbd09cd65a300$var$_dispatchEvent({ - sortable: this, - name: "end", - toEl: $64afbd09cd65a300$var$parentEl, - originalEvent: evt - }); // Save sorting - this.save(); - } - } - } - this._nulling(); - }, - _nulling: function _nulling() { - $64afbd09cd65a300$var$pluginEvent("nulling", this); - $64afbd09cd65a300$var$rootEl = $64afbd09cd65a300$var$dragEl = $64afbd09cd65a300$var$parentEl = $64afbd09cd65a300$var$ghostEl = $64afbd09cd65a300$var$nextEl = $64afbd09cd65a300$var$cloneEl = $64afbd09cd65a300$var$lastDownEl = $64afbd09cd65a300$var$cloneHidden = $64afbd09cd65a300$var$tapEvt = $64afbd09cd65a300$var$touchEvt = $64afbd09cd65a300$var$moved = $64afbd09cd65a300$var$newIndex = $64afbd09cd65a300$var$newDraggableIndex = $64afbd09cd65a300$var$oldIndex = $64afbd09cd65a300$var$oldDraggableIndex = $64afbd09cd65a300$var$lastTarget = $64afbd09cd65a300$var$lastDirection = $64afbd09cd65a300$var$putSortable = $64afbd09cd65a300$var$activeGroup = $64afbd09cd65a300$export$31b3ca70d8f57423.dragged = $64afbd09cd65a300$export$31b3ca70d8f57423.ghost = $64afbd09cd65a300$export$31b3ca70d8f57423.clone = $64afbd09cd65a300$export$31b3ca70d8f57423.active = null; - $64afbd09cd65a300$var$savedInputChecked.forEach(function(el) { - el.checked = true; - }); - $64afbd09cd65a300$var$savedInputChecked.length = $64afbd09cd65a300$var$lastDx = $64afbd09cd65a300$var$lastDy = 0; - }, - handleEvent: function handleEvent(/**Event*/ evt) { - switch(evt.type){ - case "drop": - case "dragend": - this._onDrop(evt); - break; - case "dragenter": - case "dragover": - if ($64afbd09cd65a300$var$dragEl) { - this._onDragOver(evt); - $64afbd09cd65a300$var$_globalDragOver(evt); - } - break; - case "selectstart": - evt.preventDefault(); - break; - } - }, - /** - * Serializes the item into an array of string. - * @returns {String[]} - */ toArray: function toArray() { - var order = [], el, children = this.el.children, i = 0, n = children.length, options = this.options; - for(; i < n; i++){ - el = children[i]; - if ($64afbd09cd65a300$var$closest(el, options.draggable, this.el, false)) order.push(el.getAttribute(options.dataIdAttr) || $64afbd09cd65a300$var$_generateId(el)); - } - return order; - }, - /** - * Sorts the elements according to the array. - * @param {String[]} order order of the items - */ sort: function sort(order, useAnimation) { - var items = {}, rootEl = this.el; - this.toArray().forEach(function(id, i) { - var el = rootEl.children[i]; - if ($64afbd09cd65a300$var$closest(el, this.options.draggable, rootEl, false)) items[id] = el; - }, this); - useAnimation && this.captureAnimationState(); - order.forEach(function(id) { - if (items[id]) { - rootEl.removeChild(items[id]); - rootEl.appendChild(items[id]); - } - }); - useAnimation && this.animateAll(); - }, - /** - * Save the current sorting - */ save: function save() { - var store = this.options.store; - store && store.set && store.set(this); - }, - /** - * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. - * @param {HTMLElement} el - * @param {String} [selector] default: `options.draggable` - * @returns {HTMLElement|null} - */ closest: function closest$1(el, selector) { - return $64afbd09cd65a300$var$closest(el, selector || this.options.draggable, this.el, false); - }, - /** - * Set/get option - * @param {string} name - * @param {*} [value] - * @returns {*} - */ option: function option(name, value) { - var options = this.options; - if (value === void 0) return options[name]; - else { - var modifiedValue = $64afbd09cd65a300$var$PluginManager.modifyOption(this, name, value); - if (typeof modifiedValue !== "undefined") options[name] = modifiedValue; - else options[name] = value; - if (name === "group") $64afbd09cd65a300$var$_prepareGroup(options); - } - }, - /** - * Destroy - */ destroy: function destroy() { - $64afbd09cd65a300$var$pluginEvent("destroy", this); - var el = this.el; - el[$64afbd09cd65a300$var$expando] = null; - $64afbd09cd65a300$var$off(el, "mousedown", this._onTapStart); - $64afbd09cd65a300$var$off(el, "touchstart", this._onTapStart); - $64afbd09cd65a300$var$off(el, "pointerdown", this._onTapStart); - if (this.nativeDraggable) { - $64afbd09cd65a300$var$off(el, "dragover", this); - $64afbd09cd65a300$var$off(el, "dragenter", this); - } // Remove draggable attributes - Array.prototype.forEach.call(el.querySelectorAll("[draggable]"), function(el) { - el.removeAttribute("draggable"); - }); - this._onDrop(); - this._disableDelayedDragEvents(); - $64afbd09cd65a300$var$sortables.splice($64afbd09cd65a300$var$sortables.indexOf(this.el), 1); - this.el = el = null; - }, - _hideClone: function _hideClone() { - if (!$64afbd09cd65a300$var$cloneHidden) { - $64afbd09cd65a300$var$pluginEvent("hideClone", this); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) return; - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$cloneEl, "display", "none"); - if (this.options.removeCloneOnHide && $64afbd09cd65a300$var$cloneEl.parentNode) $64afbd09cd65a300$var$cloneEl.parentNode.removeChild($64afbd09cd65a300$var$cloneEl); - $64afbd09cd65a300$var$cloneHidden = true; - } - }, - _showClone: function _showClone(putSortable) { - if (putSortable.lastPutMode !== "clone") { - this._hideClone(); - return; - } - if ($64afbd09cd65a300$var$cloneHidden) { - $64afbd09cd65a300$var$pluginEvent("showClone", this); - if ($64afbd09cd65a300$export$31b3ca70d8f57423.eventCanceled) return; // show clone at dragEl or original position - if ($64afbd09cd65a300$var$dragEl.parentNode == $64afbd09cd65a300$var$rootEl && !this.options.group.revertClone) $64afbd09cd65a300$var$rootEl.insertBefore($64afbd09cd65a300$var$cloneEl, $64afbd09cd65a300$var$dragEl); - else if ($64afbd09cd65a300$var$nextEl) $64afbd09cd65a300$var$rootEl.insertBefore($64afbd09cd65a300$var$cloneEl, $64afbd09cd65a300$var$nextEl); - else $64afbd09cd65a300$var$rootEl.appendChild($64afbd09cd65a300$var$cloneEl); - if (this.options.group.revertClone) this.animate($64afbd09cd65a300$var$dragEl, $64afbd09cd65a300$var$cloneEl); - $64afbd09cd65a300$var$css($64afbd09cd65a300$var$cloneEl, "display", ""); - $64afbd09cd65a300$var$cloneHidden = false; - } - } -}; -function $64afbd09cd65a300$var$_globalDragOver(/**Event*/ evt) { - if (evt.dataTransfer) evt.dataTransfer.dropEffect = "move"; - evt.cancelable && evt.preventDefault(); -} -function $64afbd09cd65a300$var$_onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) { - var evt, sortable = fromEl[$64afbd09cd65a300$var$expando], onMoveFn = sortable.options.onMove, retVal; // Support for new CustomEvent feature - if (window.CustomEvent && !$64afbd09cd65a300$var$IE11OrLess && !$64afbd09cd65a300$var$Edge) evt = new CustomEvent("move", { - bubbles: true, - cancelable: true - }); - else { - evt = document.createEvent("Event"); - evt.initEvent("move", true, true); - } - evt.to = toEl; - evt.from = fromEl; - evt.dragged = dragEl; - evt.draggedRect = dragRect; - evt.related = targetEl || toEl; - evt.relatedRect = targetRect || $64afbd09cd65a300$var$getRect(toEl); - evt.willInsertAfter = willInsertAfter; - evt.originalEvent = originalEvent; - fromEl.dispatchEvent(evt); - if (onMoveFn) retVal = onMoveFn.call(sortable, evt, originalEvent); - return retVal; -} -function $64afbd09cd65a300$var$_disableDraggable(el) { - el.draggable = false; -} -function $64afbd09cd65a300$var$_unsilent() { - $64afbd09cd65a300$var$_silent = false; -} -function $64afbd09cd65a300$var$_ghostIsFirst(evt, vertical, sortable) { - var rect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$getChild(sortable.el, 0, sortable.options, true)); - var spacer = 10; - return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left; -} -function $64afbd09cd65a300$var$_ghostIsLast(evt, vertical, sortable) { - var rect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$lastChild(sortable.el, sortable.options.draggable)); - var spacer = 10; - return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer; -} -function $64afbd09cd65a300$var$_getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) { - var mouseOnAxis = vertical ? evt.clientY : evt.clientX, targetLength = vertical ? targetRect.height : targetRect.width, targetS1 = vertical ? targetRect.top : targetRect.left, targetS2 = vertical ? targetRect.bottom : targetRect.right, invert = false; - if (!invertSwap) { - // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold - if (isLastTarget && $64afbd09cd65a300$var$targetMoveDistance < targetLength * swapThreshold) { - // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2 - // check if past first invert threshold on side opposite of lastDirection - if (!$64afbd09cd65a300$var$pastFirstInvertThresh && ($64afbd09cd65a300$var$lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) // past first invert threshold, do not restrict inverted threshold to dragEl shadow - $64afbd09cd65a300$var$pastFirstInvertThresh = true; - if (!$64afbd09cd65a300$var$pastFirstInvertThresh) { - // dragEl shadow (target move distance shadow) - if ($64afbd09cd65a300$var$lastDirection === 1 ? mouseOnAxis < targetS1 + $64afbd09cd65a300$var$targetMoveDistance // over dragEl shadow - : mouseOnAxis > targetS2 - $64afbd09cd65a300$var$targetMoveDistance) return -$64afbd09cd65a300$var$lastDirection; - } else invert = true; - } else { - // Regular - if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) return $64afbd09cd65a300$var$_getInsertDirection(target); - } - } - invert = invert || invertSwap; - if (invert) { - // Invert of regular - if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1; - } - return 0; -} -/** - * Gets the direction dragEl must be swapped relative to target in order to make it - * seem that dragEl has been "inserted" into that element's position - * @param {HTMLElement} target The target whose position dragEl is being inserted at - * @return {Number} Direction dragEl must be swapped - */ function $64afbd09cd65a300$var$_getInsertDirection(target) { - if ($64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl) < $64afbd09cd65a300$var$index(target)) return 1; - else return -1; -} -/** - * Generate id - * @param {HTMLElement} el - * @returns {String} - * @private - */ function $64afbd09cd65a300$var$_generateId(el) { - var str = el.tagName + el.className + el.src + el.href + el.textContent, i = str.length, sum = 0; - while(i--)sum += str.charCodeAt(i); - return sum.toString(36); -} -function $64afbd09cd65a300$var$_saveInputCheckedState(root) { - $64afbd09cd65a300$var$savedInputChecked.length = 0; - var inputs = root.getElementsByTagName("input"); - var idx = inputs.length; - while(idx--){ - var el = inputs[idx]; - el.checked && $64afbd09cd65a300$var$savedInputChecked.push(el); - } -} -function $64afbd09cd65a300$var$_nextTick(fn) { - return setTimeout(fn, 0); -} -function $64afbd09cd65a300$var$_cancelNextTick(id) { - return clearTimeout(id); -} // Fixed #973: -if ($64afbd09cd65a300$var$documentExists) $64afbd09cd65a300$var$on(document, "touchmove", function(evt) { - if (($64afbd09cd65a300$export$31b3ca70d8f57423.active || $64afbd09cd65a300$var$awaitingDragStarted) && evt.cancelable) evt.preventDefault(); -}); - // Export utils -$64afbd09cd65a300$export$31b3ca70d8f57423.utils = { - on: $64afbd09cd65a300$var$on, - off: $64afbd09cd65a300$var$off, - css: $64afbd09cd65a300$var$css, - find: $64afbd09cd65a300$var$find, - is: function is(el, selector) { - return !!$64afbd09cd65a300$var$closest(el, selector, el, false); - }, - extend: $64afbd09cd65a300$var$extend, - throttle: $64afbd09cd65a300$var$throttle, - closest: $64afbd09cd65a300$var$closest, - toggleClass: $64afbd09cd65a300$var$toggleClass, - clone: $64afbd09cd65a300$var$clone, - index: $64afbd09cd65a300$var$index, - nextTick: $64afbd09cd65a300$var$_nextTick, - cancelNextTick: $64afbd09cd65a300$var$_cancelNextTick, - detectDirection: $64afbd09cd65a300$var$_detectDirection, - getChild: $64afbd09cd65a300$var$getChild -}; -/** - * Get the Sortable instance of an element - * @param {HTMLElement} element The element - * @return {Sortable|undefined} The instance of Sortable - */ $64afbd09cd65a300$export$31b3ca70d8f57423.get = function(element) { - return element[$64afbd09cd65a300$var$expando]; -}; -/** - * Mount a plugin to Sortable - * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted - */ $64afbd09cd65a300$export$31b3ca70d8f57423.mount = function() { - for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++)plugins[_key] = arguments[_key]; - if (plugins[0].constructor === Array) plugins = plugins[0]; - plugins.forEach(function(plugin) { - if (!plugin.prototype || !plugin.prototype.constructor) throw "Sortable: Mounted plugin must be a constructor function, not ".concat(({}).toString.call(plugin)); - if (plugin.utils) $64afbd09cd65a300$export$31b3ca70d8f57423.utils = $64afbd09cd65a300$var$_objectSpread2($64afbd09cd65a300$var$_objectSpread2({}, $64afbd09cd65a300$export$31b3ca70d8f57423.utils), plugin.utils); - $64afbd09cd65a300$var$PluginManager.mount(plugin); - }); -}; -/** - * Create sortable instance - * @param {HTMLElement} el - * @param {Object} [options] - */ $64afbd09cd65a300$export$31b3ca70d8f57423.create = function(el, options) { - return new $64afbd09cd65a300$export$31b3ca70d8f57423(el, options); -}; // Export -$64afbd09cd65a300$export$31b3ca70d8f57423.version = $64afbd09cd65a300$var$version; -var $64afbd09cd65a300$var$autoScrolls = [], $64afbd09cd65a300$var$scrollEl, $64afbd09cd65a300$var$scrollRootEl, $64afbd09cd65a300$var$scrolling = false, $64afbd09cd65a300$var$lastAutoScrollX, $64afbd09cd65a300$var$lastAutoScrollY, $64afbd09cd65a300$var$touchEvt$1, $64afbd09cd65a300$var$pointerElemChangedInterval; -function $64afbd09cd65a300$var$AutoScrollPlugin() { - function AutoScroll() { - this.defaults = { - scroll: true, - forceAutoScrollFallback: false, - scrollSensitivity: 30, - scrollSpeed: 10, - bubbleScroll: true - }; // Bind all private methods - for(var fn in this)if (fn.charAt(0) === "_" && typeof this[fn] === "function") this[fn] = this[fn].bind(this); - } - AutoScroll.prototype = { - dragStarted: function dragStarted(_ref) { - var originalEvent = _ref.originalEvent; - if (this.sortable.nativeDraggable) $64afbd09cd65a300$var$on(document, "dragover", this._handleAutoScroll); - else { - if (this.options.supportPointer) $64afbd09cd65a300$var$on(document, "pointermove", this._handleFallbackAutoScroll); - else if (originalEvent.touches) $64afbd09cd65a300$var$on(document, "touchmove", this._handleFallbackAutoScroll); - else $64afbd09cd65a300$var$on(document, "mousemove", this._handleFallbackAutoScroll); - } - }, - dragOverCompleted: function dragOverCompleted(_ref2) { - var originalEvent = _ref2.originalEvent; - // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached) - if (!this.options.dragOverBubble && !originalEvent.rootEl) this._handleAutoScroll(originalEvent); - }, - drop: function drop() { - if (this.sortable.nativeDraggable) $64afbd09cd65a300$var$off(document, "dragover", this._handleAutoScroll); - else { - $64afbd09cd65a300$var$off(document, "pointermove", this._handleFallbackAutoScroll); - $64afbd09cd65a300$var$off(document, "touchmove", this._handleFallbackAutoScroll); - $64afbd09cd65a300$var$off(document, "mousemove", this._handleFallbackAutoScroll); - } - $64afbd09cd65a300$var$clearPointerElemChangedInterval(); - $64afbd09cd65a300$var$clearAutoScrolls(); - $64afbd09cd65a300$var$cancelThrottle(); - }, - nulling: function nulling() { - $64afbd09cd65a300$var$touchEvt$1 = $64afbd09cd65a300$var$scrollRootEl = $64afbd09cd65a300$var$scrollEl = $64afbd09cd65a300$var$scrolling = $64afbd09cd65a300$var$pointerElemChangedInterval = $64afbd09cd65a300$var$lastAutoScrollX = $64afbd09cd65a300$var$lastAutoScrollY = null; - $64afbd09cd65a300$var$autoScrolls.length = 0; - }, - _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) { - this._handleAutoScroll(evt, true); - }, - _handleAutoScroll: function _handleAutoScroll(evt, fallback) { - var _this = this; - var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, elem = document.elementFromPoint(x, y); - $64afbd09cd65a300$var$touchEvt$1 = evt; // IE does not seem to have native autoscroll, - // Edge's autoscroll seems too conditional, - // MACOS Safari does not have autoscroll, - // Firefox and Chrome are good - if (fallback || this.options.forceAutoScrollFallback || $64afbd09cd65a300$var$Edge || $64afbd09cd65a300$var$IE11OrLess || $64afbd09cd65a300$var$Safari) { - $64afbd09cd65a300$var$autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change - var ogElemScroller = $64afbd09cd65a300$var$getParentAutoScrollElement(elem, true); - if ($64afbd09cd65a300$var$scrolling && (!$64afbd09cd65a300$var$pointerElemChangedInterval || x !== $64afbd09cd65a300$var$lastAutoScrollX || y !== $64afbd09cd65a300$var$lastAutoScrollY)) { - $64afbd09cd65a300$var$pointerElemChangedInterval && $64afbd09cd65a300$var$clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour - $64afbd09cd65a300$var$pointerElemChangedInterval = setInterval(function() { - var newElem = $64afbd09cd65a300$var$getParentAutoScrollElement(document.elementFromPoint(x, y), true); - if (newElem !== ogElemScroller) { - ogElemScroller = newElem; - $64afbd09cd65a300$var$clearAutoScrolls(); - } - $64afbd09cd65a300$var$autoScroll(evt, _this.options, newElem, fallback); - }, 10); - $64afbd09cd65a300$var$lastAutoScrollX = x; - $64afbd09cd65a300$var$lastAutoScrollY = y; - } - } else { - // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll - if (!this.options.bubbleScroll || $64afbd09cd65a300$var$getParentAutoScrollElement(elem, true) === $64afbd09cd65a300$var$getWindowScrollingElement()) { - $64afbd09cd65a300$var$clearAutoScrolls(); - return; - } - $64afbd09cd65a300$var$autoScroll(evt, this.options, $64afbd09cd65a300$var$getParentAutoScrollElement(elem, false), false); - } - } - }; - return $64afbd09cd65a300$var$_extends(AutoScroll, { - pluginName: "scroll", - initializeByDefault: true - }); -} -function $64afbd09cd65a300$var$clearAutoScrolls() { - $64afbd09cd65a300$var$autoScrolls.forEach(function(autoScroll) { - clearInterval(autoScroll.pid); - }); - $64afbd09cd65a300$var$autoScrolls = []; -} -function $64afbd09cd65a300$var$clearPointerElemChangedInterval() { - clearInterval($64afbd09cd65a300$var$pointerElemChangedInterval); -} -var $64afbd09cd65a300$var$autoScroll = $64afbd09cd65a300$var$throttle(function(evt, options, rootEl, isFallback) { - // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521 - if (!options.scroll) return; - var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, sens = options.scrollSensitivity, speed = options.scrollSpeed, winScroller = $64afbd09cd65a300$var$getWindowScrollingElement(); - var scrollThisInstance = false, scrollCustomFn; // New scroll root, set scrollEl - if ($64afbd09cd65a300$var$scrollRootEl !== rootEl) { - $64afbd09cd65a300$var$scrollRootEl = rootEl; - $64afbd09cd65a300$var$clearAutoScrolls(); - $64afbd09cd65a300$var$scrollEl = options.scroll; - scrollCustomFn = options.scrollFn; - if ($64afbd09cd65a300$var$scrollEl === true) $64afbd09cd65a300$var$scrollEl = $64afbd09cd65a300$var$getParentAutoScrollElement(rootEl, true); - } - var layersOut = 0; - var currentParent = $64afbd09cd65a300$var$scrollEl; - do { - var el = currentParent, rect = $64afbd09cd65a300$var$getRect(el), top = rect.top, bottom = rect.bottom, left = rect.left, right = rect.right, width = rect.width, height = rect.height, canScrollX = void 0, canScrollY = void 0, scrollWidth = el.scrollWidth, scrollHeight = el.scrollHeight, elCSS = $64afbd09cd65a300$var$css(el), scrollPosX = el.scrollLeft, scrollPosY = el.scrollTop; - if (el === winScroller) { - canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll" || elCSS.overflowX === "visible"); - canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll" || elCSS.overflowY === "visible"); - } else { - canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll"); - canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll"); - } - var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX); - var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY); - if (!$64afbd09cd65a300$var$autoScrolls[layersOut]) { - for(var i = 0; i <= layersOut; i++)if (!$64afbd09cd65a300$var$autoScrolls[i]) $64afbd09cd65a300$var$autoScrolls[i] = {}; - } - if ($64afbd09cd65a300$var$autoScrolls[layersOut].vx != vx || $64afbd09cd65a300$var$autoScrolls[layersOut].vy != vy || $64afbd09cd65a300$var$autoScrolls[layersOut].el !== el) { - $64afbd09cd65a300$var$autoScrolls[layersOut].el = el; - $64afbd09cd65a300$var$autoScrolls[layersOut].vx = vx; - $64afbd09cd65a300$var$autoScrolls[layersOut].vy = vy; - clearInterval($64afbd09cd65a300$var$autoScrolls[layersOut].pid); - if (vx != 0 || vy != 0) { - scrollThisInstance = true; - /* jshint loopfunc:true */ $64afbd09cd65a300$var$autoScrolls[layersOut].pid = setInterval((function() { - // emulate drag over during autoscroll (fallback), emulating native DnD behaviour - if (isFallback && this.layer === 0) $64afbd09cd65a300$export$31b3ca70d8f57423.active._onTouchMove($64afbd09cd65a300$var$touchEvt$1); // To move ghost if it is positioned absolutely - var scrollOffsetY = $64afbd09cd65a300$var$autoScrolls[this.layer].vy ? $64afbd09cd65a300$var$autoScrolls[this.layer].vy * speed : 0; - var scrollOffsetX = $64afbd09cd65a300$var$autoScrolls[this.layer].vx ? $64afbd09cd65a300$var$autoScrolls[this.layer].vx * speed : 0; - if (typeof scrollCustomFn === "function") { - if (scrollCustomFn.call($64afbd09cd65a300$export$31b3ca70d8f57423.dragged.parentNode[$64afbd09cd65a300$var$expando], scrollOffsetX, scrollOffsetY, evt, $64afbd09cd65a300$var$touchEvt$1, $64afbd09cd65a300$var$autoScrolls[this.layer].el) !== "continue") return; - } - $64afbd09cd65a300$var$scrollBy($64afbd09cd65a300$var$autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY); - }).bind({ - layer: layersOut - }), 24); - } - } - layersOut++; - }while (options.bubbleScroll && currentParent !== winScroller && (currentParent = $64afbd09cd65a300$var$getParentAutoScrollElement(currentParent, false))); - $64afbd09cd65a300$var$scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not -}, 30); -var $64afbd09cd65a300$var$drop = function drop(_ref) { - var originalEvent = _ref.originalEvent, putSortable = _ref.putSortable, dragEl = _ref.dragEl, activeSortable = _ref.activeSortable, dispatchSortableEvent = _ref.dispatchSortableEvent, hideGhostForTarget = _ref.hideGhostForTarget, unhideGhostForTarget = _ref.unhideGhostForTarget; - if (!originalEvent) return; - var toSortable = putSortable || activeSortable; - hideGhostForTarget(); - var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent; - var target = document.elementFromPoint(touch.clientX, touch.clientY); - unhideGhostForTarget(); - if (toSortable && !toSortable.el.contains(target)) { - dispatchSortableEvent("spill"); - this.onSpill({ - dragEl: dragEl, - putSortable: putSortable - }); - } -}; -function $64afbd09cd65a300$var$Revert() {} -$64afbd09cd65a300$var$Revert.prototype = { - startIndex: null, - dragStart: function dragStart(_ref2) { - var oldDraggableIndex = _ref2.oldDraggableIndex; - this.startIndex = oldDraggableIndex; - }, - onSpill: function onSpill(_ref3) { - var dragEl = _ref3.dragEl, putSortable = _ref3.putSortable; - this.sortable.captureAnimationState(); - if (putSortable) putSortable.captureAnimationState(); - var nextSibling = $64afbd09cd65a300$var$getChild(this.sortable.el, this.startIndex, this.options); - if (nextSibling) this.sortable.el.insertBefore(dragEl, nextSibling); - else this.sortable.el.appendChild(dragEl); - this.sortable.animateAll(); - if (putSortable) putSortable.animateAll(); - }, - drop: $64afbd09cd65a300$var$drop -}; -$64afbd09cd65a300$var$_extends($64afbd09cd65a300$var$Revert, { - pluginName: "revertOnSpill" -}); -function $64afbd09cd65a300$var$Remove() {} -$64afbd09cd65a300$var$Remove.prototype = { - onSpill: function onSpill(_ref4) { - var dragEl = _ref4.dragEl, putSortable = _ref4.putSortable; - var parentSortable = putSortable || this.sortable; - parentSortable.captureAnimationState(); - dragEl.parentNode && dragEl.parentNode.removeChild(dragEl); - parentSortable.animateAll(); - }, - drop: $64afbd09cd65a300$var$drop -}; -$64afbd09cd65a300$var$_extends($64afbd09cd65a300$var$Remove, { - pluginName: "removeOnSpill" -}); -var $64afbd09cd65a300$var$lastSwapEl; -function $64afbd09cd65a300$export$bdb5f0a1b77546f4() { - function Swap() { - this.defaults = { - swapClass: "sortable-swap-highlight" - }; - } - Swap.prototype = { - dragStart: function dragStart(_ref) { - var dragEl = _ref.dragEl; - $64afbd09cd65a300$var$lastSwapEl = dragEl; - }, - dragOverValid: function dragOverValid(_ref2) { - var completed = _ref2.completed, target = _ref2.target, onMove = _ref2.onMove, activeSortable = _ref2.activeSortable, changed = _ref2.changed, cancel = _ref2.cancel; - if (!activeSortable.options.swap) return; - var el = this.sortable.el, options = this.options; - if (target && target !== el) { - var prevSwapEl = $64afbd09cd65a300$var$lastSwapEl; - if (onMove(target) !== false) { - $64afbd09cd65a300$var$toggleClass(target, options.swapClass, true); - $64afbd09cd65a300$var$lastSwapEl = target; - } else $64afbd09cd65a300$var$lastSwapEl = null; - if (prevSwapEl && prevSwapEl !== $64afbd09cd65a300$var$lastSwapEl) $64afbd09cd65a300$var$toggleClass(prevSwapEl, options.swapClass, false); - } - changed(); - completed(true); - cancel(); - }, - drop: function drop(_ref3) { - var activeSortable = _ref3.activeSortable, putSortable = _ref3.putSortable, dragEl = _ref3.dragEl; - var toSortable = putSortable || this.sortable; - var options = this.options; - $64afbd09cd65a300$var$lastSwapEl && $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$lastSwapEl, options.swapClass, false); - if ($64afbd09cd65a300$var$lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) { - if (dragEl !== $64afbd09cd65a300$var$lastSwapEl) { - toSortable.captureAnimationState(); - if (toSortable !== activeSortable) activeSortable.captureAnimationState(); - $64afbd09cd65a300$var$swapNodes(dragEl, $64afbd09cd65a300$var$lastSwapEl); - toSortable.animateAll(); - if (toSortable !== activeSortable) activeSortable.animateAll(); - } - } - }, - nulling: function nulling() { - $64afbd09cd65a300$var$lastSwapEl = null; - } - }; - return $64afbd09cd65a300$var$_extends(Swap, { - pluginName: "swap", - eventProperties: function eventProperties() { - return { - swapItem: $64afbd09cd65a300$var$lastSwapEl - }; - } - }); -} -function $64afbd09cd65a300$var$swapNodes(n1, n2) { - var p1 = n1.parentNode, p2 = n2.parentNode, i1, i2; - if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return; - i1 = $64afbd09cd65a300$var$index(n1); - i2 = $64afbd09cd65a300$var$index(n2); - if (p1.isEqualNode(p2) && i1 < i2) i2++; - p1.insertBefore(n2, p1.children[i1]); - p2.insertBefore(n1, p2.children[i2]); -} -var $64afbd09cd65a300$var$multiDragElements = [], $64afbd09cd65a300$var$multiDragClones = [], $64afbd09cd65a300$var$lastMultiDragSelect, // for selection with modifier key down (SHIFT) -$64afbd09cd65a300$var$multiDragSortable, $64afbd09cd65a300$var$initialFolding = false, // Initial multi-drag fold when drag started -$64afbd09cd65a300$var$folding = false, // Folding any other time -$64afbd09cd65a300$var$dragStarted = false, $64afbd09cd65a300$var$dragEl$1, $64afbd09cd65a300$var$clonesFromRect, $64afbd09cd65a300$var$clonesHidden; -function $64afbd09cd65a300$export$18e5d2a5d1df842d() { - function MultiDrag(sortable) { - // Bind all private methods - for(var fn in this)if (fn.charAt(0) === "_" && typeof this[fn] === "function") this[fn] = this[fn].bind(this); - if (!sortable.options.avoidImplicitDeselect) { - if (sortable.options.supportPointer) $64afbd09cd65a300$var$on(document, "pointerup", this._deselectMultiDrag); - else { - $64afbd09cd65a300$var$on(document, "mouseup", this._deselectMultiDrag); - $64afbd09cd65a300$var$on(document, "touchend", this._deselectMultiDrag); - } - } - $64afbd09cd65a300$var$on(document, "keydown", this._checkKeyDown); - $64afbd09cd65a300$var$on(document, "keyup", this._checkKeyUp); - this.defaults = { - selectedClass: "sortable-selected", - multiDragKey: null, - avoidImplicitDeselect: false, - setData: function setData(dataTransfer, dragEl) { - var data = ""; - if ($64afbd09cd65a300$var$multiDragElements.length && $64afbd09cd65a300$var$multiDragSortable === sortable) $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement, i) { - data += (!i ? "" : ", ") + multiDragElement.textContent; - }); - else data = dragEl.textContent; - dataTransfer.setData("Text", data); - } - }; - } - MultiDrag.prototype = { - multiDragKeyDown: false, - isMultiDrag: false, - delayStartGlobal: function delayStartGlobal(_ref) { - var dragged = _ref.dragEl; - $64afbd09cd65a300$var$dragEl$1 = dragged; - }, - delayEnded: function delayEnded() { - this.isMultiDrag = ~$64afbd09cd65a300$var$multiDragElements.indexOf($64afbd09cd65a300$var$dragEl$1); - }, - setupClone: function setupClone(_ref2) { - var sortable = _ref2.sortable, cancel = _ref2.cancel; - if (!this.isMultiDrag) return; - for(var i = 0; i < $64afbd09cd65a300$var$multiDragElements.length; i++){ - $64afbd09cd65a300$var$multiDragClones.push($64afbd09cd65a300$var$clone($64afbd09cd65a300$var$multiDragElements[i])); - $64afbd09cd65a300$var$multiDragClones[i].sortableIndex = $64afbd09cd65a300$var$multiDragElements[i].sortableIndex; - $64afbd09cd65a300$var$multiDragClones[i].draggable = false; - $64afbd09cd65a300$var$multiDragClones[i].style["will-change"] = ""; - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$multiDragClones[i], this.options.selectedClass, false); - $64afbd09cd65a300$var$multiDragElements[i] === $64afbd09cd65a300$var$dragEl$1 && $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$multiDragClones[i], this.options.chosenClass, false); - } - sortable._hideClone(); - cancel(); - }, - clone: function clone(_ref3) { - var sortable = _ref3.sortable, rootEl = _ref3.rootEl, dispatchSortableEvent = _ref3.dispatchSortableEvent, cancel = _ref3.cancel; - if (!this.isMultiDrag) return; - if (!this.options.removeCloneOnHide) { - if ($64afbd09cd65a300$var$multiDragElements.length && $64afbd09cd65a300$var$multiDragSortable === sortable) { - $64afbd09cd65a300$var$insertMultiDragClones(true, rootEl); - dispatchSortableEvent("clone"); - cancel(); - } - } - }, - showClone: function showClone(_ref4) { - var cloneNowShown = _ref4.cloneNowShown, rootEl = _ref4.rootEl, cancel = _ref4.cancel; - if (!this.isMultiDrag) return; - $64afbd09cd65a300$var$insertMultiDragClones(false, rootEl); - $64afbd09cd65a300$var$multiDragClones.forEach(function(clone) { - $64afbd09cd65a300$var$css(clone, "display", ""); - }); - cloneNowShown(); - $64afbd09cd65a300$var$clonesHidden = false; - cancel(); - }, - hideClone: function hideClone(_ref5) { - var _this = this; - var sortable = _ref5.sortable, cloneNowHidden = _ref5.cloneNowHidden, cancel = _ref5.cancel; - if (!this.isMultiDrag) return; - $64afbd09cd65a300$var$multiDragClones.forEach(function(clone) { - $64afbd09cd65a300$var$css(clone, "display", "none"); - if (_this.options.removeCloneOnHide && clone.parentNode) clone.parentNode.removeChild(clone); - }); - cloneNowHidden(); - $64afbd09cd65a300$var$clonesHidden = true; - cancel(); - }, - dragStartGlobal: function dragStartGlobal(_ref6) { - var sortable = _ref6.sortable; - if (!this.isMultiDrag && $64afbd09cd65a300$var$multiDragSortable) $64afbd09cd65a300$var$multiDragSortable.multiDrag._deselectMultiDrag(); - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - multiDragElement.sortableIndex = $64afbd09cd65a300$var$index(multiDragElement); - }); // Sort multi-drag elements - $64afbd09cd65a300$var$multiDragElements = $64afbd09cd65a300$var$multiDragElements.sort(function(a, b) { - return a.sortableIndex - b.sortableIndex; - }); - $64afbd09cd65a300$var$dragStarted = true; - }, - dragStarted: function dragStarted(_ref7) { - var _this2 = this; - var sortable = _ref7.sortable; - if (!this.isMultiDrag) return; - if (this.options.sort) { - // Capture rects, - // hide multi drag elements (by positioning them absolute), - // set multi drag elements rects to dragRect, - // show multi drag elements, - // animate to rects, - // unset rects & remove from DOM - sortable.captureAnimationState(); - if (this.options.animation) { - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (multiDragElement === $64afbd09cd65a300$var$dragEl$1) return; - $64afbd09cd65a300$var$css(multiDragElement, "position", "absolute"); - }); - var dragRect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$dragEl$1, false, true, true); - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (multiDragElement === $64afbd09cd65a300$var$dragEl$1) return; - $64afbd09cd65a300$var$setRect(multiDragElement, dragRect); - }); - $64afbd09cd65a300$var$folding = true; - $64afbd09cd65a300$var$initialFolding = true; - } - } - sortable.animateAll(function() { - $64afbd09cd65a300$var$folding = false; - $64afbd09cd65a300$var$initialFolding = false; - if (_this2.options.animation) $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - $64afbd09cd65a300$var$unsetRect(multiDragElement); - }); - // Remove all auxiliary multidrag items from el, if sorting enabled - if (_this2.options.sort) $64afbd09cd65a300$var$removeMultiDragElements(); - }); - }, - dragOver: function dragOver(_ref8) { - var target = _ref8.target, completed = _ref8.completed, cancel = _ref8.cancel; - if ($64afbd09cd65a300$var$folding && ~$64afbd09cd65a300$var$multiDragElements.indexOf(target)) { - completed(false); - cancel(); - } - }, - revert: function revert(_ref9) { - var fromSortable = _ref9.fromSortable, rootEl = _ref9.rootEl, sortable = _ref9.sortable, dragRect = _ref9.dragRect; - if ($64afbd09cd65a300$var$multiDragElements.length > 1) { - // Setup unfold animation - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - sortable.addAnimationState({ - target: multiDragElement, - rect: $64afbd09cd65a300$var$folding ? $64afbd09cd65a300$var$getRect(multiDragElement) : dragRect - }); - $64afbd09cd65a300$var$unsetRect(multiDragElement); - multiDragElement.fromRect = dragRect; - fromSortable.removeAnimationState(multiDragElement); - }); - $64afbd09cd65a300$var$folding = false; - $64afbd09cd65a300$var$insertMultiDragElements(!this.options.removeCloneOnHide, rootEl); - } - }, - dragOverCompleted: function dragOverCompleted(_ref10) { - var sortable = _ref10.sortable, isOwner = _ref10.isOwner, insertion = _ref10.insertion, activeSortable = _ref10.activeSortable, parentEl = _ref10.parentEl, putSortable = _ref10.putSortable; - var options = this.options; - if (insertion) { - // Clones must be hidden before folding animation to capture dragRectAbsolute properly - if (isOwner) activeSortable._hideClone(); - $64afbd09cd65a300$var$initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location - if (options.animation && $64afbd09cd65a300$var$multiDragElements.length > 1 && ($64afbd09cd65a300$var$folding || !isOwner && !activeSortable.options.sort && !putSortable)) { - // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible - var dragRectAbsolute = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$dragEl$1, false, true, true); - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (multiDragElement === $64afbd09cd65a300$var$dragEl$1) return; - $64afbd09cd65a300$var$setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted - // while folding, and so that we can capture them again because old sortable will no longer be fromSortable - parentEl.appendChild(multiDragElement); - }); - $64afbd09cd65a300$var$folding = true; - } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out - if (!isOwner) { - // Only remove if not folding (folding will remove them anyways) - if (!$64afbd09cd65a300$var$folding) $64afbd09cd65a300$var$removeMultiDragElements(); - if ($64afbd09cd65a300$var$multiDragElements.length > 1) { - var clonesHiddenBefore = $64afbd09cd65a300$var$clonesHidden; - activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden - if (activeSortable.options.animation && !$64afbd09cd65a300$var$clonesHidden && clonesHiddenBefore) $64afbd09cd65a300$var$multiDragClones.forEach(function(clone) { - activeSortable.addAnimationState({ - target: clone, - rect: $64afbd09cd65a300$var$clonesFromRect - }); - clone.fromRect = $64afbd09cd65a300$var$clonesFromRect; - clone.thisAnimationDuration = null; - }); - } else activeSortable._showClone(sortable); - } - } - }, - dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) { - var dragRect = _ref11.dragRect, isOwner = _ref11.isOwner, activeSortable = _ref11.activeSortable; - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - multiDragElement.thisAnimationDuration = null; - }); - if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) { - $64afbd09cd65a300$var$clonesFromRect = $64afbd09cd65a300$var$_extends({}, dragRect); - var dragMatrix = $64afbd09cd65a300$var$matrix($64afbd09cd65a300$var$dragEl$1, true); - $64afbd09cd65a300$var$clonesFromRect.top -= dragMatrix.f; - $64afbd09cd65a300$var$clonesFromRect.left -= dragMatrix.e; - } - }, - dragOverAnimationComplete: function dragOverAnimationComplete() { - if ($64afbd09cd65a300$var$folding) { - $64afbd09cd65a300$var$folding = false; - $64afbd09cd65a300$var$removeMultiDragElements(); - } - }, - drop: function drop(_ref12) { - var evt = _ref12.originalEvent, rootEl = _ref12.rootEl, parentEl = _ref12.parentEl, sortable = _ref12.sortable, dispatchSortableEvent = _ref12.dispatchSortableEvent, oldIndex = _ref12.oldIndex, putSortable = _ref12.putSortable; - var toSortable = putSortable || this.sortable; - if (!evt) return; - var options = this.options, children = parentEl.children; // Multi-drag selection - if (!$64afbd09cd65a300$var$dragStarted) { - if (options.multiDragKey && !this.multiDragKeyDown) this._deselectMultiDrag(); - $64afbd09cd65a300$var$toggleClass($64afbd09cd65a300$var$dragEl$1, options.selectedClass, !~$64afbd09cd65a300$var$multiDragElements.indexOf($64afbd09cd65a300$var$dragEl$1)); - if (!~$64afbd09cd65a300$var$multiDragElements.indexOf($64afbd09cd65a300$var$dragEl$1)) { - $64afbd09cd65a300$var$multiDragElements.push($64afbd09cd65a300$var$dragEl$1); - $64afbd09cd65a300$var$dispatchEvent({ - sortable: sortable, - rootEl: rootEl, - name: "select", - targetEl: $64afbd09cd65a300$var$dragEl$1, - originalEvent: evt - }); // Modifier activated, select from last to dragEl - if (evt.shiftKey && $64afbd09cd65a300$var$lastMultiDragSelect && sortable.el.contains($64afbd09cd65a300$var$lastMultiDragSelect)) { - var lastIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$lastMultiDragSelect), currentIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl$1); - if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) { - // Must include lastMultiDragSelect (select it), in case modified selection from no selection - // (but previous selection existed) - var n, i; - if (currentIndex > lastIndex) { - i = lastIndex; - n = currentIndex; - } else { - i = currentIndex; - n = lastIndex + 1; - } - for(; i < n; i++){ - if (~$64afbd09cd65a300$var$multiDragElements.indexOf(children[i])) continue; - $64afbd09cd65a300$var$toggleClass(children[i], options.selectedClass, true); - $64afbd09cd65a300$var$multiDragElements.push(children[i]); - $64afbd09cd65a300$var$dispatchEvent({ - sortable: sortable, - rootEl: rootEl, - name: "select", - targetEl: children[i], - originalEvent: evt - }); - } - } - } else $64afbd09cd65a300$var$lastMultiDragSelect = $64afbd09cd65a300$var$dragEl$1; - $64afbd09cd65a300$var$multiDragSortable = toSortable; - } else { - $64afbd09cd65a300$var$multiDragElements.splice($64afbd09cd65a300$var$multiDragElements.indexOf($64afbd09cd65a300$var$dragEl$1), 1); - $64afbd09cd65a300$var$lastMultiDragSelect = null; - $64afbd09cd65a300$var$dispatchEvent({ - sortable: sortable, - rootEl: rootEl, - name: "deselect", - targetEl: $64afbd09cd65a300$var$dragEl$1, - originalEvent: evt - }); - } - } // Multi-drag drop - if ($64afbd09cd65a300$var$dragStarted && this.isMultiDrag) { - $64afbd09cd65a300$var$folding = false; // Do not "unfold" after around dragEl if reverted - if ((parentEl[$64afbd09cd65a300$var$expando].options.sort || parentEl !== rootEl) && $64afbd09cd65a300$var$multiDragElements.length > 1) { - var dragRect = $64afbd09cd65a300$var$getRect($64afbd09cd65a300$var$dragEl$1), multiDragIndex = $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl$1, ":not(." + this.options.selectedClass + ")"); - if (!$64afbd09cd65a300$var$initialFolding && options.animation) $64afbd09cd65a300$var$dragEl$1.thisAnimationDuration = null; - toSortable.captureAnimationState(); - if (!$64afbd09cd65a300$var$initialFolding) { - if (options.animation) { - $64afbd09cd65a300$var$dragEl$1.fromRect = dragRect; - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - multiDragElement.thisAnimationDuration = null; - if (multiDragElement !== $64afbd09cd65a300$var$dragEl$1) { - var rect = $64afbd09cd65a300$var$folding ? $64afbd09cd65a300$var$getRect(multiDragElement) : dragRect; - multiDragElement.fromRect = rect; // Prepare unfold animation - toSortable.addAnimationState({ - target: multiDragElement, - rect: rect - }); - } - }); - } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert - // properly they must all be removed - $64afbd09cd65a300$var$removeMultiDragElements(); - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (children[multiDragIndex]) parentEl.insertBefore(multiDragElement, children[multiDragIndex]); - else parentEl.appendChild(multiDragElement); - multiDragIndex++; - }); // If initial folding is done, the elements may have changed position because they are now - // unfolding around dragEl, even though dragEl may not have his index changed, so update event - // must be fired here as Sortable will not. - if (oldIndex === $64afbd09cd65a300$var$index($64afbd09cd65a300$var$dragEl$1)) { - var update = false; - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (multiDragElement.sortableIndex !== $64afbd09cd65a300$var$index(multiDragElement)) { - update = true; - return; - } - }); - if (update) dispatchSortableEvent("update"); - } - } // Must be done after capturing individual rects (scroll bar) - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - $64afbd09cd65a300$var$unsetRect(multiDragElement); - }); - toSortable.animateAll(); - } - $64afbd09cd65a300$var$multiDragSortable = toSortable; - } // Remove clones if necessary - if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== "clone") $64afbd09cd65a300$var$multiDragClones.forEach(function(clone) { - clone.parentNode && clone.parentNode.removeChild(clone); - }); - }, - nullingGlobal: function nullingGlobal() { - this.isMultiDrag = $64afbd09cd65a300$var$dragStarted = false; - $64afbd09cd65a300$var$multiDragClones.length = 0; - }, - destroyGlobal: function destroyGlobal() { - this._deselectMultiDrag(); - $64afbd09cd65a300$var$off(document, "pointerup", this._deselectMultiDrag); - $64afbd09cd65a300$var$off(document, "mouseup", this._deselectMultiDrag); - $64afbd09cd65a300$var$off(document, "touchend", this._deselectMultiDrag); - $64afbd09cd65a300$var$off(document, "keydown", this._checkKeyDown); - $64afbd09cd65a300$var$off(document, "keyup", this._checkKeyUp); - }, - _deselectMultiDrag: function _deselectMultiDrag(evt) { - if (typeof $64afbd09cd65a300$var$dragStarted !== "undefined" && $64afbd09cd65a300$var$dragStarted) return; // Only deselect if selection is in this sortable - if ($64afbd09cd65a300$var$multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable - if (evt && $64afbd09cd65a300$var$closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click - if (evt && evt.button !== 0) return; - while($64afbd09cd65a300$var$multiDragElements.length){ - var el = $64afbd09cd65a300$var$multiDragElements[0]; - $64afbd09cd65a300$var$toggleClass(el, this.options.selectedClass, false); - $64afbd09cd65a300$var$multiDragElements.shift(); - $64afbd09cd65a300$var$dispatchEvent({ - sortable: this.sortable, - rootEl: this.sortable.el, - name: "deselect", - targetEl: el, - originalEvent: evt - }); - } - }, - _checkKeyDown: function _checkKeyDown(evt) { - if (evt.key === this.options.multiDragKey) this.multiDragKeyDown = true; - }, - _checkKeyUp: function _checkKeyUp(evt) { - if (evt.key === this.options.multiDragKey) this.multiDragKeyDown = false; - } - }; - return $64afbd09cd65a300$var$_extends(MultiDrag, { - // Static methods & properties - pluginName: "multiDrag", - utils: { - /** - * Selects the provided multi-drag item - * @param {HTMLElement} el The element to be selected - */ select: function select(el) { - var sortable = el.parentNode[$64afbd09cd65a300$var$expando]; - if (!sortable || !sortable.options.multiDrag || ~$64afbd09cd65a300$var$multiDragElements.indexOf(el)) return; - if ($64afbd09cd65a300$var$multiDragSortable && $64afbd09cd65a300$var$multiDragSortable !== sortable) { - $64afbd09cd65a300$var$multiDragSortable.multiDrag._deselectMultiDrag(); - $64afbd09cd65a300$var$multiDragSortable = sortable; - } - $64afbd09cd65a300$var$toggleClass(el, sortable.options.selectedClass, true); - $64afbd09cd65a300$var$multiDragElements.push(el); - }, - /** - * Deselects the provided multi-drag item - * @param {HTMLElement} el The element to be deselected - */ deselect: function deselect(el) { - var sortable = el.parentNode[$64afbd09cd65a300$var$expando], index = $64afbd09cd65a300$var$multiDragElements.indexOf(el); - if (!sortable || !sortable.options.multiDrag || !~index) return; - $64afbd09cd65a300$var$toggleClass(el, sortable.options.selectedClass, false); - $64afbd09cd65a300$var$multiDragElements.splice(index, 1); - } - }, - eventProperties: function eventProperties() { - var _this3 = this; - var oldIndicies = [], newIndicies = []; - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - oldIndicies.push({ - multiDragElement: multiDragElement, - index: multiDragElement.sortableIndex - }); // multiDragElements will already be sorted if folding - var newIndex; - if ($64afbd09cd65a300$var$folding && multiDragElement !== $64afbd09cd65a300$var$dragEl$1) newIndex = -1; - else if ($64afbd09cd65a300$var$folding) newIndex = $64afbd09cd65a300$var$index(multiDragElement, ":not(." + _this3.options.selectedClass + ")"); - else newIndex = $64afbd09cd65a300$var$index(multiDragElement); - newIndicies.push({ - multiDragElement: multiDragElement, - index: newIndex - }); - }); - return { - items: $64afbd09cd65a300$var$_toConsumableArray($64afbd09cd65a300$var$multiDragElements), - clones: [].concat($64afbd09cd65a300$var$multiDragClones), - oldIndicies: oldIndicies, - newIndicies: newIndicies - }; - }, - optionListeners: { - multiDragKey: function multiDragKey(key) { - key = key.toLowerCase(); - if (key === "ctrl") key = "Control"; - else if (key.length > 1) key = key.charAt(0).toUpperCase() + key.substr(1); - return key; - } - } - }); -} -function $64afbd09cd65a300$var$insertMultiDragElements(clonesInserted, rootEl) { - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement, i) { - var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)]; - if (target) rootEl.insertBefore(multiDragElement, target); - else rootEl.appendChild(multiDragElement); - }); -} -/** - * Insert multi-drag clones - * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted - * @param {HTMLElement} rootEl - */ function $64afbd09cd65a300$var$insertMultiDragClones(elementsInserted, rootEl) { - $64afbd09cd65a300$var$multiDragClones.forEach(function(clone, i) { - var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)]; - if (target) rootEl.insertBefore(clone, target); - else rootEl.appendChild(clone); - }); -} -function $64afbd09cd65a300$var$removeMultiDragElements() { - $64afbd09cd65a300$var$multiDragElements.forEach(function(multiDragElement) { - if (multiDragElement === $64afbd09cd65a300$var$dragEl$1) return; - multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement); - }); -} -$64afbd09cd65a300$export$31b3ca70d8f57423.mount(new $64afbd09cd65a300$var$AutoScrollPlugin()); -$64afbd09cd65a300$export$31b3ca70d8f57423.mount($64afbd09cd65a300$var$Remove, $64afbd09cd65a300$var$Revert); -var $64afbd09cd65a300$export$2e2bcd8739ae039 = $64afbd09cd65a300$export$31b3ca70d8f57423; - - - - - - -const $832f4be7bc001332$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $832f4be7bc001332$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(upload, input, imageList, fileList){ - this.mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(null, null, document.getElementById("notify-progress")); - this.upload = upload; - this.input = input; - this.imageList = imageList; - this.fileList = fileList; - this.accetableFiles = [ - "image/jpeg", - "image/gif", - "image/png", - "image/svg", - "audio/mpeg", - "video/mp4", - "application/pdf", - "text/plain", - "text/rtf" - ]; - this.files = []; - this.sortedFiles = []; - this.storage = []; - this.mediaSort = (0, $64afbd09cd65a300$export$2e2bcd8739ae039).create(this.imageList, { - animation: 150, - onUpdate: ()=>{ - //notify.alert('REINDEXING MEDIA', null); - //this.updateFiles(); - } - }); - this.fileSort = (0, $64afbd09cd65a300$export$2e2bcd8739ae039).create(this.fileList, { - animation: 150, - onUpdate: ()=>{ - //notify.alert('REINDEXING FILES', null); - //this.updateFiles(); - } - }); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() { - this.upload.addEventListener("dragover", (e)=>this.handleFileActions(e), false); - this.upload.addEventListener("drop", (e)=>this.handleFileActions(e), false); - this.input.addEventListener("change", (e)=>this.handleFileActions(e), false); - var removeMedia = document.querySelectorAll(".media-remove"); - for(var i = 0, length = removeMedia.length; i < length; i++)removeMedia[i].addEventListener("click", (e)=>this.removeFile(e, "media"), false); - } - getFileOrder() { - let imgList = ""; - let fileList = ""; - for(var i = 0, length = this.imageList.childNodes.length; i < length; i++){ - let div = this.imageList.childNodes[i]; - imgList = imgList + div.getAttribute("data-source") + ","; - } - for(var i = 0, length = this.fileList.childNodes.length; i < length; i++){ - let div = this.fileList.childNodes[i]; - fileList = fileList + div.getAttribute("data-source") + ","; - } - let media = { - images: imgList, - files: fileList - }; - return media; - } - sortFiles(files) { - var self = this; - for(var i = 0, file; file = files[i]; i++){ - var reader = new FileReader(); - // Closure to capture the file information - reader.onload = ((theFile)=>{ - return function(f) { - //create remove button object - var remove = document.createElement("button"); - var removeIcon = document.createElement("i"); - removeIcon.classList.add("ti", "ti-x"); - remove.className = "media-remove"; - remove.appendChild(removeIcon); - //remove.setAttribute('id', mediaCount); - remove.addEventListener("click", (e)=>self.removeFile(e, "media"), false); - //upload the file - let upload = new FormData(); - upload.enctype = "multipart/form-data"; - upload.append("upload_files[]", theFile, theFile.name); - let item = null; - let progress = null; - // sort files - switch(theFile.type){ - case "image/jpg": - case "image/jpeg": - case "image/gif": - case "image/svg": - case "image/png": - item = self.itemFactory("img-item"); - progress = document.getElementById("pgs" + item.getAttribute("id")); - self.mm.filesUpload(theFile.type, upload, progress).then((result)=>{ - item.setAttribute("data-source", result.filePath); - item.style.background = "url(" + f.target.result + ") no-repeat center center / cover"; - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: progress, - width: 0, - easing: "easeInOutQuint", - duration: 1000, - complete: ()=>{ - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case "video/mp4": - item = self.itemFactory("video-item"); - progress = document.getElementById("pgs" + item.getAttribute("id")); - self.mm.filesUpload(theFile.type, upload, progress).then((result)=>{ - item.setAttribute("data-source", result.filePath); - let video = document.createElement("video"); - let source = document.createElement("source"); - source.src = f.target.result; - video.appendChild(source); - item.appendChild(video); - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: progress, - width: 0, - easing: "easeInOutQuint", - duration: 1000, - complete: ()=>{ - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case "audio/mpeg": - item = self.itemFactory("audio-item"); - progress = document.getElementById("pgs" + item.getAttribute("id")); - self.mm.filesUpload(theFile.type, upload, progress).then((result)=>{ - item.setAttribute("data-source", result.filePath); - let audio = document.createElement("audio"); - audio.setAttribute("controls", true); - let source = document.createElement("source"); - source.src = f.target.result; - audio.appendChild(source); - item.appendChild(audio); - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: progress, - width: 0, - easing: "easeInOutQuint", - duration: 1000, - complete: ()=>{ - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case "application/pdf": - case "text/plain": - case "text/rtf": - item = self.itemFactory("file-item"); - progress = document.getElementById("pgs" + item.getAttribute("id")); - self.mm.filesUpload(theFile.type, upload, progress).then((result)=>{ - item.setAttribute("data-source", result.filePath); - let link = document.createElement("a"); - link.href = result.filePath; - link.innerHTML = result.fileName; - item.appendChild(link); - (0, $8b9e2899b2e82f52$export$2e2bcd8739ae039)({ - targets: progress, - width: 0, - easing: "easeInOutQuint", - duration: 1000, - complete: ()=>{ - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - } - }; - })(file); - // Read in the image file as a data URL. - reader.readAsDataURL(file); - } - } - itemFactory(type = null) { - //get counts for lists - var mediaCount = this.imageList.childNodes.length; - var fileCount = this.fileList.childNodes.length; - if (mediaCount < 0) mediaCount = 0; - if (fileCount < 0) fileCount = 0; - var item = document.createElement("div"); - item.className = type; - var progress = document.createElement("div"); - progress.className = "item-progress"; - item.appendChild(progress); - if (type == "img-item" || type == "video-item") { - this.imageList.appendChild(item); - progress.setAttribute("id", "pgs" + mediaCount); - item.setAttribute("id", mediaCount); - } else { - this.fileList.appendChild(item); - progress.setAttribute("id", "pgs" + fileCount); - item.setAttribute("id", fileCount); - } - return item; - } - //-------------------------- - // event handlers - //-------------------------- - removeFile(e) { - var item = e.target.parentNode.parentNode; - switch(item.className){ - case "img-item": - case "video-item": - this.imageList.removeChild(item); - break; - case "audio-item": - case "file-item": - this.fileList.removeChild(item); - break; - } - $832f4be7bc001332$var$notify.alert("File Removed!", true); - } - handleFileActions(e) { - e.stopPropagation(); - e.preventDefault(); - let self = this; - let rawList = []; - let sortedList = []; - let notOnTheList = []; - switch(e.type){ - case "dragover": - e.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy. - break; - case "change": - case "drop": - e.type == "drop" ? rawList = e.dataTransfer.files : rawList = e.target.files; - for(var i = 0, f; f = rawList[i]; i++)// check witch files are cool to upload - if (this.accetableFiles.includes(f.type)) sortedList.push(f); - else notOnTheList.push(f); - //send for sorting - self.sortFiles(sortedList); - break; - } - } -} - - -const $371d2518d50c1748$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $371d2518d50c1748$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.processing = false; - let self = "this"; - this.admin = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(null, document.getElementById("notify-progress")); - this.mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(null, null); - this.urlPieces = document.URL.split("/"); - this.post = []; - this.postID = null; - this.postUUID = null; - this.postLayout = null; - this.fm = null; - if (document.querySelector('[role="file-manager"]').getAttribute("data-index")) { - this.postID = document.querySelector('[role="file-manager"]').getAttribute("data-index"); - this.postUUID = document.querySelector('[role="file-manager"]').getAttribute("data-uuid"); - this.postLayout = document.querySelector('[role="file-manager"]').getAttribute("data-layout"); - } - if (document.getElementById("edit")) { - this.editor = new (0, $e6c02983873e6cdf$export$2e2bcd8739ae039)(document.getElementById("edit"), document.querySelector('[role="file-manager"]').offsetHeight + document.querySelector('[role="page-meta"]').offsetHeight + document.querySelector('[role="text-editor"]').offsetHeight); - this.editor.addListener($0d6abf40542266b3$export$e0c06b1ddd9992cc, ()=>this.handleEditorOptions($0d6abf40542266b3$export$e0c06b1ddd9992cc), false); - this.editor.addListener($0d6abf40542266b3$export$80082ca64f03d0e9, ()=>this.handleEditorOptions($0d6abf40542266b3$export$80082ca64f03d0e9), false); - this.editor.addListener($0d6abf40542266b3$export$14580fc61246740, ()=>this.handleEditorOptions($0d6abf40542266b3$export$14580fc61246740), false); - this.editor.addListener($0d6abf40542266b3$export$1844db352cf5aef3, ()=>this.handleEditorOptions($0d6abf40542266b3$export$1844db352cf5aef3), false); - document.getElementById("post-image-upload").addEventListener("change", (e)=>{ - this.handleImageUpload(e.target.id, e.target.files); - }, false); - /* - TinyDatePicker(document.getElementById('post-date'), { - mode: 'dp-below', - format() { - //return self.dateUtils.getDate('origin', date); - } - }); - */ this.start(); - } - } - //-------------------------- - // methods - //-------------------------- - start() { - if (document.querySelector('[role="file-drop"]')) { - //insert fileManager here - this.fm = new (0, $832f4be7bc001332$export$2e2bcd8739ae039)(document.querySelector('[role="file-drop"]'), document.getElementById("page-files-upload"), document.querySelector('[role="page-images-list"]'), document.querySelector('[role="page-files-list"]')); - var optionButtons = document.querySelectorAll(".post-option-btn"); - for(var i = 0, length = optionButtons.length; i < length; i++)optionButtons[i].addEventListener("click", (e)=>this.handlePostOptions(e), false); - } - } - //-------------------------- - // event handlers - //-------------------------- - handlePostOptions(e) { - let currentOption = null; - switch(e.target.id){ - case "option-page-icon": - case "option-menu-pin": - currentOption = document.getElementById("option-menu-pin"); - break; - case "option-feature-icon": - case "option-feature": - currentOption = document.getElementById("option-feature"); - break; - case "option-published-icon": - case "option-published": - currentOption = document.getElementById("option-published"); - break; - } - if (currentOption != null) { - let active = currentOption.getAttribute("data-active"); - active == "false" ? currentOption.setAttribute("data-active", "true") : currentOption.setAttribute("data-active", "false"); - } - } - handleEditorOptions(e) { - if (this.processing) return; - let self = this; - switch(e){ - case $0d6abf40542266b3$export$1844db352cf5aef3: - case $0d6abf40542266b3$export$14580fc61246740: - var task = ""; - e === $0d6abf40542266b3$export$1844db352cf5aef3 ? task = (0, $cbea55afea03b976$export$f06e28eb004ce525) : task = (0, $cbea55afea03b976$export$a01fefcc831953fa); - new (0, $de01a7e5b1773530$export$2e2bcd8739ae039)().collectInfo(this.fm.getFileOrder()).then((page)=>{ - self.processing = true; - $371d2518d50c1748$var$notify.alert("Writing down changes", null); - self.admin.pageActions(task, page).then((r)=>{ - self.processing = false; - if (r.type === $995f55a4eccd256d$export$a9707c9559ca4612 || r.type === $995f55a4eccd256d$export$8829e15ac416fcee) $371d2518d50c1748$var$notify.alert(r.message, false); - else if (r.type === $995f55a4eccd256d$export$f88aea22a746eab) $371d2518d50c1748$var$notify.alert(r.message, true); - else { - $371d2518d50c1748$var$notify.alert(r.message, true); - window.location = "/dashboard/page/edit/" + r.id; - } - }).catch((err)=>{ - self.processing = false; - $371d2518d50c1748$var$notify.alert(err, false); - }); - }); - break; - case $0d6abf40542266b3$export$e0c06b1ddd9992cc: - if (this.postLayout === "index") { - $371d2518d50c1748$var$notify.alert("Index cannot be deleted", false); - return; - } - if (confirm("AYE! You know you're deleting this post, right?")) new (0, $de01a7e5b1773530$export$2e2bcd8739ae039)().collectInfo(this.fm.getFileOrder()).then((page)=>{ - self.processing = true; - this.admin.pageActions((0, $cbea55afea03b976$export$f9aea0c55bfa15c9), page).then(()=>{ - self.processing = false; - window.location = "/dashboard/pages"; - }).catch((err)=>{ - self.processing = false; - $371d2518d50c1748$var$notify.alert(err, false); - }); - }).catch(()=>{}); - break; - case $0d6abf40542266b3$export$80082ca64f03d0e9: - document.getElementById("post-image-upload").click(); - break; - } - } - handleImageUpload(type, files) { - let self = this; - $371d2518d50c1748$var$notify.alert("Uploading Image", null); - let upload = new FormData(); - upload.enctype = "multipart/form-data"; - upload.append("upload_files[]", files[0], files[0].name); - this.mm.filesUpload(files[0].type, upload).then((result)=>{ - if (result.message == "File Uploaded. Great!") { - self.editor.notify($0d6abf40542266b3$export$80082ca64f03d0e9, result.filePath); - $371d2518d50c1748$var$notify.alert("Image Added to Entry", true); - } else $371d2518d50c1748$var$notify.alert("Uh oh. Image not added", false); - }).catch(()=>{ - $371d2518d50c1748$var$notify.alert("Uh oh. Image not added", false); - }); - } -} - - -class $00028bbb7da2e80b$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(page){ - this.currentPage = null; - this.choosePage(page); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() {} - choosePage(page) { - this.currentPage = ""; - switch(page){ - case "edit": - case "add": - this.currentPage = new (0, $371d2518d50c1748$export$2e2bcd8739ae039)(); - break; - default: - break; - } - } -} - - -class $8a9e11caee7219b1$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - getInfo() { - let handle = document.getElementById("settings-handle").value; - let email = document.getElementById("settings-email").value; - let url = document.getElementById("settings-url").value; - let title = document.getElementById("settings-title").value; - let desc = document.getElementById("settings-desc").value; - //let privacy = document.getElementById('privacy-toggle').getAttribute('data-private'); - let render = document.getElementById("render-toggle").getAttribute("data-render"); - let background = document.querySelector('[role="background"]').style.backgroundImage.slice(4, -1).replace(/"/g, ""); - let selected = ""; - let selects = document.querySelectorAll(".theme-select"); - let smtpDomain = document.getElementById("smtp-domain").value; - let smtpEmail = document.getElementById("smtp-email").value; - let smtpPass = document.getElementById("smtp-pass").value; - let mgDomain = document.getElementById("mg-domain").value; - let mgKey = document.getElementById("mg-key").value; - let mailActive = ""; - let mailOptions = document.querySelectorAll(".mail-option"); - let apiStatus = document.getElementById("api-access-toggle").getAttribute("data-enabled"); - let dynamicRenderStatus = document.getElementById("dynamic-render-toggle").getAttribute("data-enabled"); - var i, count; - for(i = 0, count = selects.length; i < count; i++)if (selects[i].getAttribute("data-enabled") == "true") selected = selects[i].id; - for(i = 0, count = mailOptions.length; i < count; i++)if (mailOptions[i].getAttribute("data-enabled") == "true") mailActive = mailOptions[i].id; - let settingsData = { - global: { - base_url: url, - title: title, - descriptions: desc, - background: background, - private: false, - renderOnSave: render, - theme: selected, - externalAPI: apiStatus, - dynamicRender: dynamicRenderStatus - }, - member: { - handle: handle, - email: email - }, - email: { - active: mailActive, - smtp: { - domain: smtpDomain, - email: smtpEmail, - password: smtpPass - }, - mailgun: { - domain: mgDomain, - key: mgKey - } - } - }; - return new Promise(function(resolve) { - resolve(settingsData); - }); - } -} - - - - - - - -const $18b11b34820682a5$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $18b11b34820682a5$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - sendMail() { - let mailData = { - content: "This is a test email" - }; - let admin = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(); - admin.sendMail(mailData).then((result)=>{ - $18b11b34820682a5$var$notify.alert(result.message, true); - }).catch((err)=>{ - $18b11b34820682a5$var$notify.alert(err.message, false); - }); - } - testMail() { - let mailData = { - content: "This is a test email", - mail_task: "TESTING" - }; - let admin = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(); - admin.sendMail(mailData).then((result)=>{ - $18b11b34820682a5$var$notify.alert(result.message, true); - }).catch((err)=>{ - $18b11b34820682a5$var$notify.alert(err.message, false); - }); - } -} - - - -const $b33d1a942dce8554$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $b33d1a942dce8554$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.processing = false; - this.start(); - this.admin = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(null); - this.mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(null, null); - } - //-------------------------- - // methods - //-------------------------- - start() { - let self = this; - //handle save button - document.getElementById("save-toggle").addEventListener("click", ()=>new (0, $8a9e11caee7219b1$export$2e2bcd8739ae039)().getInfo().then((data)=>{ - $b33d1a942dce8554$var$notify.alert("Saving Settings", null); - self.admin.sync((0, $cbea55afea03b976$export$ff4a0df6152bf850), data).then((r)=>{ - if (r.type == $995f55a4eccd256d$export$5dd76fd38bbe7841) $b33d1a942dce8554$var$notify.alert(r.message, true); - else $b33d1a942dce8554$var$notify.alert(r.message, true); - }); - }).catch(()=>{ - //console.log(err); - })); - //handle set up image uploads - document.querySelector(".avatar").addEventListener("click", ()=>{ - document.getElementById("avatar-upload").click(); - }); - document.querySelector(".background").addEventListener("click", ()=>{ - document.getElementById("background-upload").click(); - }); - document.getElementById("avatar-upload").addEventListener("change", (e)=>{ - self.handleImageUpload(e.target.id, e.target.files); - }, false); - document.getElementById("background-upload").addEventListener("change", (e)=>{ - self.handleImageUpload(e.target.id, e.target.files); - }, false); - //handle api access toggle - var apiButton = document.getElementById("api-access-toggle"); - var apiStatus = document.getElementById("api-status"); - apiButton.addEventListener("click", (e)=>{ - e.stopPropagation(); - e.preventDefault(); - if (apiButton.getAttribute("data-enabled") == "false") { - apiButton.setAttribute("data-enabled", "true"); - apiStatus.innerHTML = "API ACCESS IS ENABLED"; - } else { - apiButton.setAttribute("data-enabled", "false"); - apiStatus.innerHTML = "API ACCESS IS DISABLED"; - } - }); - //handle dynamic page rendering - var dynamicRenderButton = document.getElementById("dynamic-render-toggle"); - var dynamicRenderStatus = document.getElementById("dynamic-render-status"); - dynamicRenderButton.addEventListener("click", (e)=>{ - e.stopPropagation(); - e.preventDefault(); - if (dynamicRenderButton.getAttribute("data-enabled") == "false") { - dynamicRenderButton.setAttribute("data-enabled", "true"); - dynamicRenderStatus.innerHTML = "DYNAMIC PAGE RENDERING"; - } else { - dynamicRenderButton.setAttribute("data-enabled", "false"); - dynamicRenderStatus.innerHTML = "STATIC PAGE RENDERING"; - } - }); - document.getElementById("send-mail").addEventListener("click", (e)=>this.handleMailer(e)); - document.getElementById("publish-pages").addEventListener("click", (e)=>this.handlePublished(e)); - //handle page render on save toggle - document.getElementById("render-toggle").addEventListener("click", (e)=>this.toggleRender(e)); - //handle theme toggle - let themeBtns = document.querySelectorAll(".theme-select"); - for(var i = 0, length = themeBtns.length; i < length; i++)themeBtns[i].addEventListener("click", (e)=>this.handleThemes(e)); - //handle mail options - let mailBtn = document.querySelectorAll(".mail-option"); - for(i = 0, length = mailBtn.length; i < length; i++)mailBtn[i].addEventListener("click", (e)=>this.handleMailOptions(e)); - //handle backup from settings [disabled] - document.getElementById("create-backup").addEventListener("click", (e)=>this.handleBackup(e)); - /* - document - .getElementById("reindex-pages") - .addEventListener("click", (e) => this.handleReindex(e)); - */ } - //-------------------------- - // event handlers - //-------------------------- - togglePrivacy(e) { - e.stopPropagation(); - e.preventDefault(); - if (e.target.getAttribute("data-private") == "false") { - e.target.setAttribute("data-private", "true"); - e.target.innerHTML = "SITE IS PUBLIC"; - } else { - e.target.setAttribute("data-private", "false"); - e.target.innerHTML = "SITE IS PRIVATE"; - } - } - toggleRender(e) { - e.stopPropagation(); - e.preventDefault(); - let button = document.getElementById("render-toggle"); - if (button.getAttribute("data-render") == "false") button.setAttribute("data-render", "true"); - else button.setAttribute("data-render", "false"); - } - handleMailer() { - let mailer = new (0, $18b11b34820682a5$export$2e2bcd8739ae039)(); - mailer.testMail(); - //mailer.sendMail(); - } - handleThemes(e) { - e.stopPropagation(); - e.preventDefault(); - let themes = document.querySelectorAll(".theme-select"); - for(var i = 0, length = themes.length; i < length; i++)e.target.id == themes[i].id ? themes[i].setAttribute("data-enabled", "true") : themes[i].setAttribute("data-enabled", "false"); - } - handleMailOptions(e) { - e.preventDefault(); - e.stopPropagation(); - let smtp = document.getElementById("mail-smtp"); - let mailgun = document.getElementById("mail-mg"); - let mail = document.querySelectorAll(".mail-option"); - for(var i = 0, length = mail.length; i < length; i++)if (e.target.id == mail[i].id) { - mail[i].setAttribute("data-enabled", "true"); - if (e.target.id == "option-smtp") { - smtp.setAttribute("data-enabled", "true"); - mailgun.setAttribute("data-enabled", "false"); - } else if (e.target.id == "option-none") { - smtp.setAttribute("data-enabled", "false"); - mailgun.setAttribute("data-enabled", "false"); - } else { - smtp.setAttribute("data-enabled", "false"); - mailgun.setAttribute("data-enabled", "true"); - } - } else mail[i].setAttribute("data-enabled", "false"); - } - handleImageUpload(type, files) { - $b33d1a942dce8554$var$notify.alert("Uploading Image... ", null); - let self = this; - $b33d1a942dce8554$var$notify.alert("Uploading Image", null); - let upload = new FormData(); - upload.enctype = "multipart/form-data"; - upload.append("source", type); - upload.append("upload_files[]", files[0], files[0].name); - this.mm.filesUpload(files[0].type, upload).then((r)=>{ - if (type == "avatar-upload") { - $b33d1a942dce8554$var$notify.alert(r.message, true); - document.querySelector('[role="avatar"]').style.background = "url(" + r.filePath + ") no-repeat center center / cover"; - } else { - $b33d1a942dce8554$var$notify.alert(r.message, true); - document.querySelector('[role="background"]').style.background = "url(" + r.filePath + ") no-repeat center center / cover"; - } - }).catch(()=>{ - //console.log(err) - }); - } - handlePublished(e) { - if (this.processing) return; - e.preventDefault(); - e.stopPropagation(); - let self = this; - let task = { - task: "PUBLISH_ALL" - }; - this.processing = true; - $b33d1a942dce8554$var$notify.alert("Publishing site...", null); - this.admin.publish(task).then((r)=>{ - self.processing = false; - $b33d1a942dce8554$var$notify.alert(r.message, true); - }).catch((err)=>{ - self.processing = false; - $b33d1a942dce8554$var$notify.alert(err, false); - }); - } - handleBackup(e) { - e.preventDefault(); - e.stopPropagation(); - $b33d1a942dce8554$var$notify.alert("Creating backup", null); - this.mm.backup().then((r)=>{ - $b33d1a942dce8554$var$notify.alert(r.message, true); - }).catch((err)=>{ - $b33d1a942dce8554$var$notify.alert(err, false); - }); - } - handleReindex(e) { - if (this.processing) return; - let self = this; - e.preventDefault(); - e.stopPropagation(); - let task = { - task: "cleanup pages indexes" - }; - this.processing = true; - $b33d1a942dce8554$var$notify.alert("Cleaning up page indexes", null); - this.admin.handleReindex(task).then((r)=>{ - self.processing = false; - $b33d1a942dce8554$var$notify.alert(r.message, true); - }).catch((err)=>{ - self.processing = false; - $b33d1a942dce8554$var$notify.alert(err, false); - }); - } -} - - - -class $24d614592ba94b67$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - syncMenu() { - let navData = []; - let items = document.getElementById("nav-items").children; - for(let index = 0; index < items.length; index++)navData.push({ - title: items[index].getElementsByTagName("label")[0].innerHTML, - id: items[index].id, - slug: items[index].getAttribute("data-slug"), - uuid: items[index].getAttribute("data-uuid"), - path: items[index].getAttribute("data-path") - }); - let data = { - menu: navData, - remove: null - }; - return new Promise(function(resolve) { - resolve(data); - }); - } - removeItem(id) { - document.getElementById("nav-items").removeChild(document.getElementById(id)); - } -} - - - - - -const $18c0afb4f3b7cd5c$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $18c0afb4f3b7cd5c$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.processing = false; - this.admin = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(null); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() { - //grabs elements and makes them sortables - let self = this; - (0, $64afbd09cd65a300$export$2e2bcd8739ae039).create(document.getElementById("nav-items"), { - onUpdate: ()=>{ - new (0, $24d614592ba94b67$export$2e2bcd8739ae039)().syncMenu().then((data)=>{ - $18c0afb4f3b7cd5c$var$notify.alert("Updating Menu", null); - self.admin.sync((0, $cbea55afea03b976$export$67799ce3e3352ee1), data).then((r)=>{ - if (r.type == $995f55a4eccd256d$export$d4fd546d3456ff85) $18c0afb4f3b7cd5c$var$notify.alert(r.message, true); - else $18c0afb4f3b7cd5c$var$notify.alert(r.message, true); - }); - }); - } - }); - var nav = document.querySelectorAll(".nav-btn"); - for(var i = 0, length = nav.length; i < length; i++)nav[i].addEventListener("click", (e)=>this.handleNavButton(e), false); - } - //-------------------------- - // event handlers - //-------------------------- - handleNavButton(e) { - if (this.processing) return; - let id = ""; - let self = this; - switch(e.target.id){ - case "remove-item": - id = e.target.getAttribute("data-id"); - new (0, $24d614592ba94b67$export$2e2bcd8739ae039)().removeItem(id); - new (0, $24d614592ba94b67$export$2e2bcd8739ae039)().syncMenu().then((data)=>{ - data.remove = e.target.getAttribute("data-uuid"); - $18c0afb4f3b7cd5c$var$notify.alert("Editing Menu", null); - self.processing = true; - self.admin.sync((0, $cbea55afea03b976$export$67799ce3e3352ee1), data).then((r)=>{ - self.processing = false; - if (r.type == $995f55a4eccd256d$export$d4fd546d3456ff85) $18c0afb4f3b7cd5c$var$notify.alert(r.message, true); - else $18c0afb4f3b7cd5c$var$notify.alert(r.message, true); - }); - }); - break; - case "edit-item": - self.processing = false; - window.location = "/dashboard/page/edit/" + e.target.getAttribute("data-id"); - break; - } - } -} - - -class $f32c20539eb29606$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.mobile = false; - this.mobileMenu = document.querySelector(".mobile-menu"); - document.querySelector(".menu-toggle").addEventListener("click", (e)=>this.handleMobile(e)); - } - //-------------------------- - // methods - //-------------------------- - start() {} - //-------------------------- - // event handlers - //-------------------------- - handleMobile(e) { - if (this.mobile) { - this.mobile = false; - this.mobileMenu.style.display = "none"; - } else { - this.mobile = true; - this.mobileMenu.style.display = "inline"; - } - } -} - - -class $129a4dc28afb9101$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.currentDisplay = ""; - this.urlPieces = document.URL.split("/"); - this.chooseDisplay(this.urlPieces[4], this.urlPieces[5]); - //start main menu handler - new (0, $f32c20539eb29606$export$2e2bcd8739ae039)(); - } - //-------------------------- - // methods - //-------------------------- - start() {} - chooseDisplay(section, page) { - this.currentDisplay = ""; - switch(section){ - case "page": - this.currentDisplay = new (0, $00028bbb7da2e80b$export$2e2bcd8739ae039)(page); - break; - case "settings": - this.currentDisplay = new (0, $b33d1a942dce8554$export$2e2bcd8739ae039)(); - break; - case "navigation": - this.currentDisplay = new (0, $18c0afb4f3b7cd5c$export$2e2bcd8739ae039)(); - break; - default: - break; - } - this.start(); - } -} - - - -const $5ec7c34d3cbf8bc6$var$data = new (0, $f177b50aa405d296$export$2e2bcd8739ae039)(); -const $5ec7c34d3cbf8bc6$var$notify = new (0, $accfb6154319a04b$export$2e2bcd8739ae039)(); -class $5ec7c34d3cbf8bc6$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.processing = false; - this.start(); - } - //-------------------------- - // methods - //-------------------------- - //TODO: Move init functions and set up to their own class - start() { - if (document.getElementById("login") || document.querySelector('[role="site-restore"]')) { - var options = document.getElementsByClassName("init-option"); - for(let index = 0; index < options.length; index++)options[index].addEventListener("click", (e)=>this.handleOptions(e)); - if (document.getElementById("login")) document.getElementById("login-btn").addEventListener("click", (e)=>this.handleLogin(e)); - else { - document.getElementById("init-blog").addEventListener("click", (e)=>this.handleSetup(e)); - document.getElementById("blog-restore").addEventListener("click", (e)=>this.handleRestore(e)); - } - } else if (document.getElementById("dash-reset")) { - document.getElementById("get-secret-btn").addEventListener("click", (e)=>this.handleReset(e)); - document.getElementById("reset-btn").addEventListener("click", (e)=>this.handleReset(e)); - } else new (0, $129a4dc28afb9101$export$2e2bcd8739ae039)(); - } - //-------------------------- - // event handlers - //-------------------------- - handleLogin(e) { - if (this.processing) return; - let self = this; - e.preventDefault(); - let authForm = $5ec7c34d3cbf8bc6$var$data.formDataToJSON(document.getElementById("login")); - //notify.alert('Looking, hold up', null); - let api = new (0, $cbea55afea03b976$export$2e2bcd8739ae039)(); - this.processing = true; - api.login(authForm).then((response)=>{ - self.processing = false; - if (response.type === $995f55a4eccd256d$export$f99ec790401d28da) e.target.innerHTML = response.message; - else { - e.target.innerHTML = response.message; - setTimeout(()=>{ - window.location = "/dashboard"; - }, 500); - } - }).catch((err)=>{ - self.processing = false; - }); - } - handleSetup(e) { - if (this.processing) return; - let self = this; - e.stopPropagation(); - e.preventDefault(); - let setUpForm = $5ec7c34d3cbf8bc6$var$data.formDataToJSON(document.getElementById("init-form")); - let mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(); - this.processing = true; - mm.create(setUpForm).then((response)=>{ - if (response.type === $995f55a4eccd256d$export$74a5c30fa9753d80) { - self.processing = false; - e.target.innerHTML = response.message; - } else { - self.processing = false; - e.target.innerHTML = response.message; - setTimeout(()=>{ - window.location = "/dashboard"; - }, 700); - } - }).catch((err)=>{ - self.processing = false; - //notify.alert(err, false); - }); - } - handleRestore(e) { - if (this.processing) return; - let self = this; - e.stopPropagation(); - e.preventDefault(); - let mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(); - var form = document.getElementById("init-restore"); - this.processing = true; - mm.restore(form).then((response)=>{ - if (response.type === $995f55a4eccd256d$export$f99ec790401d28da) { - self.processing = false; - e.target.innerHTML = response.message; - } else { - self.processing = false; - e.target.innerHTML = response.message; - setTimeout(()=>{ - window.location = "/dashboard"; - }, 1500); - } - }).catch((err)=>{ - self.processing = false; - e.target.innerHTML = err; - }); - } - handleReset(e) { - e.stopPropagation(); - e.preventDefault(); - let self = this; - let mm = new (0, $7e781a188206b2b3$export$2e2bcd8739ae039)(); - if (e.target.id == "get-secret-btn") { - let data = { - email: document.getElementById("email").value, - task: "retrieveSecret" - }; - this.processing = true; - mm.secret(data).then((response)=>{ - self.processing = false; - if (response.secret) { - document.getElementById("secret").value = response.secret; - $5ec7c34d3cbf8bc6$var$notify.alert(response.message, true); - } else if (response.type == "mailSent") $5ec7c34d3cbf8bc6$var$notify.alert(response.message, true); - else $5ec7c34d3cbf8bc6$var$notify.alert(response.message, false); - }).catch((err)=>{ - self.processing = false; - $5ec7c34d3cbf8bc6$var$notify.alert(err, false); - }); - } else { - let data = { - newPass: document.getElementById("new_password").value, - newPassConfirm: document.getElementById("new_password2").value, - secret: document.getElementById("secret").value - }; - mm.newPass(data).then((response)=>{ - self.processing = false; - if (response.type == "passNotCreated") $5ec7c34d3cbf8bc6$var$notify.alert(response.message, false); - else { - $5ec7c34d3cbf8bc6$var$notify.alert(response.message, true); - setTimeout(()=>{ - window.location = "/dashboard"; - }, 1000); - } - }).catch((err)=>{ - self.processing = false; - $5ec7c34d3cbf8bc6$var$notify.alert(err, false); - }); - } - } - handleOptions(e) { - e.stopPropagation(); - e.preventDefault(); - let init = document.querySelector('[role="restore-fresh"]'); - let restore = document.querySelector('[role="restore-backup"]'); - if (e.target.id === "init-switch-restore") { - init.style.display = "none"; - init.style.visibility = "hidden"; - restore.style.display = "grid"; - restore.style.visibility = "visible"; - } else { - init.style.display = "grid"; - init.style.visibility = "visible"; - restore.style.display = "none"; - restore.style.visibility = "hidden"; - } - } -} - - -document.addEventListener("DOMContentLoaded", function() { - new (0, $5ec7c34d3cbf8bc6$export$2e2bcd8739ae039)(); -}, false); - - -//# sourceMappingURL=dash.js.map diff --git a/public/assets/scripts/dash.js.map b/public/assets/scripts/dash.js.map deleted file mode 100644 index d625f32..0000000 --- a/public/assets/scripts/dash.js.map +++ /dev/null @@ -1 +0,0 @@ -{"mappings":"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","sources":["src/com/Start.js","src/com/Base.js","src/libraries/FipamoAdminAPI.js","src/com/controllers/MaintenanceManager.js","src/com/utils/DataUtils.js","src/com/events/DataEvent.js","src/com/controllers/DashManager.js","src/com/controllers/PostIndex.js","src/com/controllers/PageEditor.js","src/com/actions/PageActions.js","src/com/utils/StringUtils.js","src/com/events/EditorEvent.js","src/com/ui/TextEditor.js","src/com/events/EventEmitter.js","node_modules/prismjs/components/prism-core.js","node_modules/prismjs/components/prism-markup.js","node_modules/prismjs/components/prism-markdown.js","src/com/ui/Notifications.js","node_modules/animejs/lib/anime.es.js","src/com/ui/FileManager.js","node_modules/sortablejs/modular/sortable.esm.js","src/com/controllers/SettingsIndex.js","src/com/actions/SettingsActions.js","src/com/actions/Mailer.js","src/com/controllers/NavIndex.js","src/com/actions/NavActions.js","src/com/ui/Menu.js"],"sourcesContent":["import Base from './Base';\n\ndocument.addEventListener(\n\t'DOMContentLoaded',\n\tfunction () {\n\t\tnew Base();\n\t},\n\tfalse\n);\n","import FipamoAdminAPI from '../libraries/FipamoAdminAPI';\nimport Maintenance from './controllers/MaintenanceManager';\nimport DataUitls from './utils/DataUtils';\nimport * as DataEvent from './events/DataEvent';\nimport DashManager from './controllers/DashManager';\nimport Notfications from './ui/Notifications';\nconst data = new DataUitls();\nconst notify = new Notfications();\n\nexport default class Base {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.processing = false;\n\t\tthis.start();\n\t}\n\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\n\t//TODO: Move init functions and set up to their own class\n\tstart() {\n\t\tif (\n\t\t\tdocument.getElementById('login') ||\n\t\t\tdocument.querySelector('[role=\"site-restore\"]')\n\t\t) {\n\t\t\tvar options = document.getElementsByClassName('init-option');\n\t\t\tfor (let index = 0; index < options.length; index++) {\n\t\t\t\toptions[index].addEventListener('click', e => this.handleOptions(e));\n\t\t\t}\n\t\t\tif (document.getElementById('login')) {\n\t\t\t\tdocument\n\t\t\t\t\t.getElementById('login-btn')\n\t\t\t\t\t.addEventListener('click', e => this.handleLogin(e));\n\t\t\t} else {\n\t\t\t\tdocument\n\t\t\t\t\t.getElementById('init-blog')\n\t\t\t\t\t.addEventListener('click', e => this.handleSetup(e));\n\t\t\t\tdocument\n\t\t\t\t\t.getElementById('blog-restore')\n\t\t\t\t\t.addEventListener('click', e => this.handleRestore(e));\n\t\t\t}\n\t\t} else if (document.getElementById('dash-reset')) {\n\t\t\tdocument\n\t\t\t\t.getElementById('get-secret-btn')\n\t\t\t\t.addEventListener('click', e => this.handleReset(e));\n\n\t\t\tdocument\n\t\t\t\t.getElementById('reset-btn')\n\t\t\t\t.addEventListener('click', e => this.handleReset(e));\n\t\t} else {\n\t\t\tnew DashManager();\n\t\t}\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleLogin(e) {\n\t\tif (this.processing) return;\n\t\tlet self = this;\n\t\te.preventDefault();\n\t\tlet authForm = data.formDataToJSON(document.getElementById('login'));\n\t\t//notify.alert('Looking, hold up', null);\n\t\tlet api = new FipamoAdminAPI();\n\t\tthis.processing = true;\n\t\tapi.login(authForm)\n\t\t\t.then(response => {\n\t\t\t\tself.processing = false;\n\t\t\t\tif (response.type === DataEvent.REQUEST_LAME) {\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t} else {\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.location = '/dashboard';\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tself.processing = false;\n\t\t\t});\n\t}\n\n\thandleSetup(e) {\n\t\tif (this.processing) return;\n\t\tlet self = this;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet setUpForm = data.formDataToJSON(document.getElementById('init-form'));\n\t\tlet mm = new Maintenance();\n\t\tthis.processing = true;\n\t\tmm.create(setUpForm)\n\t\t\t.then(response => {\n\t\t\t\tif (response.type === DataEvent.API_INIT_LAME) {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t} else {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.location = '/dashboard';\n\t\t\t\t\t}, 700);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tself.processing = false;\n\t\t\t\t//notify.alert(err, false);\n\t\t\t});\n\t}\n\n\thandleRestore(e) {\n\t\tif (this.processing) return;\n\t\tlet self = this;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet mm = new Maintenance();\n\t\tvar form = document.getElementById('init-restore');\n\t\tthis.processing = true;\n\t\tmm.restore(form)\n\t\t\t.then(response => {\n\t\t\t\tif (response.type === DataEvent.REQUEST_LAME) {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t} else {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\te.target.innerHTML = response.message;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.location = '/dashboard';\n\t\t\t\t\t}, 1500);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tself.processing = false;\n\t\t\t\te.target.innerHTML = err;\n\t\t\t});\n\t}\n\n\thandleReset(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet self = this;\n\t\tlet mm = new Maintenance();\n\t\tif (e.target.id == 'get-secret-btn') {\n\t\t\tlet data = {\n\t\t\t\temail: document.getElementById('email').value,\n\t\t\t\ttask: 'retrieveSecret'\n\t\t\t};\n\t\t\tthis.processing = true;\n\t\t\tmm.secret(data)\n\t\t\t\t.then(response => {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\tif (response.secret) {\n\t\t\t\t\t\tdocument.getElementById('secret').value = response.secret;\n\t\t\t\t\t\tnotify.alert(response.message, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.type == 'mailSent') {\n\t\t\t\t\t\t\tnotify.alert(response.message, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify.alert(response.message, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\tnotify.alert(err, false);\n\t\t\t\t});\n\t\t} else {\n\t\t\tlet data = {\n\t\t\t\tnewPass: document.getElementById('new_password').value,\n\t\t\t\tnewPassConfirm: document.getElementById('new_password2').value,\n\t\t\t\tsecret: document.getElementById('secret').value\n\t\t\t};\n\t\t\tmm.newPass(data)\n\t\t\t\t.then(response => {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\tif (response.type == 'passNotCreated') {\n\t\t\t\t\t\tnotify.alert(response.message, false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify.alert(response.message, true);\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\twindow.location = '/dashboard';\n\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tself.processing = false;\n\t\t\t\t\tnotify.alert(err, false);\n\t\t\t\t});\n\t\t}\n\t}\n\thandleOptions(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet init = document.querySelector('[role=\"restore-fresh\"]');\n\t\tlet restore = document.querySelector('[role=\"restore-backup\"]');\n\t\tif (e.target.id === 'init-switch-restore') {\n\t\t\tinit.style.display = 'none';\n\t\t\tinit.style.visibility = 'hidden';\n\n\t\t\trestore.style.display = 'grid';\n\t\t\trestore.style.visibility = 'visible';\n\t\t} else {\n\t\t\tinit.style.display = 'grid';\n\t\t\tinit.style.visibility = 'visible';\n\n\t\t\trestore.style.display = 'none';\n\t\t\trestore.style.visibility = 'hidden';\n\t\t}\n\t}\n}\n","//** REQUEST TYPES **//\nexport const REQUEST_TYPE_POST = 'POST';\nexport const REQUEST_TYPE_GET = 'GET';\nexport const REQUEST_TYPE_PUT = 'PUT';\nexport const REQUEST_TYPE_DELETE = 'DELETE';\n//** POST CONTENT TYPES **//\nexport const CONTENT_TYPE_JSON = 'json';\nexport const CONTENT_TYPE_FORM = 'x-www-form-urlencoded';\n//** API URLS **//\nexport const API_STATUS = '/api/v1/status';\nexport const API_GET_SETTINGS = '/api/v1/settings/site';\nexport const API_GET_MEMBER_INFO = '/api/v1/settings/member';\nexport const API_NEW_PAGE = '/api/v1/page/create';\nexport const API_EDIT_PAGE = '/api/v1/page/write';\nexport const API_DELETE_PAGE = '/api/v1/page/delete';\nexport const API_SETTINGS_SYNC = '/api/v1/settings/sync';\nexport const API_PUBLISH_PAGES = '/api/v1/settings/publish';\nexport const API_NAV_SYNC = '/api/v1/settings/nav-sync';\nexport const API_REINDEX_PAGES = '/api/v1/settings/reindex';\nexport const API_SEND_MAIL = '/api/v1/mailer';\nexport const API_LOGIN = '/api/v1/login';\n//** API TASKS **//\nexport const AUTH_STATUS = 'getAuthStatus';\nexport const TASK_SETTINGS_WRITE = 'writeSettings';\nexport const TASK_PUBLISH_SITE = 'publishSite';\nexport const TASK_PAGE_CREATE = 'createNewPage';\nexport const TASK_PAGE_EDIT = 'editPage';\nexport const TASK_PAGE_DELETE = 'deletePage';\nexport const TASK_SEND_MAIL = 'sendMail';\nexport const TASK_REINDEX_PAGE = 'reIndexPages';\nexport const TASK_SYNC_SETTNIGS = 'syncSite';\nexport const TASK_SYNC_NAV = 'syncNav';\nexport const TASK_GET_SETTINGS = 'getSiteSettings';\nexport const TASK_GET_MEMBER_INFO = 'getMemberInfo';\n//** API STATUS **//\nexport const API_ACCESS_GOOD = 'apiUseAuthorized';\nexport const API_ACCESS_BAD = 'apiUseNotAuthorized';\n\n/**\n * A can of methods used to edit install settings, navigation pages and content pages\n */\n\nclass FipamoAdminAPI {\n\t/**\n\t * @constructor\n\t * @param {string} baseURL - url of site; uses local when empty\n\t * @param {object} progressBar - element to be used to display upload progress\n\t */\n\tconstructor(baseURL = null, progressBar = null) {\n\t\tthis.percentComplete = 0; //for later\n\t\tthis.baseURL = null;\n\t\tthis.progressBar = progressBar;\n\t\tthis.status = false;\n\t\tif (baseURL) this.baseURL = baseURL;\n\t\t//asks server if a session is active\n\t\tthis._request(this.baseURL ? this.baseURL + API_STATUS : API_STATUS).then(\n\t\t\tresponse => {\n\t\t\t\tif (response.type === API_ACCESS_GOOD) {\n\t\t\t\t\tthis.token = response.token;\n\t\t\t\t} else {\n\t\t\t\t\t//don't set token\n\t\t\t\t\t//console.log(\"NO TOKEN\");\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t/**\n * Promise method for authenticating and starting a session\\\n * **POST**`/api/v1/login`\n * @param {Object[]} data - json object that contains data for set up\n * @param {string} data[].handle - handle for site user\n * @param {string} data[].password - password for site user\n * @example\n * api.login(data).then(response=>{\n * console.log(\"RESPONSE\", response);\n * })\n * @returns {object} json object that contains type and status of login request\n ```\n {\n \"message\":\"Example Message of Affirmation or what you're missing!\",\n \"type\":\"exampleType\",\n }\n ```\n */\n\tlogin(data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.baseURL ? (data.remote = true) : (data.remote = false);\n\t\t\tthis.key ? (data.key = this.key) : (data.key = null);\n\t\t\tthis._request(\n\t\t\t\tthis.baseURL ? this.baseURL + API_LOGIN : API_LOGIN,\n\t\t\t\tAUTH_STATUS,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\t/**\n * Method for saving site and navigation settings\\\n * **POST**`/api/v1/settings/:task`\n * @param {string} task - settings being synced `config | navigation`\n * @param {object[]} data - json object that contains settings data for [site] or [nav]\n * @param {string} data[].global.base_url - base url for site [site]\n * @param {string} data[].global.title - site title [site]\n * @param {string} data[].global.descriptions - brief site summary [site]\n * @param {string} data[].global.background - url for site feature image for header [site]\n * @param {boolean} data[].global.private - privacy state for site [disabled] [site]\n * @param {boolean} data[].global.renderOnSave - property for publishing site when page saved [disabled] [site]\n * @param {string} data[].global.theme - current theme for site [site]\n * @param {boolean} data[].global.externalAPI - toggle for external API access [site]\n * @param {string} data[].member.handle - current member handle [site]\n * @param {string} data[].member.email - current member email [site]\n * @param {string} data[].email.active - current email protocol being used [site]\n * @param {string} data[].email.smtp.domain - url of smtp service being [site]\n * @param {string} data[].email.smtp.email - email account of smtp service [site]\n * @param {string} data[].email.smtp.password - password for email of smtp service [site]\n * @param {string} data[].email.mailgun.domain - mailgun domain url [site]\n * @param {string} data[].email.mailgun.key - mailgun key [site]\n *\n * @param {string} data[].item.title - page title [nav]\n * @param {string} data[].item.slug - url safe title [nav]\n * @param {string} data[].item.uuid - unique identifier [nav]\n * @param {string} data[].item.path - directory path to associated markdown file [nav]\n * @example\n * api.sync(TASK, data).then(response=>{\n * console.log(\"RESPONSE\", response);\n * })\n * @returns {object} json object that contains type and status of sync request\n ```\n *\n {\n \"message\":\"Example Message of Affirmation!\",\n \"type\":\"exampleType\",\n }\n ```\n */\n\tsync(task, data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet url = '';\n\t\t\tswitch (task) {\n\t\t\t\tcase 'syncSite':\n\t\t\t\t\turl = API_SETTINGS_SYNC;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'syncNav':\n\t\t\t\t\turl = API_NAV_SYNC;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._request(\n\t\t\t\tthis.baseURL ? this.baseURL + url : url,\n\t\t\t\tTASK_SETTINGS_WRITE,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n * Method for retrieving user authorizing user login\n * @param {object[]} data - json object that contains task\n * @param {string} data[].task - publishing task\n * @example\n * api.publish(TASK).then(response=>{\n * console.log(\"RESPONSE\", response);\n * })\n * @returns {object} json object that contains type and status of publis request\n * ```\n {\n \"message\":\"Example Message of Affirmation!\",\n \"type\":\"exampleType\",\n }\n * ```\n */\n\tpublish(data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\t//API_PUBLISH_PAGES,\n\t\t\t\tthis.baseURL ? this.baseURL + API_PUBLISH_PAGES : API_PUBLISH_PAGES,\n\t\t\t\tTASK_PUBLISH_SITE,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n * Method for handling page creating and editing\\\n * **POST**`/api/v1/page/:task`\n * @param {string} task - current page action\n * @param {object[]} form - form object that contains info for current page being edited/created\n * @param {string} form[].id - sequence id for page, leave empty for new page\n * @param {string} form[].uuid - unique identifier for page, leave empty for new page\n * @param {string} form[].layout - current page layout\n * @param {string} form[].current_title - saved url save title for persistence when changing title, leave empty for new page\n * @param {string} form[].content - markdown body of page\n * @param {string} form[].title - current title of page\n * @param {string} form[].created - date page was created, leave empty for new page\n * @param {string} form[].slug - url safe string of page title\n * @param {string} form[].tags - comma separated list of tags\n * @param {boolean} form[].menu - property that indicates page is included in site menu\n * @param {boolean} form[].featured - property that indicates page is featured\n * @param {boolean} form[].published - property that indicates page is public\n * @param {string} form[].form_token - hidden property to authenticate form submission\n * @param {input} form[].feature_image - main image for page\n * @example\n * api.pageActions(TASK, data).then(response=>{\n * console.log(\"RESPONSE\", response);\n * })\n * @returns {object} json object that contains type and status of page edit request\n ```\n {\n \"message\":\"Example Message of Affirmation!\",\n \"type\":\"exampleType\",\n }\n ```\n */\n\tpageActions(task, data) {\n\t\tlet url, event, content;\n\t\tswitch (task) {\n\t\t\tcase TASK_PAGE_CREATE:\n\t\t\t\turl = API_NEW_PAGE;\n\t\t\t\tevent = TASK_PAGE_CREATE;\n\t\t\t\tcontent = CONTENT_TYPE_JSON;\n\t\t\t\tbreak;\n\t\t\tcase TASK_PAGE_EDIT:\n\t\t\t\turl = API_EDIT_PAGE;\n\t\t\t\tevent = TASK_PAGE_EDIT;\n\t\t\t\tcontent = CONTENT_TYPE_JSON;\n\t\t\t\tbreak;\n\n\t\t\tcase TASK_PAGE_DELETE:\n\t\t\t\turl = API_DELETE_PAGE;\n\t\t\t\tevent = TASK_PAGE_DELETE;\n\t\t\t\tcontent = CONTENT_TYPE_JSON;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (this.baseURL) {\n\t\t\t//data.key = this.key;\n\t\t\tdata.remote = true;\n\t\t} else {\n\t\t\tdata.remote = false;\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\tthis.baseURL ? this.baseURL + url : url,\n\t\t\t\tevent,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tcontent,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n * Method for sending mail (if completed in settings)\\\n * **POST**`/api/v1/mailer`\n * @param {object[]} message - json object that contains items to be included in main site navigation\n * @param {string} message[].content - message to send\n * @example\n * api.sendMail(message).then(response=>{\n * console.log(\"RESPONSE\", response);\n * })\n * @returns {object} json object that contains type and status of page edit request\n ```\n {\n \"message\":\"Example Message of Affirmation!\",\n \"type\":\"exampleType\"\n }\n ```\n */\n\tsendMail(message) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\tthis.baseURL ? this.baseURL + API_SEND_MAIL : API_SEND_MAIL,\n\t\t\t\tTASK_SEND_MAIL,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tmessage\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n * *Promise method for retrieving site and member info*\\\n * **GET** `/api/v1/settings/:type`\n * @param {string} type - type of info requested ['site'|'member'];\n * @example\n * api.getInfo(\"type\").then(data=>{\n console.log(\"Info Object\", data);\n * })\n * @returns {object} json object that contains data for requested information\n *\n * *info object example*\n * ```\n {\n \"message\":\"message of affirmation!\",\n \"task\":\"type of info request\",\n \"data\":json-data-object,\n }\n * ```\n */\n\n\tgetInfo(type) {\n\t\tlet url, task;\n\t\tif (type == 'site') {\n\t\t\turl = API_GET_SETTINGS;\n\t\t\ttask = TASK_GET_SETTINGS;\n\t\t} else {\n\t\t\turl = API_GET_MEMBER_INFO;\n\t\t\ttask = TASK_GET_MEMBER_INFO;\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(this.baseURL ? this.baseURL + url : url, task)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t//--------------------------\n\t// private\n\t//--------------------------\n\t_request(\n\t\trequestURL,\n\t\teventType,\n\t\trequestType = REQUEST_TYPE_GET,\n\t\tcontentType = CONTENT_TYPE_JSON,\n\t\trequestData = null\n\t) {\n\t\tvar self = this;\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.upload.addEventListener('progress', e =>\n\t\t\t\tself.handleLoadProgress(e, self.progressBar)\n\t\t\t);\n\t\t\trequest.open(requestType, requestURL, true);\n\t\t\trequest.onload = () => {\n\t\t\t\tif (request.status == 200) {\n\t\t\t\t\tlet response = JSON.parse(request['response']);\n\t\t\t\t\tresolve(response);\n\t\t\t\t} else {\n\t\t\t\t\tlet error = JSON.parse(request['response']);\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (requestType == REQUEST_TYPE_PUT || requestType == REQUEST_TYPE_POST) {\n\t\t\t\tif (\n\t\t\t\t\teventType === TASK_SETTINGS_WRITE ||\n\t\t\t\t\teventType === TASK_PAGE_EDIT ||\n\t\t\t\t\teventType === TASK_PAGE_CREATE ||\n\t\t\t\t\teventType === TASK_PAGE_DELETE ||\n\t\t\t\t\teventType === TASK_PUBLISH_SITE ||\n\t\t\t\t\teventType === TASK_REINDEX_PAGE\n\t\t\t\t)\n\t\t\t\t\trequest.setRequestHeader('fipamo-access-token', self.token);\n\n\t\t\t\tswitch (contentType) {\n\t\t\t\t\tcase CONTENT_TYPE_JSON:\n\t\t\t\t\t\trequest.setRequestHeader(\n\t\t\t\t\t\t\t'Content-type',\n\t\t\t\t\t\t\t'application/' + contentType\n\t\t\t\t\t\t);\n\t\t\t\t\t\trequest.send(JSON.stringify(requestData));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase CONTENT_TYPE_FORM:\n\t\t\t\t\t\trequest.send(requestData);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\teventType === TASK_GET_SETTINGS ||\n\t\t\t\t\teventType === TASK_GET_MEMBER_INFO\n\t\t\t\t) {\n\t\t\t\t\trequest.setRequestHeader('fipamo-access-token', self.token);\n\t\t\t\t}\n\t\t\t\trequest.send();\n\t\t\t}\n\t\t});\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleLoadProgress(e, progressBar) {\n\t\tlet percent = Math.ceil((e.loaded / e.total) * 100);\n\t\t//if a progress bar element is present, talk to it\n\t\tif (progressBar != null) {\n\t\t\tprogressBar.style.width = percent + '%';\n\t\t}\n\t}\n}\n\nexport { FipamoAdminAPI as default };\n","//** REQUEST TYPES **//\nexport const REQUEST_TYPE_POST = 'POST';\nexport const REQUEST_TYPE_GET = 'GET';\nexport const REQUEST_TYPE_PUT = 'PUT';\nexport const REQUEST_TYPE_DELETE = 'DELETE';\n//** POST CONTENT TYPES **//\nexport const CONTENT_TYPE_JSON = 'json';\nexport const CONTENT_TYPE_FORM = 'x-www-form-urlencoded';\n//** API URLS **//\nexport const API_STATUS = '/api/v1/status';\nexport const API_INIT = '/api/v1/init';\nexport const API_RESTORE = '/api/v1/restore';\nexport const API_GET_SECRET = '/api/v1/get-secret';\nexport const API_RESET_PASS = '/api/v1/reset-password';\nexport const API_CREATE_BACKUP = '/api/v1/backup';\nexport const API_DOWNLOAD_BACKUP = '/api/v1/backup/download';\nexport const API_RESTORE_BACKUP = '/api/v1/backup/restore';\nexport const API_UPLOAD_AVATAR = '/api/v1/settings/add-avatar';\nexport const API_UPLOAD_BACKGROUND = '/api/v1/settings/add-feature-background';\nexport const API_IMAGE_UPLOAD = '/api/v1/page/add-entry-image';\nexport const API_FILES_UPLOAD = '/api/v1/files';\n//** API TASKS **//\nexport const TASK_SITE_INIT = 'blogInit';\nexport const TASK_BACKUP_RESTORE = 'restoreBackup';\nexport const TASK_BACKUP_CREATE = 'createBackup';\nexport const TASK_GET_SECRET = 'retrieveSecret';\nexport const TASK_RESET_PASS = 'resetPassword';\nexport const TASK_UPLOAD_FILES = 'uploadFiles';\n//** API STATUS **//\nexport const API_ACCESS_GOOD = 'apiUseAuthorized';\nexport const API_ACCESS_BAD = 'apiUseNotAuthorized';\n\n/**\n * A tub of methods for creating/restoring installs, resetting passwords and uploading images.\n */\nclass MaintenanceManager {\n\t/**\n\t * @constructor\n\t * @param {string} baseURL - url of site; uses local when empty\n\t * @param {string} key - user api key\n\t */\n\tconstructor(baseURL = null, key = null) {\n\t\tthis.accetableFiles = [\n\t\t\t'image/jpeg',\n\t\t\t'image/gif',\n\t\t\t'image/png',\n\t\t\t'image/svg',\n\t\t\t'audio/mpeg',\n\t\t\t'video/mp4',\n\t\t\t'application/pdf',\n\t\t\t'text/plain',\n\t\t\t'text/rtf'\n\t\t];\n\t\tthis.percentComplete = 0; //for later\n\t\tthis.token = null;\n\t\tthis.baseURL = null;\n\t\tthis.key = null;\n\t\tif (key) this.key = key;\n\t\tif (baseURL) this.baseURL = baseURL;\n\t\t//if key is valid, checks to see if a session is active and returns\n\t\tthis._request(\n\t\t\tthis.baseURL\n\t\t\t\t? this.baseURL + API_STATUS + '?key=' + this.key\n\t\t\t\t: API_STATUS + '?key=' + this.key\n\t\t).then(response => {\n\t\t\tif (response.type === API_ACCESS_GOOD) {\n\t\t\t\tthis.token = response.token;\n\t\t\t} else {\n\t\t\t\t//don't set token\n\t\t\t\t//console.log(\"NO TOKEN\");\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Promise method used create new site from scratch. For local use only.\n\t * @param {object} data - json object that contains data for set up\n\t * @property {string} new_member_handle - handle for new user\n\t * @property {string} new_member_email - email for new user\n\t * @property {string} new_member_pass - password for new user\n\t * @property {string} new_member_title - title for new user\n\t */\n\tcreate(data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\tAPI_INIT,\n\t\t\t\tnull,\n\t\t\t\tTASK_SITE_INIT,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\t/**\n\t * Promise method for restoring site from a previous back up. For local use only.\n\t * @param {object} form - form object that contains restore data and files\n\t * @property {string} restore_member_handle - handle for site user\n\t * @property {string} restore_member_pass - password for site user\n\t * @property {file} backup-upload - backup zip file\n\t */\n\trestore(form) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar url, event, method, type, data;\n\n\t\t\turl = API_RESTORE;\n\t\t\tevent = TASK_BACKUP_RESTORE;\n\t\t\tmethod = REQUEST_TYPE_POST;\n\t\t\ttype = CONTENT_TYPE_FORM;\n\t\t\tdata = new FormData(form);\n\t\t\tthis._request(url, null, event, method, type, data)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\t/**\n\t * Promise method for creating a zip back up of current site. For local use only.\n\t */\n\n\tbackup() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar url, event, method, type, data;\n\n\t\t\turl = API_CREATE_BACKUP;\n\t\t\tevent = TASK_BACKUP_CREATE;\n\t\t\tmethod = REQUEST_TYPE_POST;\n\t\t\ttype = CONTENT_TYPE_JSON;\n\t\t\tdata = { task: 'create_backup' };\n\t\t\tthis._request(url, null, event, method, type, data)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Promise method for retrieving user secret key. For local use only.\n\t * @param {object} data - json object that contains data for set up\n\t * @property {string} email - email for site user\n\t */\n\n\tsecret(data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\tAPI_GET_SECRET,\n\t\t\t\tTASK_GET_SECRET,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\t/**\n\t * Promise method for resetting password for user. For local use only.\n\t * @param {object} data - json object that contains data for set up\n\t * @property {string} new_password - password for user\n\t * @property {string} new_password2 - confirm password for user\n\t * @property {string} secret - secret key for user\n\t */\n\n\tnewPass(data) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._request(\n\t\t\t\tAPI_RESET_PASS,\n\t\t\t\tTASK_RESET_PASS,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_JSON,\n\t\t\t\tdata\n\t\t\t)\n\t\t\t\t.then(result => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Promise method for uploading files [todo: change to uploading files]\n\t * @param {string} type - type of upload\n\t * @param {input} files - form input containing files\n\t */\n\tfilesUpload(type, files, progress = null) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet url = API_FILES_UPLOAD;\n\n\t\t\tif (this.baseURL) {\n\t\t\t\tfiles.append('key', this.key);\n\t\t\t\tfiles.append('remote', true);\n\t\t\t} else {\n\t\t\t\tfiles.append('remote', false);\n\t\t\t}\n\n\t\t\tthis._request(\n\t\t\t\turl,\n\t\t\t\tprogress,\n\t\t\t\tTASK_UPLOAD_FILES,\n\t\t\t\tREQUEST_TYPE_POST,\n\t\t\t\tCONTENT_TYPE_FORM,\n\t\t\t\tfiles\n\t\t\t)\n\t\t\t\t.then(r => {\n\t\t\t\t\tresolve(r);\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t//--------------------------\n\t// private\n\t//--------------------------\n\t_request(\n\t\trequestURL,\n\t\tprogressBar = null,\n\t\teventType,\n\t\trequestType = REQUEST_TYPE_GET,\n\t\tcontentType = CONTENT_TYPE_JSON,\n\t\trequestData = null\n\t) {\n\t\tvar self = this;\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.upload.addEventListener('progress', e =>\n\t\t\t\tself.handleLoadProgress(e, progressBar)\n\t\t\t);\n\t\t\trequest.open(requestType, requestURL, true);\n\t\t\trequest.onload = () => {\n\t\t\t\tif (request.status == 200) {\n\t\t\t\t\tlet response = JSON.parse(request['response']);\n\t\t\t\t\tresolve(response);\n\t\t\t\t} else {\n\t\t\t\t\tlet error = JSON.parse(request['response']);\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (requestType == REQUEST_TYPE_PUT || requestType == REQUEST_TYPE_POST) {\n\t\t\t\tif (eventType === TASK_UPLOAD_FILES)\n\t\t\t\t\trequest.setRequestHeader('fipamo-access-token', self.token);\n\t\t\t\tswitch (contentType) {\n\t\t\t\t\tcase CONTENT_TYPE_JSON:\n\t\t\t\t\t\trequest.setRequestHeader(\n\t\t\t\t\t\t\t'Content-type',\n\t\t\t\t\t\t\t'application/' + contentType\n\t\t\t\t\t\t);\n\t\t\t\t\t\trequest.send(JSON.stringify(requestData));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase CONTENT_TYPE_FORM:\n\t\t\t\t\t\trequest.send(requestData);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trequest.send();\n\t\t\t}\n\t\t});\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleLoadProgress(e, progressBar) {\n\t\tlet percent = Math.ceil((e.loaded / e.total) * 100);\n\t\t//if a progress bar element is present, talk to it\n\t\tif (progressBar != null) {\n\t\t\tprogressBar.style.width = percent + '%';\n\t\t}\n\t}\n}\n\nexport { MaintenanceManager as default };\n","export default class DataUtils {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\n\timgLoad(url) {\n\t\t'use strict';\n\t\t// Create new promise with the Promise() constructor;\n\t\t// This has as its argument a function with two parameters, resolve and reject\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\t// Standard XHR to load an image\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open('GET', url);\n\t\t\trequest.responseType = 'blob';\n\t\t\t// When the request loads, check whether it was successful\n\t\t\trequest.onload = function () {\n\t\t\t\tif (request.status === 200) {\n\t\t\t\t\t// If successful, resolve the promise by passing back the request response\n\t\t\t\t\tresolve(request.response);\n\t\t\t\t} else {\n\t\t\t\t\t// If it fails, reject the promise with a error message\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\"Image didn't load successfully; error code: \" +\n\t\t\t\t\t\t\t\trequest.status +\n\t\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\t\trequest.statusText\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t};\n\t\t\trequest.onerror = function () {\n\t\t\t\t// Also deal with the case when the entire request fails to begin with\n\t\t\t\t// This is probably a network error, so reject the promise with an appropriate message\n\t\t\t\treject(new Error('There was a network error.'));\n\t\t\t};\n\t\t\t// Send the request\n\t\t\trequest.send();\n\t\t});\n\t}\n\tloadImage(src) {\n\t\t'use strict';\n\t\tlet self = this;\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\t// Get a reference to the body element, and create a new image object\n\t\t\tvar myImage = new Image();\n\t\t\tmyImage.crossOrigin = ''; // or \"anonymous\"\n\t\t\t// Call the function with the URL we want to load, but then chain the\n\t\t\t// promise then() method on to the end of it. This contains two callbacks\n\t\t\tself.imgLoad(src).then(\n\t\t\t\tfunction (response) {\n\t\t\t\t\t// The first runs when the promise resolves, with the request.reponse specified within the resolve() method.\n\t\t\t\t\tvar imageURL = window.URL.createObjectURL(response);\n\t\t\t\t\tresolve(imageURL);\n\t\t\t\t\t//$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL;\n\t\t\t\t\t//console.log(imageURL);\n\t\t\t\t\t//body.appendChild(myImage);\n\t\t\t\t\t// The second runs when the promise is rejected, and logs the Error specified with the reject() method.\n\t\t\t\t},\n\t\t\t\tfunction (Error) {\n\t\t\t\t\treject(Error);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Create a function to convert the serialize and convert the form data to JSON\n\t * @param : $('#form_example');\n\t * @return a JSON Stringify\n\t */\n\tformDataToJSON(form) {\n\t\tlet object = {};\n\t\tlet formData = new FormData(form);\n\t\tformData.forEach((value, key) => {\n\t\t\tif (!object.hasOwnProperty(key)) {\n\t\t\t\tobject[key] = value;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!Array.isArray(object[key])) {\n\t\t\t\tobject[key] = [object[key]];\n\t\t\t}\n\t\t\tobject[key].push(value);\n\t\t});\n\t\t//let json = JSON.stringify(object);\n\t\treturn object;\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","export const AUTH_STATUS = \"getAuthStatus\";\nexport const REQUEST_GOOD = \"requestGood\";\nexport const REQUEST_LAME = \"requestLame\";\nexport const API_REQUEST_GOOD = \"apiUseAuthorized\";\nexport const API_REQUEST_LAME = \"apiUseNotAuthorized\";\nexport const IMG_REQUEST_GOOD = \"imgRequestGood\";\nexport const IMG_REQUEST_LAME = \"imgRequestLame\";\nexport const SETTINGS_LOADED = \"settingsLoaded\";\nexport const POST_IMAGE_ADDED = \"postImageAdded\";\nexport const FEATURE_IMAGE_ADDED = \"featureImageAdded\";\nexport const PAGE_ERROR = \"postError\";\nexport const PAGE_ADDED = \"postAdded\";\nexport const PAGE_UPDATED = \"postUpdated\";\nexport const PAGE_DELETED = \"postImageAdded\";\nexport const PAGES_RENDERED = \"pagesRendered\";\nexport const PAGES_NOT_RENDERED = \"pagesNotRendered\";\nexport const TAG_PAGES_RENDERED = \"tagPagesRendered\";\nexport const TAG_PAGES_NOT_RENDERED = \"tagPagesNotRendered\";\nexport const SETTINGS_UPDATED = \"settingsUpdated\";\nexport const SETTINGS_NOT_UPDATED = \"settingsNotUpdated\";\nexport const MENU_ADD_ITEM = \"menuAddItem\";\nexport const MENU_DELETE_ITEM = \"menuDeleteItem\";\nexport const MENU_UPDATED = \"menuUpdated\";\nexport const AVATAR_UPLOADED = \"avatarUploaded\";\nexport const SITE_BACKGROUND_UPLOADED = \"siteBackgroundUploaded\";\nexport const UPLOAD_PROGRESS = \"uploadProgress\";\nexport const API_PAGE_WRITE = \"writingItDown\";\nexport const API_PAGE_CREATE = \"writingNewEntry\";\nexport const API_PAGE_DELETE = \"erasingPage\";\nexport const API_SETTINGS_WRITE = \"savingSettings\";\nexport const API_BACKUP_CREATE = \"createBackup\";\nexport const API_BACKUP_DOWNLOAD = \"downloadBackup\";\nexport const API_BACKUP_RESTORE = \"downloadBackup\";\nexport const API_IMAGES_UPLOAD = \"uploadProfileImages\";\nexport const API_RENDER_PAGES = \"renderPages\";\nexport const API_REINDEX_PAGES = \"reindexPages\";\nexport const API_INIT = \"blogInit\";\nexport const API_INIT_GOOD = \"blogInitGood\";\nexport const API_INIT_LAME = \"blogInitLame\";\nexport const API_GET_SECRET = \"retrieveSecret\";\nexport const API_RESET_PASS = \"resetPassword\";\nexport const SEND_MAIL = \"sendMail\";\nclass DataEvent {\n //--------------------------\n // methods\n //--------------------------\n //--------------------------\n // event handlers\n //--------------------------\n}\nexport default new DataEvent();\n","import PostIndex from './PostIndex';\nimport SettingsIndex from './SettingsIndex';\nimport NaviIndex from './NavIndex';\nimport Menu from '../ui/Menu';\n\nexport default class DashManager {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.currentDisplay = '';\n\t\tthis.urlPieces = document.URL.split('/');\n\t\tthis.chooseDisplay(this.urlPieces[4], this.urlPieces[5]);\n\t\t//start main menu handler\n\t\tnew Menu();\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {}\n\n\tchooseDisplay(section, page) {\n\t\tthis.currentDisplay = '';\n\t\tswitch (section) {\n\t\t\tcase 'page':\n\t\t\t\tthis.currentDisplay = new PostIndex(page);\n\t\t\t\tbreak;\n\t\t\tcase 'settings':\n\t\t\t\tthis.currentDisplay = new SettingsIndex();\n\t\t\t\tbreak;\n\t\t\tcase 'navigation':\n\t\t\t\tthis.currentDisplay = new NaviIndex();\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t//just chill\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.start();\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","import PageEditor from \"./PageEditor\";\nexport default class PostIndex {\n //--------------------------\n // constructor\n //--------------------------\n constructor(page) {\n this.currentPage = null;\n this.choosePage(page);\n this.start();\n }\n //--------------------------\n // methods\n //--------------------------\n start() {}\n choosePage(page) {\n this.currentPage = \"\";\n switch (page) {\n case \"edit\":\n case \"add\":\n this.currentPage = new PageEditor();\n break;\n default:\n //just chill\n break;\n }\n }\n //--------------------------\n // event handlers\n //--------------------------\n}\n","//TOOLS\nimport FipamoAdminAPI, {\n\tTASK_PAGE_CREATE,\n\tTASK_PAGE_EDIT,\n\tTASK_PAGE_DELETE\n} from '../../libraries/FipamoAdminAPI';\nimport Maintenance from './MaintenanceManager';\nimport * as DataEvent from '../events/DataEvent';\nimport PageActions from '../actions/PageActions';\nimport * as EditorEvent from '../events/EditorEvent';\n//import TinyDatePicker from 'tiny-date-picker'; TODO: Reactivate for scheduled publishing\nimport TextEditor from '../ui/TextEditor';\nimport Notfications from '../ui/Notifications';\nimport FileManager from '../ui/FileManager';\nconst notify = new Notfications();\nexport default class PostEditor {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.processing = false;\n\t\tlet self = 'this';\n\t\tthis.admin = new FipamoAdminAPI(null, document.getElementById('notify-progress'));\n\t\tthis.mm = new Maintenance(null, null);\n\t\tthis.urlPieces = document.URL.split('/');\n\t\tthis.post = [];\n\t\tthis.postID = null;\n\t\tthis.postUUID = null;\n\t\tthis.postLayout = null;\n\t\tthis.fm = null;\n\t\tif (document.querySelector('[role=\"file-manager\"]').getAttribute('data-index')) {\n\t\t\tthis.postID = document\n\t\t\t\t.querySelector('[role=\"file-manager\"]')\n\t\t\t\t.getAttribute('data-index');\n\t\t\tthis.postUUID = document\n\t\t\t\t.querySelector('[role=\"file-manager\"]')\n\t\t\t\t.getAttribute('data-uuid');\n\t\t\tthis.postLayout = document\n\t\t\t\t.querySelector('[role=\"file-manager\"]')\n\t\t\t\t.getAttribute('data-layout');\n\t\t}\n\t\tif (document.getElementById('edit')) {\n\t\t\tthis.editor = new TextEditor(\n\t\t\t\tdocument.getElementById('edit'),\n\t\t\t\tdocument.querySelector('[role=\"file-manager\"]').offsetHeight +\n\t\t\t\t\tdocument.querySelector('[role=\"page-meta\"]').offsetHeight +\n\t\t\t\t\tdocument.querySelector('[role=\"text-editor\"]').offsetHeight\n\t\t\t);\n\t\t\tthis.editor.addListener(\n\t\t\t\tEditorEvent.EDITOR_DELETE,\n\t\t\t\t() => this.handleEditorOptions(EditorEvent.EDITOR_DELETE),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.editor.addListener(\n\t\t\t\tEditorEvent.EDITOR_UPLOAD_POST_IMAGE,\n\t\t\t\t() => this.handleEditorOptions(EditorEvent.EDITOR_UPLOAD_POST_IMAGE),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.editor.addListener(\n\t\t\t\tEditorEvent.EDITOR_UPDATE,\n\t\t\t\t() => this.handleEditorOptions(EditorEvent.EDITOR_UPDATE),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.editor.addListener(\n\t\t\t\tEditorEvent.EDITOR_SAVE,\n\t\t\t\t() => this.handleEditorOptions(EditorEvent.EDITOR_SAVE),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tdocument.getElementById('post-image-upload').addEventListener(\n\t\t\t\t'change',\n\t\t\t\te => {\n\t\t\t\t\tthis.handleImageUpload(e.target.id, e.target.files);\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t\t/*\n\t\t\tTinyDatePicker(document.getElementById('post-date'), {\n\t\t\t\tmode: 'dp-below',\n\t\t\t\tformat() {\n\t\t\t\t\t//return self.dateUtils.getDate('origin', date);\n\t\t\t\t}\n\t\t\t});\n\t\t\t*/\n\n\t\t\tthis.start();\n\t\t}\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {\n\t\tif (document.querySelector('[role=\"file-drop\"]')) {\n\t\t\t//insert fileManager here\n\t\t\tthis.fm = new FileManager(\n\t\t\t\tdocument.querySelector('[role=\"file-drop\"]'),\n\t\t\t\tdocument.getElementById('page-files-upload'),\n\t\t\t\tdocument.querySelector('[role=\"page-images-list\"]'),\n\t\t\t\tdocument.querySelector('[role=\"page-files-list\"]')\n\t\t\t);\n\t\t\tvar optionButtons = document.querySelectorAll('.post-option-btn');\n\t\t\tfor (var i = 0, length = optionButtons.length; i < length; i++) {\n\t\t\t\toptionButtons[i].addEventListener(\n\t\t\t\t\t'click',\n\t\t\t\t\te => this.handlePostOptions(e),\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandlePostOptions(e) {\n\t\tlet currentOption = null;\n\t\tswitch (e.target.id) {\n\t\t\tcase 'option-page-icon':\n\t\t\tcase 'option-menu-pin':\n\t\t\t\tcurrentOption = document.getElementById('option-menu-pin');\n\t\t\t\tbreak;\n\t\t\tcase 'option-feature-icon':\n\t\t\tcase 'option-feature':\n\t\t\t\tcurrentOption = document.getElementById('option-feature');\n\t\t\t\tbreak;\n\t\t\tcase 'option-published-icon':\n\t\t\tcase 'option-published':\n\t\t\t\tcurrentOption = document.getElementById('option-published');\n\t\t\t\tbreak;\n\t\t}\n\t\tif (currentOption != null) {\n\t\t\tlet active = currentOption.getAttribute('data-active');\n\t\t\tactive == 'false'\n\t\t\t\t? currentOption.setAttribute('data-active', 'true')\n\t\t\t\t: currentOption.setAttribute('data-active', 'false');\n\t\t}\n\t}\n\thandleEditorOptions(e) {\n\t\tif (this.processing) return;\n\t\tlet self = this;\n\t\tswitch (e) {\n\t\t\tcase EditorEvent.EDITOR_SAVE:\n\t\t\tcase EditorEvent.EDITOR_UPDATE:\n\t\t\t\tvar task = '';\n\t\t\t\te === EditorEvent.EDITOR_SAVE\n\t\t\t\t\t? (task = TASK_PAGE_CREATE)\n\t\t\t\t\t: (task = TASK_PAGE_EDIT);\n\t\t\t\tnew PageActions().collectInfo(this.fm.getFileOrder()).then(page => {\n\t\t\t\t\tself.processing = true;\n\t\t\t\t\tnotify.alert('Writing down changes', null);\n\t\t\t\t\tself.admin\n\t\t\t\t\t\t.pageActions(task, page)\n\t\t\t\t\t\t.then(r => {\n\t\t\t\t\t\t\tself.processing = false;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tr.type === DataEvent.PAGE_ERROR ||\n\t\t\t\t\t\t\t\tr.type === DataEvent.API_REQUEST_LAME\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnotify.alert(r.message, false);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (r.type === DataEvent.PAGE_UPDATED) {\n\t\t\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t\t\t\twindow.location = '/dashboard/page/edit/' + r.id;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\tself.processing = false;\n\t\t\t\t\t\t\tnotify.alert(err, false);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase EditorEvent.EDITOR_DELETE:\n\t\t\t\tif (this.postLayout === 'index') {\n\t\t\t\t\tnotify.alert('Index cannot be deleted', false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (confirm(\"AYE! You know you're deleting this post, right?\")) {\n\t\t\t\t\tnew PageActions()\n\t\t\t\t\t\t.collectInfo(this.fm.getFileOrder())\n\t\t\t\t\t\t.then(page => {\n\t\t\t\t\t\t\tself.processing = true;\n\t\t\t\t\t\t\tthis.admin\n\t\t\t\t\t\t\t\t.pageActions(TASK_PAGE_DELETE, page)\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tself.processing = false;\n\t\t\t\t\t\t\t\t\twindow.location = '/dashboard/pages';\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\t\t\tself.processing = false;\n\t\t\t\t\t\t\t\t\tnotify.alert(err, false);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t} else {\n\t\t\t\t\t// Do nothing!\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase EditorEvent.EDITOR_UPLOAD_POST_IMAGE:\n\t\t\t\tdocument.getElementById('post-image-upload').click();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\thandleImageUpload(type, files) {\n\t\tlet self = this;\n\t\tnotify.alert('Uploading Image', null);\n\t\tlet upload = new FormData();\n\t\tupload.enctype = 'multipart/form-data';\n\t\tupload.append('upload_files[]', files[0], files[0].name);\n\t\tthis.mm\n\t\t\t.filesUpload(files[0].type, upload)\n\t\t\t.then(result => {\n\t\t\t\tif (result.message == 'File Uploaded. Great!') {\n\t\t\t\t\tself.editor.notify(\n\t\t\t\t\t\tEditorEvent.EDITOR_UPLOAD_POST_IMAGE,\n\t\t\t\t\t\tresult.filePath\n\t\t\t\t\t);\n\t\t\t\t\tnotify.alert('Image Added to Entry', true);\n\t\t\t\t} else {\n\t\t\t\t\tnotify.alert('Uh oh. Image not added', false);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tnotify.alert('Uh oh. Image not added', false);\n\t\t\t});\n\t}\n}\n","import StringUtils from '../utils/StringUtils';\nexport default class PostActions {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tcollectInfo(files) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet pageInfo = [];\n\t\t\tlet pageRef = document.querySelector('[role=\"file-manager\"]');\n\t\t\t//process html content for storage\n\t\t\tlet txt = document.createElement('textarea');\n\t\t\ttxt.innerHTML = document.getElementById('highlight-content').innerHTML;\n\t\t\tlet html = txt.value;\n\t\t\thtml = html.replace(/<\\/?span[^>]*>/g, ''); //removes prism styling\n\t\t\thtml = html.replace(/<\\/?br[^>]*>/g, '\\n'); //convert back to encoded line break for storage\n\t\t\t//build data object\n\t\t\tpageInfo = {\n\t\t\t\tid: pageRef.getAttribute('data-index'),\n\t\t\t\tuuid: pageRef.getAttribute('data-uuid'),\n\t\t\t\tlayout: document.getElementById('page-templates').value,\n\t\t\t\tcurrent_title: pageRef.getAttribute('data-slug'),\n\t\t\t\tcontent: html,\n\t\t\t\ttitle: document.getElementById('post-title-text').value,\n\t\t\t\tcreated: document.getElementById('post-date').getAttribute('data-raw'),\n\t\t\t\tslug: new StringUtils().cleanString(\n\t\t\t\t\tdocument.getElementById('post-title-text').value\n\t\t\t\t),\n\t\t\t\ttags: document.getElementById('post-tags').value,\n\t\t\t\tmenu: document\n\t\t\t\t\t.getElementById('option-menu-pin')\n\t\t\t\t\t.getAttribute('data-active'),\n\t\t\t\tfeatured: document\n\t\t\t\t\t.getElementById('option-feature')\n\t\t\t\t\t.getAttribute('data-active'),\n\t\t\t\tpublished: document\n\t\t\t\t\t.getElementById('option-published')\n\t\t\t\t\t.getAttribute('data-active'),\n\t\t\t\tform_token: document.getElementById('form_token').value,\n\t\t\t\timageList: files.images,\n\t\t\t\tfileList: files.files\n\t\t\t};\n\n\t\t\tresolve(pageInfo);\n\t\t});\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","class StringUtils {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tcleanString(string) {\n\t\tvar clean = string\n\t\t\t.replace(/(^\\-+|[^a-zA-Z0-9\\/_| -]+|\\-+$)/g, '')\n\t\t\t.toLowerCase()\n\t\t\t.replace(/[\\/_| -]+/g, '-');\n\t\treturn clean;\n\t}\n\n\tdecodeHTML(string, quote_style) {\n\t\tvar optTemp = 0,\n\t\t\ti = 0,\n\t\t\tnoquotes = false;\n\t\tif (typeof quote_style === 'undefined') {\n\t\t\tquote_style = 2;\n\t\t}\n\t\tstring = string\n\t\t\t.toString()\n\t\t\t.replace(/</g, '<')\n\t\t\t.replace(/>/g, '>');\n\t\tvar OPTS = {\n\t\t\tENT_NOQUOTES: 0,\n\t\t\tENT_HTML_QUOTE_SINGLE: 1,\n\t\t\tENT_HTML_QUOTE_DOUBLE: 2,\n\t\t\tENT_COMPAT: 2,\n\t\t\tENT_QUOTES: 3,\n\t\t\tENT_IGNORE: 4\n\t\t};\n\t\tif (quote_style === 0) {\n\t\t\tnoquotes = true;\n\t\t}\n\t\tif (typeof quote_style !== 'number') {\n\t\t\t// Allow for a single string or an array of string flags\n\t\t\tquote_style = [].concat(quote_style);\n\t\t\tfor (i = 0; i < quote_style.length; i++) {\n\t\t\t\t// Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4\n\t\t\t\tif (OPTS[quote_style[i]] === 0) {\n\t\t\t\t\tnoquotes = true;\n\t\t\t\t} else if (OPTS[quote_style[i]]) {\n\t\t\t\t\toptTemp = optTemp | OPTS[quote_style[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t\tquote_style = optTemp;\n\t\t}\n\t\tif (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {\n\t\t\tstring = string.replace(/�*39;/g, \"'\"); // PHP doesn't currently escape if more than one 0, but it should\n\t\t\t// string = string.replace(/'|�*27;/g, \"'\"); // This would also be useful here, but not a part of PHP\n\t\t}\n\t\tif (!noquotes) {\n\t\t\tstring = string.replace(/"/g, '\"');\n\t\t}\n\t\t// Put this in last place to avoid escape being double-decoded\n\t\tstring = string.replace(/&/g, '&');\n\t\treturn string;\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\nexport default StringUtils;\n","export const EDITOR_DELETE = 'editorDelete';\nexport const EDITOR_UPLOAD_POST_IMAGE = 'editorUploadImage';\nexport const EDITOR_SAVE = 'editorSave';\nexport const EDITOR_UPDATE = 'editorUpdate';\n\nclass EditorEvent {\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\nexport default new EditorEvent();\n","import * as DataEvent from '../events/DataEvent';\nimport EventEmitter from '../events/EventEmitter';\nimport * as EditorEvent from '../events/EditorEvent';\nimport Prism from 'prismjs';\nclass TextEditor extends EventEmitter {\n\t/**\n\t * Text Editor UI Component\n\t * @constructor\n\t * @param {object} textEditor - Text area that will edit text\n\t * @param {number} scrollLimit - YPos where editor position will become fixed\n\t */\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor(textEditor, scrollLimit) {\n\t\tsuper();\n\n\t\tdocument\n\t\t\t.querySelector('[role=\"text-editor-control\"]')\n\t\t\t.addEventListener('scroll', e => {\n\t\t\t\tconsole.log('HERE');\n\t\t\t});\n\n\t\tdocument.body.addEventListener('scroll', e => {\n\t\t\tvar fixLimit = scrollLimit;\n\t\t\tconsole.log('POSITION', document.body.scrollTop + ' : ' + fixLimit);\n\t\t\tif (document.body.scrollTop + 5 >= fixLimit) {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector('[role=\"text-editor-control\"]')\n\t\t\t\t\t.classList.add('control-freeze');\n\t\t\t} else {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector('[role=\"text-editor-control\"]')\n\t\t\t\t\t.classList.remove('control-freeze');\n\t\t\t}\n\t\t});\n\t\tdocument.getElementById('edit').addEventListener('input', e => {\n\t\t\tlet result_element = document.querySelector('#highlight-content');\n\t\t\tthis.textEditor = textEditor;\n\n\t\t\t// Update code\n\t\t\tlet text = e.target.value;\n\t\t\tresult_element.innerHTML = text\n\t\t\t\t.replace(new RegExp('&', 'g'), '&')\n\t\t\t\t.replace(new RegExp('<', 'g'), '<');\n\t\t\tlet editorHeight = document.getElementById('highlight').offsetHeight;\n\t\t\tdocument.querySelector('[role=\"edit-post-wrapper\"]').style.height =\n\t\t\t\teditorHeight + 'px';\n\t\t\te.target.style.height = editorHeight + 30 + 'px'; //TODO: yeah, it's ugly but it works for now, fix soon\n\t\t\t// Syntax Highlight\n\t\t\tPrism.highlightElement(result_element);\n\t\t});\n\t\tdocument.getElementById('edit').addEventListener('scroll', e => {\n\t\t\t/* Scroll result to scroll coords of event - sync with textarea */\n\t\t\tlet result_element = document.querySelector('#highlight');\n\t\t\t// Get and set x and y\n\t\t\tresult_element.scrollTop = e.scrollTop;\n\t\t\tresult_element.scrollLeft = e.scrollLeft;\n\t\t});\n\t\tdocument.getElementById('edit').dispatchEvent(new Event('input'));\n\t\tthis.setInputs();\n\n\t\t//freeze editor formatting so it doesn't scroll off screen\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tsetInputs() {\n\t\tvar editorButtons = document.querySelectorAll('.editor-button');\n\t\tfor (var i = 0, length = editorButtons.length; i < length; i++) {\n\t\t\teditorButtons[i].addEventListener(\n\t\t\t\t'click',\n\t\t\t\te => this.handleEditorOption(e),\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t}\n\tnotify(type, data) {\n\t\tswitch (type) {\n\t\t\tcase DataEvent.PAGE_UPDATED:\n\t\t\t\tdocument.getElementById('submit-update').classList.add('icon-hide');\n\t\t\t\tdocument.getElementById('submit-good').classList.remove('icon-hide');\n\t\t\t\tdocument.getElementById('edit-update').classList.remove('submit-start');\n\t\t\t\tdocument.getElementById('edit-update').classList.add('submit-cool');\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById('submit-update')\n\t\t\t\t\t\t.classList.remove('icon-hide');\n\t\t\t\t\tdocument.getElementById('submit-good').classList.add('icon-hide');\n\t\t\t\t\tdocument.getElementById('edit-update').classList.add('submit-start');\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById('edit-update')\n\t\t\t\t\t\t.classList.remove('submit-cool');\n\t\t\t\t}, 2000);\n\t\t\t\tbreak;\n\t\t\tcase DataEvent.PAGE_ADDED:\n\t\t\t\t// do nothing\n\t\t\t\tbreak;\n\t\t\tcase EditorEvent.EDITOR_UPLOAD_POST_IMAGE: {\n\t\t\t\tlet len = this.textEditor.value.length;\n\t\t\t\tlet start = this.textEditor.selectionStart;\n\t\t\t\tlet end = this.textEditor.selectionEnd;\n\t\t\t\tlet insert = '';\n\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tdocument.getElementById('edit').dispatchEvent(new Event('input'));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleEditorOption(e) {\n\t\te.preventDefault();\n\t\tlet len = this.textEditor.value.length;\n\t\tlet start = this.textEditor.selectionStart;\n\t\tlet end = this.textEditor.selectionEnd;\n\n\t\tlet selectedText = this.textEditor.value.substring(start, end);\n\t\tlet insert = '';\n\t\tswitch (e.target.id) {\n\t\t\tcase 'edit-bold':\n\t\t\t\tinsert = '**' + selectedText + '**';\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\n\t\t\t\tbreak;\n\t\t\tcase 'edit-italic':\n\t\t\t\tinsert = '*' + selectedText + '*';\n\t\t\t\t//console.log(this.textEditor);\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-strikethrough':\n\t\t\t\tinsert = '~~' + selectedText + '~~';\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-header1':\n\t\t\t\tinsert = '# ' + selectedText + '\\n';\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-header2':\n\t\t\t\tinsert = '## ' + selectedText + '\\n';\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-header3':\n\t\t\t\tinsert = '### ' + selectedText + '\\n';\n\t\t\t\tthis.textEditor.value =\n\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\tinsert +\n\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-link':\n\t\t\t\t{\n\t\t\t\t\tlet url = prompt(\"Let's get that url, boss\");\n\t\t\t\t\tlet link = url.toLowerCase();\n\t\t\t\t\tinsert = '[' + selectedText + '](' + link + ')';\n\t\t\t\t\tthis.textEditor.value =\n\t\t\t\t\t\tthis.textEditor.value.substring(0, start) +\n\t\t\t\t\t\tinsert +\n\t\t\t\t\t\tthis.textEditor.value.substring(end, len);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'edit-image':\n\t\t\t\t//this.caretPos = position(this.textEditor).pos;\n\t\t\t\tthis.emitEvent(EditorEvent.EDITOR_UPLOAD_POST_IMAGE);\n\t\t\t\tbreak;\n\t\t\tcase 'submit-save':\n\t\t\tcase 'edit-save':\n\t\t\t\tthis.emitEvent(EditorEvent.EDITOR_SAVE);\n\t\t\t\tbreak;\n\t\t\tcase 'submit-update':\n\t\t\tcase 'edit-update':\n\t\t\t\tthis.emitEvent(EditorEvent.EDITOR_UPDATE);\n\t\t\t\tbreak;\n\t\t\tcase 'edit-delete':\n\t\t\t\tthis.emitEvent(EditorEvent.EDITOR_DELETE);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t//do stuff\n\t\t\t\tbreak;\n\t\t}\n\t\tdocument.getElementById('edit').dispatchEvent(new Event('input'));\n\t}\n}\nexport default TextEditor;\n","class EventEmitter {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.listeners = new Map();\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\taddListener(label, callback) {\n\t\tthis.listeners.has(label) || this.listeners.set(label, []);\n\t\tthis.listeners.get(label).push(callback);\n\t}\n\n\tremoveListener(label, callback) {\n\t\tvar isFunction = function(obj) {\n\t\t\treturn typeof obj == 'function' || false;\n\t\t};\n\n\t\tvar listeners = this.listeners.get(label),\n\t\t\tindex;\n\n\t\tif (listeners && listeners.length) {\n\t\t\tindex = listeners.reduce((i, listener, index) => {\n\t\t\t\treturn isFunction(listener) && listener === callback ? (i = index) : i;\n\t\t\t}, -1);\n\n\t\t\tif (index > -1) {\n\t\t\t\tlisteners.splice(index, 1);\n\t\t\t\tthis.listeners.set(label, listeners);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\temitEvent(label, ...args) {\n\t\tvar listeners = this.listeners.get(label);\n\t\tif (listeners && listeners.length) {\n\t\t\tlisteners.forEach(listener => {\n\t\t\t\tlistener(...args);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\nexport default EventEmitter;\n","/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n","Prism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n","(function (Prism) {\n\n\t// Allow only one line break\n\tvar inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n\n\t/**\n\t * This function is intended for the creation of the bold or italic pattern.\n\t *\n\t * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n\t *\n\t * _Note:_ Keep in mind that this adds a capturing group.\n\t *\n\t * @param {string} pattern\n\t * @returns {RegExp}\n\t */\n\tfunction createInline(pattern) {\n\t\tpattern = pattern.replace(/<inner>/g, function () { return inner; });\n\t\treturn RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n\t}\n\n\n\tvar tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n\tvar tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function () { return tableCell; });\n\tvar tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n\n\n\tPrism.languages.markdown = Prism.languages.extend('markup', {});\n\tPrism.languages.insertBefore('markdown', 'prolog', {\n\t\t'front-matter-block': {\n\t\t\tpattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'punctuation': /^---|---$/,\n\t\t\t\t'front-matter': {\n\t\t\t\t\tpattern: /\\S+(?:\\s+\\S+)*/,\n\t\t\t\t\talias: ['yaml', 'language-yaml'],\n\t\t\t\t\tinside: Prism.languages.yaml\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'blockquote': {\n\t\t\t// > ...\n\t\t\tpattern: /^>(?:[\\t ]*>)*/m,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'table': {\n\t\t\tpattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n\t\t\tinside: {\n\t\t\t\t'table-data-rows': {\n\t\t\t\t\tpattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'table-data': {\n\t\t\t\t\t\t\tpattern: RegExp(tableCell),\n\t\t\t\t\t\t\tinside: Prism.languages.markdown\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': /\\|/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'table-line': {\n\t\t\t\t\tpattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'punctuation': /\\||:?-{3,}:?/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'table-header-row': {\n\t\t\t\t\tpattern: RegExp('^' + tableRow + '$'),\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'table-header': {\n\t\t\t\t\t\t\tpattern: RegExp(tableCell),\n\t\t\t\t\t\t\talias: 'important',\n\t\t\t\t\t\t\tinside: Prism.languages.markdown\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': /\\|/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'code': [\n\t\t\t{\n\t\t\t\t// Prefixed by 4 spaces or 1 tab and preceded by an empty line\n\t\t\t\tpattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'keyword'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ```optional language\n\t\t\t\t// code block\n\t\t\t\t// ```\n\t\t\t\tpattern: /^```[\\s\\S]*?^```$/m,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'code-block': {\n\t\t\t\t\t\tpattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'code-language': {\n\t\t\t\t\t\tpattern: /^(```).+/,\n\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t},\n\t\t\t\t\t'punctuation': /```/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'title': [\n\t\t\t{\n\t\t\t\t// title 1\n\t\t\t\t// =======\n\n\t\t\t\t// title 2\n\t\t\t\t// -------\n\t\t\t\tpattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /==+$|--+$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// # title 1\n\t\t\t\t// ###### title 6\n\t\t\t\tpattern: /(^\\s*)#.+/m,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'important',\n\t\t\t\tinside: {\n\t\t\t\t\tpunctuation: /^#+|#+$/\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'hr': {\n\t\t\t// ***\n\t\t\t// ---\n\t\t\t// * * *\n\t\t\t// -----------\n\t\t\tpattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'list': {\n\t\t\t// * item\n\t\t\t// + item\n\t\t\t// - item\n\t\t\t// 1. item\n\t\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n\t\t\tlookbehind: true,\n\t\t\talias: 'punctuation'\n\t\t},\n\t\t'url-reference': {\n\t\t\t// [id]: http://example.com \"Optional title\"\n\t\t\t// [id]: http://example.com 'Optional title'\n\t\t\t// [id]: http://example.com (Optional title)\n\t\t\t// [id]: <http://example.com> \"Optional title\"\n\t\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n\t\t\tinside: {\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n\t\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n\t\t\t},\n\t\t\talias: 'url'\n\t\t},\n\t\t'bold': {\n\t\t\t// **strong**\n\t\t\t// __strong__\n\n\t\t\t// allow one nested instance of italic text using the same delimiter\n\t\t\tpattern: createInline(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^..)[\\s\\S]+(?=..$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /\\*\\*|__/\n\t\t\t}\n\t\t},\n\t\t'italic': {\n\t\t\t// *em*\n\t\t\t// _em_\n\n\t\t\t// allow one nested instance of bold text using the same delimiter\n\t\t\tpattern: createInline(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^.)[\\s\\S]+(?=.$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /[*_]/\n\t\t\t}\n\t\t},\n\t\t'strike': {\n\t\t\t// ~~strike through~~\n\t\t\t// ~strike~\n\t\t\t// eslint-disable-next-line regexp/strict\n\t\t\tpattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'punctuation': /~~?/\n\t\t\t}\n\t\t},\n\t\t'code-snippet': {\n\t\t\t// `code`\n\t\t\t// ``code``\n\t\t\tpattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\talias: ['code', 'keyword']\n\t\t},\n\t\t'url': {\n\t\t\t// [example](http://example.com \"Optional title\")\n\t\t\t// [example][id]\n\t\t\t// [example] [id]\n\t\t\tpattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'operator': /^!/,\n\t\t\t\t'content': {\n\t\t\t\t\tpattern: /(^\\[)[^\\]]+(?=\\])/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\tinside: {} // see below\n\t\t\t\t},\n\t\t\t\t'variable': {\n\t\t\t\t\tpattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'url': {\n\t\t\t\t\tpattern: /(^\\]\\()[^\\s)]+/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t},\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n\t\t['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(function (inside) {\n\t\t\tif (token !== inside) {\n\t\t\t\tPrism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n\t\t\t}\n\t\t});\n\t});\n\n\tPrism.hooks.add('after-tokenize', function (env) {\n\t\tif (env.language !== 'markdown' && env.language !== 'md') {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction walkTokens(tokens) {\n\t\t\tif (!tokens || typeof tokens === 'string') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, l = tokens.length; i < l; i++) {\n\t\t\t\tvar token = tokens[i];\n\n\t\t\t\tif (token.type !== 'code') {\n\t\t\t\t\twalkTokens(token.content);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n\t\t\t\t * is optional. But the grammar is defined so that there is only one case we have to handle:\n\t\t\t\t *\n\t\t\t\t * token.content = [\n\t\t\t\t * <span class=\"punctuation\">```</span>,\n\t\t\t\t * <span class=\"code-language\">xxxx</span>,\n\t\t\t\t * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n\t\t\t\t * <span class=\"code-block\">...</span>,\n\t\t\t\t * '\\n', // exactly one new lines again\n\t\t\t\t * <span class=\"punctuation\">```</span>\n\t\t\t\t * ];\n\t\t\t\t */\n\n\t\t\t\tvar codeLang = token.content[1];\n\t\t\t\tvar codeBlock = token.content[3];\n\n\t\t\t\tif (codeLang && codeBlock &&\n\t\t\t\t\tcodeLang.type === 'code-language' && codeBlock.type === 'code-block' &&\n\t\t\t\t\ttypeof codeLang.content === 'string') {\n\n\t\t\t\t\t// this might be a language that Prism does not support\n\n\t\t\t\t\t// do some replacements to support C++, C#, and F#\n\t\t\t\t\tvar lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp');\n\t\t\t\t\t// only use the first word\n\t\t\t\t\tlang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n\t\t\t\t\tvar alias = 'language-' + lang;\n\n\t\t\t\t\t// add alias\n\t\t\t\t\tif (!codeBlock.alias) {\n\t\t\t\t\t\tcodeBlock.alias = [alias];\n\t\t\t\t\t} else if (typeof codeBlock.alias === 'string') {\n\t\t\t\t\t\tcodeBlock.alias = [codeBlock.alias, alias];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcodeBlock.alias.push(alias);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twalkTokens(env.tokens);\n\t});\n\n\tPrism.hooks.add('wrap', function (env) {\n\t\tif (env.type !== 'code-block') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar codeLang = '';\n\t\tfor (var i = 0, l = env.classes.length; i < l; i++) {\n\t\t\tvar cls = env.classes[i];\n\t\t\tvar match = /language-(.+)/.exec(cls);\n\t\t\tif (match) {\n\t\t\t\tcodeLang = match[1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar grammar = Prism.languages[codeLang];\n\n\t\tif (!grammar) {\n\t\t\tif (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n\t\t\t\tvar id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n\t\t\t\tenv.attributes['id'] = id;\n\n\t\t\t\tPrism.plugins.autoloader.loadLanguages(codeLang, function () {\n\t\t\t\t\tvar ele = document.getElementById(id);\n\t\t\t\t\tif (ele) {\n\t\t\t\t\t\tele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tenv.content = Prism.highlight(textContent(env.content), grammar, codeLang);\n\t\t}\n\t});\n\n\tvar tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi');\n\n\t/**\n\t * A list of known entity names.\n\t *\n\t * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n\t *\n\t * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n\t */\n\tvar KNOWN_ENTITY_NAMES = {\n\t\t'amp': '&',\n\t\t'lt': '<',\n\t\t'gt': '>',\n\t\t'quot': '\"',\n\t};\n\n\t// IE 11 doesn't support `String.fromCodePoint`\n\tvar fromCodePoint = String.fromCodePoint || String.fromCharCode;\n\n\t/**\n\t * Returns the text content of a given HTML source code string.\n\t *\n\t * @param {string} html\n\t * @returns {string}\n\t */\n\tfunction textContent(html) {\n\t\t// remove all tags\n\t\tvar text = html.replace(tagPattern, '');\n\n\t\t// decode known entities\n\t\ttext = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n\t\t\tcode = code.toLowerCase();\n\n\t\t\tif (code[0] === '#') {\n\t\t\t\tvar value;\n\t\t\t\tif (code[1] === 'x') {\n\t\t\t\t\tvalue = parseInt(code.slice(2), 16);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = Number(code.slice(1));\n\t\t\t\t}\n\n\t\t\t\treturn fromCodePoint(value);\n\t\t\t} else {\n\t\t\t\tvar known = KNOWN_ENTITY_NAMES[code];\n\t\t\t\tif (known) {\n\t\t\t\t\treturn known;\n\t\t\t\t}\n\n\t\t\t\t// unable to decode\n\t\t\t\treturn m;\n\t\t\t}\n\t\t});\n\n\t\treturn text;\n\t}\n\n\tPrism.languages.md = Prism.languages.markdown;\n\n}(Prism));\n","import anime from 'animejs/lib/anime.es.js';\nconst notifcation = document.querySelector('.notify-message');\nconst notify = document.getElementById('notify-message');\nconst responseText = document.querySelector('.response-text');\nconst notifyText = document.querySelector('.notify-text');\nconst notifyIcons = document.querySelector('.notify-icons');\n//const notifyProgress = document.getElementById('notify-progress');\nconst iconGood = document.querySelector('.notify-good');\nconst iconNotGood = document.querySelector('.notify-notgood');\nconst iconWorking = document.querySelector('.notify-working');\n\nexport default class Notfications {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\n\talert(text, status) {\n\t\ticonWorking.style.display = 'none';\n\t\ticonGood.style.display = 'none';\n\t\ticonNotGood.style.display = 'none';\n\n\t\tvar color = '';\n\t\tresponseText.innerHTML = text;\n\t\tif (status !== null) {\n\t\t\tif (status) {\n\t\t\t\tcolor = '#32cd32';\n\t\t\t\ticonWorking.style.display = 'none';\n\t\t\t\ticonGood.style.display = 'block';\n\t\t\t} else {\n\t\t\t\tcolor = '#F64747';\n\t\t\t\ticonWorking.style.display = 'none';\n\t\t\t\ticonNotGood.style.display = 'block';\n\t\t\t}\n\t\t} else {\n\t\t\tcolor = '#200317';\n\t\t\ticonWorking.style.display = 'block';\n\t\t}\n\n\t\tnew anime({\n\t\t\ttargets: document.querySelector('.top-nav'),\n\t\t\trotateX: '180deg',\n\t\t\teasing: 'easeOutQuint'\n\t\t});\n\n\t\tnew anime({\n\t\t\ttargets: document.querySelector('.notify'),\n\t\t\trotateX: '10deg',\n\t\t\teasing: 'easeOutQuint',\n\t\t\tcomplete: () => {\n\t\t\t\tnew anime({\n\t\t\t\t\ttargets: notifyIcons,\n\t\t\t\t\twidth: 39,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\teasing: 'easeInQuint',\n\t\t\t\t\tduration: 300\n\t\t\t\t});\n\n\t\t\t\tnew anime({\n\t\t\t\t\ttargets: notifyText,\n\t\t\t\t\tbackgroundColor: color,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\teasing: 'easeInOutQuad',\n\t\t\t\t\tduration: 400,\n\t\t\t\t\tcomplete: () => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tif (status !== null) {\n\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\ttargets: notifyText,\n\t\t\t\t\t\t\t\t\tbackgroundColor: color,\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\teasing: 'easeInOutQuad',\n\t\t\t\t\t\t\t\t\tduration: 400\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\ttargets: notifyIcons,\n\t\t\t\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\teasing: 'easeOutQuint',\n\t\t\t\t\t\t\t\t\tduration: 350\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tnew anime({\n\t\t\t\t\t\t\t\t\ttargets: document.querySelector('.top-nav'),\n\t\t\t\t\t\t\t\t\trotateX: '0deg',\n\t\t\t\t\t\t\t\t\teasing: 'easeOutQuint'\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tnew anime({\n\t\t\t\t\t\t\t\t\ttargets: document.querySelector('.notify'),\n\t\t\t\t\t\t\t\t\trotateX: '180deg',\n\t\t\t\t\t\t\t\t\teasing: 'easeOutQuint'\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 2500);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import Sortable from 'sortablejs';\nimport anime from 'animejs/lib/anime.es.js';\nimport DataUtils from '../utils/DataUtils';\nimport Notfications from './Notifications.js';\nimport Maintenance from '../controllers/MaintenanceManager';\nconst notify = new Notfications();\n\nexport default class FileManager {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor(upload, input, imageList, fileList) {\n\t\tthis.mm = new Maintenance(null, null, document.getElementById('notify-progress'));\n\t\tthis.upload = upload;\n\t\tthis.input = input;\n\t\tthis.imageList = imageList;\n\t\tthis.fileList = fileList;\n\t\tthis.accetableFiles = [\n\t\t\t'image/jpeg',\n\t\t\t'image/gif',\n\t\t\t'image/png',\n\t\t\t'image/svg',\n\t\t\t'audio/mpeg',\n\t\t\t'video/mp4',\n\t\t\t'application/pdf',\n\t\t\t'text/plain',\n\t\t\t'text/rtf'\n\t\t];\n\t\tthis.files = [];\n\t\tthis.sortedFiles = [];\n\t\tthis.storage = [];\n\t\tthis.mediaSort = Sortable.create(this.imageList, {\n\t\t\tanimation: 150,\n\t\t\tonUpdate: () => {\n\t\t\t\t//notify.alert('REINDEXING MEDIA', null);\n\t\t\t\t//this.updateFiles();\n\t\t\t}\n\t\t});\n\t\tthis.fileSort = Sortable.create(this.fileList, {\n\t\t\tanimation: 150,\n\t\t\tonUpdate: () => {\n\t\t\t\t//notify.alert('REINDEXING FILES', null);\n\t\t\t\t//this.updateFiles();\n\t\t\t}\n\t\t});\n\t\tthis.start();\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {\n\t\tthis.upload.addEventListener('dragover', e => this.handleFileActions(e), false);\n\t\tthis.upload.addEventListener('drop', e => this.handleFileActions(e), false);\n\t\tthis.input.addEventListener('change', e => this.handleFileActions(e), false);\n\t\tvar removeMedia = document.querySelectorAll('.media-remove');\n\t\tfor (var i = 0, length = removeMedia.length; i < length; i++) {\n\t\t\tremoveMedia[i].addEventListener(\n\t\t\t\t'click',\n\t\t\t\te => this.removeFile(e, 'media'),\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\t}\n\tgetFileOrder() {\n\t\tlet imgList = '';\n\t\tlet fileList = '';\n\t\tfor (var i = 0, length = this.imageList.childNodes.length; i < length; i++) {\n\t\t\tlet div = this.imageList.childNodes[i];\n\t\t\timgList = imgList + div.getAttribute('data-source') + ',';\n\t\t}\n\t\tfor (var i = 0, length = this.fileList.childNodes.length; i < length; i++) {\n\t\t\tlet div = this.fileList.childNodes[i];\n\t\t\tfileList = fileList + div.getAttribute('data-source') + ',';\n\t\t}\n\t\tlet media = { images: imgList, files: fileList };\n\t\treturn media;\n\t}\n\n\tsortFiles(files) {\n\t\tvar self = this;\n\t\tfor (var i = 0, file; (file = files[i]); i++) {\n\t\t\tvar reader = new FileReader();\n\t\t\t// Closure to capture the file information\n\t\t\treader.onload = (theFile => {\n\t\t\t\treturn function (f) {\n\t\t\t\t\t//create remove button object\n\t\t\t\t\tvar remove = document.createElement('button');\n\t\t\t\t\tvar removeIcon = document.createElement('i');\n\t\t\t\t\tremoveIcon.classList.add('ti', 'ti-x');\n\t\t\t\t\tremove.className = 'media-remove';\n\t\t\t\t\tremove.appendChild(removeIcon);\n\t\t\t\t\t//remove.setAttribute('id', mediaCount);\n\t\t\t\t\tremove.addEventListener(\n\t\t\t\t\t\t'click',\n\t\t\t\t\t\te => self.removeFile(e, 'media'),\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\n\t\t\t\t\t//upload the file\n\t\t\t\t\tlet upload = new FormData();\n\t\t\t\t\tupload.enctype = 'multipart/form-data';\n\t\t\t\t\tupload.append('upload_files[]', theFile, theFile.name);\n\t\t\t\t\tlet item = null;\n\t\t\t\t\tlet progress = null;\n\n\t\t\t\t\t// sort files\n\t\t\t\t\tswitch (theFile.type) {\n\t\t\t\t\t\tcase 'image/jpg':\n\t\t\t\t\t\tcase 'image/jpeg':\n\t\t\t\t\t\tcase 'image/gif':\n\t\t\t\t\t\tcase 'image/svg':\n\t\t\t\t\t\tcase 'image/png':\n\t\t\t\t\t\t\titem = self.itemFactory('img-item');\n\t\t\t\t\t\t\tprogress = document.getElementById(\n\t\t\t\t\t\t\t\t'pgs' + item.getAttribute('id')\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tself.mm\n\t\t\t\t\t\t\t\t.filesUpload(theFile.type, upload, progress)\n\t\t\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\t\t\titem.setAttribute('data-source', result.filePath);\n\t\t\t\t\t\t\t\t\titem.style.background =\n\t\t\t\t\t\t\t\t\t\t'url(' +\n\t\t\t\t\t\t\t\t\t\tf.target.result +\n\t\t\t\t\t\t\t\t\t\t') no-repeat center center / cover';\n\t\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\t\ttargets: progress,\n\t\t\t\t\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\t\t\t\t\teasing: 'easeInOutQuint',\n\t\t\t\t\t\t\t\t\t\tduration: 1000,\n\t\t\t\t\t\t\t\t\t\tcomplete: () => {\n\t\t\t\t\t\t\t\t\t\t\titem.removeChild(progress);\n\t\t\t\t\t\t\t\t\t\t\titem.appendChild(remove);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'video/mp4':\n\t\t\t\t\t\t\titem = self.itemFactory('video-item');\n\t\t\t\t\t\t\tprogress = document.getElementById(\n\t\t\t\t\t\t\t\t'pgs' + item.getAttribute('id')\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tself.mm\n\t\t\t\t\t\t\t\t.filesUpload(theFile.type, upload, progress)\n\t\t\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\t\t\titem.setAttribute('data-source', result.filePath);\n\t\t\t\t\t\t\t\t\tlet video = document.createElement('video');\n\t\t\t\t\t\t\t\t\tlet source = document.createElement('source');\n\t\t\t\t\t\t\t\t\tsource.src = f.target.result;\n\t\t\t\t\t\t\t\t\tvideo.appendChild(source);\n\t\t\t\t\t\t\t\t\titem.appendChild(video);\n\t\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\t\ttargets: progress,\n\t\t\t\t\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\t\t\t\t\teasing: 'easeInOutQuint',\n\t\t\t\t\t\t\t\t\t\tduration: 1000,\n\t\t\t\t\t\t\t\t\t\tcomplete: () => {\n\t\t\t\t\t\t\t\t\t\t\titem.removeChild(progress);\n\t\t\t\t\t\t\t\t\t\t\titem.appendChild(remove);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'audio/mpeg':\n\t\t\t\t\t\t\titem = self.itemFactory('audio-item');\n\t\t\t\t\t\t\tprogress = document.getElementById(\n\t\t\t\t\t\t\t\t'pgs' + item.getAttribute('id')\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tself.mm\n\t\t\t\t\t\t\t\t.filesUpload(theFile.type, upload, progress)\n\t\t\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\t\t\titem.setAttribute('data-source', result.filePath);\n\t\t\t\t\t\t\t\t\tlet audio = document.createElement('audio');\n\t\t\t\t\t\t\t\t\taudio.setAttribute('controls', true);\n\t\t\t\t\t\t\t\t\tlet source = document.createElement('source');\n\t\t\t\t\t\t\t\t\tsource.src = f.target.result;\n\t\t\t\t\t\t\t\t\taudio.appendChild(source);\n\t\t\t\t\t\t\t\t\titem.appendChild(audio);\n\t\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\t\ttargets: progress,\n\t\t\t\t\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\t\t\t\t\teasing: 'easeInOutQuint',\n\t\t\t\t\t\t\t\t\t\tduration: 1000,\n\t\t\t\t\t\t\t\t\t\tcomplete: () => {\n\t\t\t\t\t\t\t\t\t\t\titem.removeChild(progress);\n\t\t\t\t\t\t\t\t\t\t\titem.appendChild(remove);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'application/pdf':\n\t\t\t\t\t\tcase 'text/plain':\n\t\t\t\t\t\tcase 'text/rtf':\n\t\t\t\t\t\t\titem = self.itemFactory('file-item');\n\t\t\t\t\t\t\tprogress = document.getElementById(\n\t\t\t\t\t\t\t\t'pgs' + item.getAttribute('id')\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tself.mm\n\t\t\t\t\t\t\t\t.filesUpload(theFile.type, upload, progress)\n\t\t\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\t\t\titem.setAttribute('data-source', result.filePath);\n\t\t\t\t\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\t\t\t\t\tlink.href = result.filePath;\n\t\t\t\t\t\t\t\t\tlink.innerHTML = result.fileName;\n\t\t\t\t\t\t\t\t\titem.appendChild(link);\n\t\t\t\t\t\t\t\t\tanime({\n\t\t\t\t\t\t\t\t\t\ttargets: progress,\n\t\t\t\t\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\t\t\t\t\teasing: 'easeInOutQuint',\n\t\t\t\t\t\t\t\t\t\tduration: 1000,\n\t\t\t\t\t\t\t\t\t\tcomplete: () => {\n\t\t\t\t\t\t\t\t\t\t\titem.removeChild(progress);\n\t\t\t\t\t\t\t\t\t\t\titem.appendChild(remove);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})(file);\n\t\t\t// Read in the image file as a data URL.\n\t\t\treader.readAsDataURL(file);\n\t\t}\n\t}\n\titemFactory(type = null) {\n\t\t//get counts for lists\n\t\tvar mediaCount = this.imageList.childNodes.length;\n\t\tvar fileCount = this.fileList.childNodes.length;\n\t\tif (mediaCount < 0) mediaCount = 0;\n\t\tif (fileCount < 0) fileCount = 0;\n\t\tvar item = document.createElement('div');\n\t\titem.className = type;\n\t\tvar progress = document.createElement('div');\n\t\tprogress.className = 'item-progress';\n\t\titem.appendChild(progress);\n\n\t\tif (type == 'img-item' || type == 'video-item') {\n\t\t\tthis.imageList.appendChild(item);\n\t\t\tprogress.setAttribute('id', 'pgs' + mediaCount);\n\t\t\titem.setAttribute('id', mediaCount);\n\t\t} else {\n\t\t\tthis.fileList.appendChild(item);\n\t\t\tprogress.setAttribute('id', 'pgs' + fileCount);\n\t\t\titem.setAttribute('id', fileCount);\n\t\t}\n\t\treturn item;\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\tremoveFile(e) {\n\t\tvar item = e.target.parentNode.parentNode;\n\t\tswitch (item.className) {\n\t\t\tcase 'img-item':\n\t\t\tcase 'video-item':\n\t\t\t\tthis.imageList.removeChild(item);\n\t\t\t\tbreak;\n\t\t\tcase 'audio-item':\n\t\t\tcase 'file-item':\n\t\t\t\tthis.fileList.removeChild(item);\n\t\t\t\tbreak;\n\t\t}\n\t\tnotify.alert('File Removed!', true);\n\t}\n\n\thandleFileActions(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet self = this;\n\t\tlet rawList = [];\n\t\tlet sortedList = [];\n\t\tlet notOnTheList = [];\n\n\t\tswitch (e.type) {\n\t\t\tcase 'dragover':\n\t\t\t\te.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.\n\t\t\t\tbreak;\n\t\t\tcase 'change':\n\t\t\tcase 'drop':\n\t\t\t\te.type == 'drop'\n\t\t\t\t\t? (rawList = e.dataTransfer.files)\n\t\t\t\t\t: (rawList = e.target.files);\n\t\t\t\tfor (var i = 0, f; (f = rawList[i]); i++) {\n\t\t\t\t\t// check witch files are cool to upload\n\t\t\t\t\tif (this.accetableFiles.includes(f.type)) {\n\t\t\t\t\t\tsortedList.push(f);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotOnTheList.push(f);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//send for sorting\n\t\t\t\tself.sortFiles(sortedList);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","/**!\n * Sortable 1.15.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import SettingsActions from '../actions/SettingsActions';\nimport Maintenance from './MaintenanceManager';\nimport FipamoAdminAPI, { TASK_SYNC_SETTNIGS } from '../../libraries/FipamoAdminAPI';\nimport * as DataEvent from '../../../src/com/events/DataEvent';\nimport Mailer from '../actions/Mailer';\nimport Notifications from '../ui/Notifications';\nconst notify = new Notifications();\nexport default class SettingsIndex {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.processing = false;\n\t\tthis.start();\n\t\tthis.admin = new FipamoAdminAPI(null);\n\t\tthis.mm = new Maintenance(null, null);\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {\n\t\tlet self = this;\n\t\t//handle save button\n\t\tdocument.getElementById('save-toggle').addEventListener('click', () =>\n\t\t\tnew SettingsActions()\n\t\t\t\t.getInfo()\n\t\t\t\t.then(data => {\n\t\t\t\t\tnotify.alert('Saving Settings', null);\n\t\t\t\t\tself.admin.sync(TASK_SYNC_SETTNIGS, data).then(r => {\n\t\t\t\t\t\tif (r.type == DataEvent.SETTINGS_UPDATED) {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\t//console.log(err);\n\t\t\t\t})\n\t\t);\n\t\t//handle set up image uploads\n\t\tdocument.querySelector('.avatar').addEventListener('click', () => {\n\t\t\tdocument.getElementById('avatar-upload').click();\n\t\t});\n\t\tdocument.querySelector('.background').addEventListener('click', () => {\n\t\t\tdocument.getElementById('background-upload').click();\n\t\t});\n\t\tdocument.getElementById('avatar-upload').addEventListener(\n\t\t\t'change',\n\t\t\te => {\n\t\t\t\tself.handleImageUpload(e.target.id, e.target.files);\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\tdocument.getElementById('background-upload').addEventListener(\n\t\t\t'change',\n\t\t\te => {\n\t\t\t\tself.handleImageUpload(e.target.id, e.target.files);\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t\t//handle api access toggle\n\t\tvar apiButton = document.getElementById('api-access-toggle');\n\t\tvar apiStatus = document.getElementById('api-status');\n\t\tapiButton.addEventListener('click', e => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tif (apiButton.getAttribute('data-enabled') == 'false') {\n\t\t\t\tapiButton.setAttribute('data-enabled', 'true');\n\t\t\t\tapiStatus.innerHTML = 'API ACCESS IS ENABLED';\n\t\t\t} else {\n\t\t\t\tapiButton.setAttribute('data-enabled', 'false');\n\t\t\t\tapiStatus.innerHTML = 'API ACCESS IS DISABLED';\n\t\t\t}\n\t\t});\n\n\t\t//handle dynamic page rendering\n\t\tvar dynamicRenderButton = document.getElementById('dynamic-render-toggle');\n\t\tvar dynamicRenderStatus = document.getElementById('dynamic-render-status');\n\t\tdynamicRenderButton.addEventListener('click', e => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tif (dynamicRenderButton.getAttribute('data-enabled') == 'false') {\n\t\t\t\tdynamicRenderButton.setAttribute('data-enabled', 'true');\n\t\t\t\tdynamicRenderStatus.innerHTML = 'DYNAMIC PAGE RENDERING';\n\t\t\t} else {\n\t\t\t\tdynamicRenderButton.setAttribute('data-enabled', 'false');\n\t\t\t\tdynamicRenderStatus.innerHTML = 'STATIC PAGE RENDERING';\n\t\t\t}\n\t\t});\n\n\t\tdocument\n\t\t\t.getElementById('send-mail')\n\t\t\t.addEventListener('click', e => this.handleMailer(e));\n\t\tdocument\n\t\t\t.getElementById('publish-pages')\n\t\t\t.addEventListener('click', e => this.handlePublished(e));\n\t\t//handle page render on save toggle\n\t\tdocument\n\t\t\t.getElementById('render-toggle')\n\t\t\t.addEventListener('click', e => this.toggleRender(e));\n\t\t//handle theme toggle\n\t\tlet themeBtns = document.querySelectorAll('.theme-select');\n\t\tfor (var i = 0, length = themeBtns.length; i < length; i++) {\n\t\t\tthemeBtns[i].addEventListener('click', e => this.handleThemes(e));\n\t\t}\n\t\t//handle mail options\n\t\tlet mailBtn = document.querySelectorAll('.mail-option');\n\t\tfor (i = 0, length = mailBtn.length; i < length; i++) {\n\t\t\tmailBtn[i].addEventListener('click', e => this.handleMailOptions(e));\n\t\t}\n\t\t//handle backup from settings [disabled]\n\n\t\tdocument\n\t\t\t.getElementById('create-backup')\n\t\t\t.addEventListener('click', e => this.handleBackup(e));\n\n\t\t/*\n document\n .getElementById(\"reindex-pages\")\n .addEventListener(\"click\", (e) => this.handleReindex(e));\n */\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\ttogglePrivacy(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tif (e.target.getAttribute('data-private') == 'false') {\n\t\t\te.target.setAttribute('data-private', 'true');\n\t\t\te.target.innerHTML = 'SITE IS PUBLIC';\n\t\t} else {\n\t\t\te.target.setAttribute('data-private', 'false');\n\t\t\te.target.innerHTML = 'SITE IS PRIVATE';\n\t\t}\n\t}\n\ttoggleRender(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet button = document.getElementById('render-toggle');\n\t\tif (button.getAttribute('data-render') == 'false') {\n\t\t\tbutton.setAttribute('data-render', 'true');\n\t\t\t//e.target.innerHTML = 'RENDER PAGES ON SAVE';\n\t\t} else {\n\t\t\tbutton.setAttribute('data-render', 'false');\n\t\t\t//e.target.innerHTML = \"DON'T RENDER PAGES ON SAVE\";\n\t\t}\n\t}\n\thandleMailer() {\n\t\tlet mailer = new Mailer();\n\t\tmailer.testMail();\n\t\t//mailer.sendMail();\n\t}\n\thandleThemes(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tlet themes = document.querySelectorAll('.theme-select');\n\t\tfor (var i = 0, length = themes.length; i < length; i++) {\n\t\t\te.target.id == themes[i].id\n\t\t\t\t? themes[i].setAttribute('data-enabled', 'true')\n\t\t\t\t: themes[i].setAttribute('data-enabled', 'false');\n\t\t}\n\t}\n\thandleMailOptions(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tlet smtp = document.getElementById('mail-smtp');\n\t\tlet mailgun = document.getElementById('mail-mg');\n\t\tlet mail = document.querySelectorAll('.mail-option');\n\t\tfor (var i = 0, length = mail.length; i < length; i++) {\n\t\t\tif (e.target.id == mail[i].id) {\n\t\t\t\tmail[i].setAttribute('data-enabled', 'true');\n\t\t\t\tif (e.target.id == 'option-smtp') {\n\t\t\t\t\tsmtp.setAttribute('data-enabled', 'true');\n\t\t\t\t\tmailgun.setAttribute('data-enabled', 'false');\n\t\t\t\t} else if (e.target.id == 'option-none') {\n\t\t\t\t\tsmtp.setAttribute('data-enabled', 'false');\n\t\t\t\t\tmailgun.setAttribute('data-enabled', 'false');\n\t\t\t\t} else {\n\t\t\t\t\tsmtp.setAttribute('data-enabled', 'false');\n\t\t\t\t\tmailgun.setAttribute('data-enabled', 'true');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmail[i].setAttribute('data-enabled', 'false');\n\t\t\t}\n\t\t}\n\t}\n\thandleImageUpload(type, files) {\n\t\tnotify.alert('Uploading Image... ', null);\n\t\tlet self = this;\n\t\tnotify.alert('Uploading Image', null);\n\t\tlet upload = new FormData();\n\t\tupload.enctype = 'multipart/form-data';\n\t\tupload.append('source', type);\n\t\tupload.append('upload_files[]', files[0], files[0].name);\n\n\t\tthis.mm\n\t\t\t.filesUpload(files[0].type, upload)\n\t\t\t.then(r => {\n\t\t\t\tif (type == 'avatar-upload') {\n\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\tdocument.querySelector('[role=\"avatar\"]').style.background =\n\t\t\t\t\t\t'url(' + r.filePath + ') no-repeat center center / cover';\n\t\t\t\t} else {\n\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\tdocument.querySelector('[role=\"background\"]').style.background =\n\t\t\t\t\t\t'url(' + r.filePath + ') no-repeat center center / cover';\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t//console.log(err)\n\t\t\t});\n\t}\n\thandlePublished(e) {\n\t\tif (this.processing) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tlet self = this;\n\t\tlet task = { task: 'PUBLISH_ALL' };\n\t\tthis.processing = true;\n\t\tnotify.alert('Publishing site...', null);\n\t\tthis.admin\n\t\t\t.publish(task)\n\t\t\t.then(r => {\n\t\t\t\tself.processing = false;\n\t\t\t\tnotify.alert(r.message, true);\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tself.processing = false;\n\t\t\t\tnotify.alert(err, false);\n\t\t\t});\n\t}\n\n\thandleBackup(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tnotify.alert('Creating backup', null);\n\t\tthis.mm\n\t\t\t.backup()\n\t\t\t.then(r => {\n\t\t\t\tnotify.alert(r.message, true);\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tnotify.alert(err, false);\n\t\t\t});\n\t}\n\n\thandleReindex(e) {\n\t\tif (this.processing) return;\n\t\tlet self = this;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tlet task = { task: 'cleanup pages indexes' };\n\t\tthis.processing = true;\n\t\tnotify.alert('Cleaning up page indexes', null);\n\t\tthis.admin\n\t\t\t.handleReindex(task)\n\t\t\t.then(r => {\n\t\t\t\tself.processing = false;\n\t\t\t\tnotify.alert(r.message, true);\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tself.processing = false;\n\t\t\t\tnotify.alert(err, false);\n\t\t\t});\n\t}\n}\n","export default class SettingsActions {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tgetInfo() {\n\t\tlet handle = document.getElementById('settings-handle').value;\n\t\tlet email = document.getElementById('settings-email').value;\n\t\tlet url = document.getElementById('settings-url').value;\n\t\tlet title = document.getElementById('settings-title').value;\n\t\tlet desc = document.getElementById('settings-desc').value;\n\t\t//let privacy = document.getElementById('privacy-toggle').getAttribute('data-private');\n\t\tlet render = document.getElementById('render-toggle').getAttribute('data-render');\n\t\tlet background = document\n\t\t\t.querySelector('[role=\"background\"]')\n\t\t\t.style.backgroundImage.slice(4, -1)\n\t\t\t.replace(/\"/g, '');\n\t\tlet selected = '';\n\t\tlet selects = document.querySelectorAll('.theme-select');\n\t\tlet smtpDomain = document.getElementById('smtp-domain').value;\n\t\tlet smtpEmail = document.getElementById('smtp-email').value;\n\t\tlet smtpPass = document.getElementById('smtp-pass').value;\n\t\tlet mgDomain = document.getElementById('mg-domain').value;\n\t\tlet mgKey = document.getElementById('mg-key').value;\n\t\tlet mailActive = '';\n\t\tlet mailOptions = document.querySelectorAll('.mail-option');\n\t\tlet apiStatus = document\n\t\t\t.getElementById('api-access-toggle')\n\t\t\t.getAttribute('data-enabled');\n\t\tlet dynamicRenderStatus = document\n\t\t\t.getElementById('dynamic-render-toggle')\n\t\t\t.getAttribute('data-enabled');\n\t\tvar i, count;\n\t\tfor (i = 0, count = selects.length; i < count; i++) {\n\t\t\tif (selects[i].getAttribute('data-enabled') == 'true')\n\t\t\t\tselected = selects[i].id;\n\t\t}\n\n\t\tfor (i = 0, count = mailOptions.length; i < count; i++) {\n\t\t\tif (mailOptions[i].getAttribute('data-enabled') == 'true')\n\t\t\t\tmailActive = mailOptions[i].id;\n\t\t}\n\t\tlet settingsData = {\n\t\t\tglobal: {\n\t\t\t\tbase_url: url,\n\t\t\t\ttitle: title,\n\t\t\t\tdescriptions: desc,\n\t\t\t\tbackground: background,\n\t\t\t\tprivate: false,\n\t\t\t\trenderOnSave: render,\n\t\t\t\ttheme: selected,\n\t\t\t\texternalAPI: apiStatus,\n\t\t\t\tdynamicRender: dynamicRenderStatus\n\t\t\t},\n\t\t\tmember: { handle: handle, email: email },\n\t\t\temail: {\n\t\t\t\tactive: mailActive,\n\t\t\t\tsmtp: {\n\t\t\t\t\tdomain: smtpDomain,\n\t\t\t\t\temail: smtpEmail,\n\t\t\t\t\tpassword: smtpPass\n\t\t\t\t},\n\t\t\t\tmailgun: {\n\t\t\t\t\tdomain: mgDomain,\n\t\t\t\t\tkey: mgKey\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn new Promise(function (resolve) {\n\t\t\tresolve(settingsData);\n\t\t});\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","import FipamoAdminAPI from \"../../libraries/FipamoAdminAPI\";\nimport Notficaton from \"../ui/Notifications\";\nconst notify = new Notficaton();\nexport default class Mailer {\n //--------------------------\n // constructor\n //--------------------------\n constructor() {}\n //--------------------------\n // methods\n //--------------------------\n sendMail() {\n let mailData = {\n content: \"This is a test email\"\n };\n let admin = new FipamoAdminAPI();\n admin\n .sendMail(mailData)\n .then((result) => {\n notify.alert(result.message, true);\n })\n .catch((err) => {\n notify.alert(err.message, false);\n });\n }\n testMail() {\n let mailData = {\n content: \"This is a test email\",\n mail_task: \"TESTING\"\n };\n let admin = new FipamoAdminAPI();\n admin\n .sendMail(mailData)\n .then((result) => {\n notify.alert(result.message, true);\n })\n .catch((err) => {\n notify.alert(err.message, false);\n });\n }\n //--------------------------\n // event handlers\n //--------------------------\n}\n","import FipamoAdminAPI, { TASK_SYNC_NAV } from '../../libraries/FipamoAdminAPI';\nimport NavActions from '../actions/NavActions';\nimport * as DataEvent from '../events/DataEvent';\nimport Notifications from '../ui/Notifications';\nimport Sortable from 'sortablejs';\nconst notify = new Notifications();\n\nexport default class NavIndex {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.processing = false;\n\t\tthis.admin = new FipamoAdminAPI(null);\n\t\tthis.start();\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {\n\t\t//grabs elements and makes them sortables\n\t\tlet self = this;\n\t\tSortable.create(document.getElementById('nav-items'), {\n\t\t\tonUpdate: () => {\n\t\t\t\tnew NavActions().syncMenu().then(data => {\n\t\t\t\t\tnotify.alert('Updating Menu', null);\n\t\t\t\t\tself.admin.sync(TASK_SYNC_NAV, data).then(r => {\n\t\t\t\t\t\tif (r.type == DataEvent.MENU_UPDATED) {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tvar nav = document.querySelectorAll('.nav-btn');\n\t\tfor (var i = 0, length = nav.length; i < length; i++) {\n\t\t\tnav[i].addEventListener('click', e => this.handleNavButton(e), false);\n\t\t}\n\t}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleNavButton(e) {\n\t\tif (this.processing) return;\n\t\tlet id = '';\n\t\tlet self = this;\n\t\tswitch (e.target.id) {\n\t\t\tcase 'remove-item':\n\t\t\t\tid = e.target.getAttribute('data-id');\n\t\t\t\tnew NavActions().removeItem(id);\n\t\t\t\tnew NavActions().syncMenu().then(data => {\n\t\t\t\t\tdata.remove = e.target.getAttribute('data-uuid');\n\t\t\t\t\tnotify.alert('Editing Menu', null);\n\t\t\t\t\tself.processing = true;\n\t\t\t\t\tself.admin.sync(TASK_SYNC_NAV, data).then(r => {\n\t\t\t\t\t\tself.processing = false;\n\t\t\t\t\t\tif (r.type == DataEvent.MENU_UPDATED) {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify.alert(r.message, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'edit-item':\n\t\t\t\tself.processing = false;\n\t\t\t\twindow.location =\n\t\t\t\t\t'/dashboard/page/edit/' + e.target.getAttribute('data-id');\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","export default class NavActions {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tsyncMenu() {\n\t\tlet navData = [];\n\t\tlet items = document.getElementById('nav-items').children;\n\t\tfor (let index = 0; index < items.length; index++) {\n\t\t\tnavData.push({\n\t\t\t\ttitle: items[index].getElementsByTagName('label')[0].innerHTML,\n\t\t\t\tid: items[index].id,\n\t\t\t\tslug: items[index].getAttribute('data-slug'),\n\t\t\t\tuuid: items[index].getAttribute('data-uuid'),\n\t\t\t\tpath: items[index].getAttribute('data-path')\n\t\t\t});\n\t\t}\n\n\t\tlet data = { menu: navData, remove: null };\n\t\treturn new Promise(function (resolve) {\n\t\t\tresolve(data);\n\t\t});\n\t}\n\n\tremoveItem(id) {\n\t\tdocument.getElementById('nav-items').removeChild(document.getElementById(id));\n\t}\n\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n}\n","export default class Menu {\n\t//--------------------------\n\t// constructor\n\t//--------------------------\n\tconstructor() {\n\t\tthis.mobile = false;\n\t\tthis.mobileMenu = document.querySelector('.mobile-menu');\n\t\tdocument\n\t\t\t.querySelector('.menu-toggle')\n\t\t\t.addEventListener('click', e => this.handleMobile(e));\n\t}\n\t//--------------------------\n\t// methods\n\t//--------------------------\n\tstart() {}\n\t//--------------------------\n\t// event handlers\n\t//--------------------------\n\thandleMobile(e) {\n\t\tif (this.mobile) {\n\t\t\tthis.mobile = false;\n\t\t\tthis.mobileMenu.style.display = 'none';\n\t\t} else {\n\t\t\tthis.mobile = true;\n\t\t\tthis.mobileMenu.style.display = 'inline';\n\t\t}\n\t}\n}\n"],"names":["Base","document","addEventListener","FipamoAdminAPI","Maintenance","DataUitls","DataEvent","DashManager","Notfications","data","notify","constructor","processing","start","getElementById","querySelector","options","getElementsByClassName","index","length","e","handleOptions","handleLogin","handleSetup","handleRestore","handleReset","self","preventDefault","authForm","formDataToJSON","api","login","then","response","type","REQUEST_LAME","target","innerHTML","message","setTimeout","window","location","catch","err","stopPropagation","setUpForm","mm","create","API_INIT_LAME","form","restore","id","email","value","task","secret","alert","newPass","newPassConfirm","init","style","display","visibility","REQUEST_TYPE_POST","REQUEST_TYPE_GET","REQUEST_TYPE_PUT","REQUEST_TYPE_DELETE","CONTENT_TYPE_JSON","CONTENT_TYPE_FORM","API_STATUS","API_GET_SETTINGS","API_GET_MEMBER_INFO","API_NEW_PAGE","API_EDIT_PAGE","API_DELETE_PAGE","API_SETTINGS_SYNC","API_PUBLISH_PAGES","API_NAV_SYNC","API_REINDEX_PAGES","API_SEND_MAIL","API_LOGIN","AUTH_STATUS","TASK_SETTINGS_WRITE","TASK_PUBLISH_SITE","TASK_PAGE_CREATE","TASK_PAGE_EDIT","TASK_PAGE_DELETE","TASK_SEND_MAIL","TASK_REINDEX_PAGE","TASK_SYNC_SETTNIGS","TASK_SYNC_NAV","TASK_GET_SETTINGS","TASK_GET_MEMBER_INFO","API_ACCESS_GOOD","API_ACCESS_BAD","baseURL","progressBar","percentComplete","status","_request","token","Promise","resolve","reject","remote","key","result","sync","url","publish","pageActions","event","content","sendMail","getInfo","requestURL","eventType","requestType","contentType","requestData","request","XMLHttpRequest","upload","handleLoadProgress","open","onload","JSON","parse","error","setRequestHeader","send","stringify","percent","Math","ceil","loaded","total","width","default","API_INIT","API_RESTORE","API_GET_SECRET","API_RESET_PASS","API_CREATE_BACKUP","API_DOWNLOAD_BACKUP","API_RESTORE_BACKUP","API_UPLOAD_AVATAR","API_UPLOAD_BACKGROUND","API_IMAGE_UPLOAD","API_FILES_UPLOAD","TASK_SITE_INIT","TASK_BACKUP_RESTORE","TASK_BACKUP_CREATE","TASK_GET_SECRET","TASK_RESET_PASS","TASK_UPLOAD_FILES","MaintenanceManager","accetableFiles","method","FormData","backup","filesUpload","files","progress","append","r","DataUtils","imgLoad","responseType","Error","statusText","onerror","loadImage","src","myImage","Image","crossOrigin","imageURL","URL","createObjectURL","object","formData","forEach","hasOwnProperty","Array","isArray","push","REQUEST_GOOD","API_REQUEST_GOOD","API_REQUEST_LAME","IMG_REQUEST_GOOD","IMG_REQUEST_LAME","SETTINGS_LOADED","POST_IMAGE_ADDED","FEATURE_IMAGE_ADDED","PAGE_ERROR","PAGE_ADDED","PAGE_UPDATED","PAGE_DELETED","PAGES_RENDERED","PAGES_NOT_RENDERED","TAG_PAGES_RENDERED","TAG_PAGES_NOT_RENDERED","SETTINGS_UPDATED","SETTINGS_NOT_UPDATED","MENU_ADD_ITEM","MENU_DELETE_ITEM","MENU_UPDATED","AVATAR_UPLOADED","SITE_BACKGROUND_UPLOADED","UPLOAD_PROGRESS","API_PAGE_WRITE","API_PAGE_CREATE","API_PAGE_DELETE","API_SETTINGS_WRITE","API_BACKUP_CREATE","API_BACKUP_DOWNLOAD","API_BACKUP_RESTORE","API_IMAGES_UPLOAD","API_RENDER_PAGES","API_INIT_GOOD","SEND_MAIL","PostIndex","SettingsIndex","NaviIndex","Menu","currentDisplay","urlPieces","split","chooseDisplay","section","page","PageEditor","currentPage","choosePage","PageActions","EditorEvent","TextEditor","FileManager","PostEditor","admin","post","postID","postUUID","postLayout","fm","getAttribute","editor","offsetHeight","addListener","EDITOR_DELETE","handleEditorOptions","EDITOR_UPLOAD_POST_IMAGE","EDITOR_UPDATE","EDITOR_SAVE","handleImageUpload","optionButtons","querySelectorAll","i","handlePostOptions","currentOption","active","setAttribute","collectInfo","getFileOrder","confirm","click","enctype","name","filePath","StringUtils","PostActions","pageInfo","pageRef","txt","createElement","html","replace","uuid","layout","current_title","title","created","slug","cleanString","tags","menu","featured","published","form_token","imageList","images","fileList","string","clean","toLowerCase","decodeHTML","quote_style","optTemp","noquotes","toString","OPTS","ENT_NOQUOTES","ENT_HTML_QUOTE_SINGLE","ENT_HTML_QUOTE_DOUBLE","ENT_COMPAT","ENT_QUOTES","ENT_IGNORE","concat","EventEmitter","Prism","textEditor","scrollLimit","console","log","body","fixLimit","scrollTop","classList","add","remove","result_element","text","RegExp","editorHeight","height","highlightElement","scrollLeft","dispatchEvent","Event","setInputs","editorButtons","handleEditorOption","len","selectionStart","end","selectionEnd","insert","substring","selectedText","prompt","link","emitEvent","listeners","Map","label","callback","has","set","get","removeListener","isFunction","obj","reduce","listener","splice","args","anime","notifcation","responseText","notifyText","notifyIcons","iconGood","iconNotGood","iconWorking","color","targets","rotateX","easing","complete","opacity","duration","backgroundColor","Sortable","input","sortedFiles","storage","mediaSort","animation","onUpdate","fileSort","handleFileActions","removeMedia","removeFile","imgList","childNodes","div","media","sortFiles","file","reader","FileReader","theFile","f","removeIcon","className","appendChild","item","itemFactory","background","removeChild","video","source","audio","href","fileName","readAsDataURL","mediaCount","fileCount","parentNode","rawList","sortedList","notOnTheList","dataTransfer","dropEffect","includes","SettingsActions","Mailer","Notifications","apiButton","apiStatus","dynamicRenderButton","dynamicRenderStatus","handleMailer","handlePublished","toggleRender","themeBtns","handleThemes","mailBtn","handleMailOptions","handleBackup","togglePrivacy","button","mailer","testMail","themes","smtp","mailgun","mail","handleReindex","handle","desc","render","backgroundImage","slice","selected","selects","smtpDomain","smtpEmail","smtpPass","mgDomain","mgKey","mailActive","mailOptions","count","settingsData","global","base_url","descriptions","private","renderOnSave","theme","externalAPI","dynamicRender","member","domain","password","Notficaton","mailData","mail_task","NavActions","NavIndex","syncMenu","nav","handleNavButton","removeItem","navData","items","children","getElementsByTagName","path","mobile","mobileMenu","handleMobile"],"version":3,"file":"dash.js.map","sourceRoot":"../../../"} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico index ab85c7e..e69de29 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/index.php b/public/index.php index c9b721f..1d69f3a 100644 --- a/public/index.php +++ b/public/index.php @@ -1,11 +1,55 @@ <?php -//load Composer Classes -require '../vendor/autoload.php'; -//load Fipamo Classes -require '../brain/_loader.php'; +use Illuminate\Contracts\Http\Kernel; +use Illuminate\Http\Request; -use brain\init\App; +define('LARAVEL_START', microtime(true)); -//start app -new App(); +/* +|-------------------------------------------------------------------------- +| Check If The Application Is Under Maintenance +|-------------------------------------------------------------------------- +| +| If the application is in maintenance / demo mode via the "down" command +| we will load this file so that any pre-rendered content can be shown +| instead of starting the framework, which could cause an exception. +| +*/ + +if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { + require $maintenance; +} + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| this application. We just need to utilize it! We'll simply require it +| into the script here so we don't need to manually load our classes. +| +*/ + +require __DIR__.'/../vendor/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request using +| the application's HTTP kernel. Then, we will send the response back +| to this client's browser, allowing them to enjoy our application. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +$kernel = $app->make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 0000000..846d350 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 0000000..3353350 --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <title>Laravel</title> + + <!-- Fonts --> + <link rel="preconnect" href="https://fonts.bunny.net"> + <link href="https://fonts.bunny.net/css?family=figtree:400,600&display=swap" rel="stylesheet" /> + + <!-- Styles --> + <style> + /* ! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:''}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:Figtree, sans-serif;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.ml-4{margin-left:1rem}.mt-16{margin-top:4rem}.mt-6{margin-top:1.5rem}.mt-4{margin-top:1rem}.-mt-px{margin-top:-1px}.mr-1{margin-right:0.25rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-16{height:4rem}.h-7{height:1.75rem}.h-6{height:1.5rem}.h-5{height:1.25rem}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-16{width:4rem}.w-7{width:1.75rem}.w-6{width:1.5rem}.w-5{width:1.25rem}.max-w-7xl{max-width:80rem}.shrink-0{flex-shrink:0}.scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.items-center{align-items:center}.justify-center{justify-content:center}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.self-center{align-self:center}.rounded-lg{border-radius:0.5rem}.rounded-full{border-radius:9999px}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.bg-dots-darker{background-image:url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(0,0,0,0.07)'/%3E%3C/svg%3E")}.from-gray-700\/50{--tw-gradient-from:rgb(55 65 81 / 0.5);--tw-gradient-to:rgb(55 65 81 / 0);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:rgb(0 0 0 / 0);--tw-gradient-stops:var(--tw-gradient-from), transparent, var(--tw-gradient-to)}.bg-center{background-position:center}.stroke-red-500{stroke:#ef4444}.stroke-gray-400{stroke:#9ca3af}.p-6{padding:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.text-center{text-align:center}.text-right{text-align:right}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-semibold{font-weight:600}.leading-relaxed{line-height:1.625}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-gray-500\/20{--tw-shadow-color:rgb(107 114 128 / 0.2);--tw-shadow:var(--tw-shadow-colored)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.selection\:bg-red-500 *::selection{--tw-bg-opacity:1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.selection\:text-white *::selection{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.selection\:bg-red-500::selection{--tw-bg-opacity:1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.selection\:text-white::selection{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity))}.focus\:rounded-sm:focus{border-radius:0.125rem}.focus\:outline:focus{outline-style:solid}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-red-500:focus{outline-color:#ef4444}.group:hover .group-hover\:stroke-gray-600{stroke:#4b5563}.z-10{z-index: 10}@media (prefers-reduced-motion: no-preference){.motion-safe\:hover\:scale-\[1\.01\]:hover{--tw-scale-x:1.01;--tw-scale-y:1.01;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media (prefers-color-scheme: dark){.dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:bg-gray-800\/50{background-color:rgb(31 41 55 / 0.5)}.dark\:bg-red-800\/20{background-color:rgb(153 27 27 / 0.2)}.dark\:bg-dots-lighter{background-image:url("data:image/svg+xml,%3Csvg width='30' height='30' viewBox='0 0 30 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.22676 0C1.91374 0 2.45351 0.539773 2.45351 1.22676C2.45351 1.91374 1.91374 2.45351 1.22676 2.45351C0.539773 2.45351 0 1.91374 0 1.22676C0 0.539773 0.539773 0 1.22676 0Z' fill='rgba(255,255,255,0.07)'/%3E%3C/svg%3E")}.dark\:bg-gradient-to-bl{background-image:linear-gradient(to bottom left, var(--tw-gradient-stops))}.dark\:stroke-gray-600{stroke:#4b5563}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.dark\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.dark\:ring-inset{--tw-ring-inset:inset}.dark\:ring-white\/5{--tw-ring-color:rgb(255 255 255 / 0.05)}.dark\:hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:stroke-gray-400{stroke:#9ca3af}}@media (min-width: 640px){.sm\:fixed{position:fixed}.sm\:top-0{top:0px}.sm\:right-0{right:0px}.sm\:ml-0{margin-left:0px}.sm\:flex{display:flex}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (min-width: 1024px){.lg\:gap-8{gap:2rem}.lg\:p-8{padding:2rem}} + </style> + </head> + <body class="antialiased"> + <div class="relative sm:flex sm:justify-center sm:items-center min-h-screen bg-dots-darker bg-center bg-gray-100 dark:bg-dots-lighter dark:bg-gray-900 selection:bg-red-500 selection:text-white"> + @if (Route::has('login')) + <div class="sm:fixed sm:top-0 sm:right-0 p-6 text-right z-10"> + @auth + <a href="{{ url('/home') }}" class="font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Home</a> + @else + <a href="{{ route('login') }}" class="font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Log in</a> + + @if (Route::has('register')) + <a href="{{ route('register') }}" class="ml-4 font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Register</a> + @endif + @endauth + </div> + @endif + + <div class="max-w-7xl mx-auto p-6 lg:p-8"> + <div class="flex justify-center"> + <svg viewBox="0 0 62 65" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto bg-gray-100 dark:bg-gray-900"> + <path d="M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z" fill="#FF2D20"/> + </svg> + </div> + + <div class="mt-16"> + <div class="grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8"> + <a href="https://laravel.com/docs" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> + <div> + <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> + <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" /> + </svg> + </div> + + <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Documentation</h2> + + <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> + Laravel has wonderful documentation covering every aspect of the framework. Whether you are a newcomer or have prior experience with Laravel, we recommend reading our documentation from beginning to end. + </p> + </div> + + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> + <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> + </svg> + </a> + + <a href="https://laracasts.com" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> + <div> + <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> + <path stroke-linecap="round" d="M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z" /> + </svg> + </div> + + <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Laracasts</h2> + + <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> + Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. + </p> + </div> + + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> + <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> + </svg> + </a> + + <a href="https://laravel-news.com" class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> + <div> + <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> + <path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z" /> + </svg> + </div> + + <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Laravel News</h2> + + <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> + Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. + </p> + </div> + + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="self-center shrink-0 stroke-red-500 w-6 h-6 mx-6"> + <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" /> + </svg> + </a> + + <div class="scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-gradient-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500"> + <div> + <div class="h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full"> + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" class="w-7 h-7 stroke-red-500"> + <path stroke-linecap="round" stroke-linejoin="round" d="M6.115 5.19l.319 1.913A6 6 0 008.11 10.36L9.75 12l-.387.775c-.217.433-.132.956.21 1.298l1.348 1.348c.21.21.329.497.329.795v1.089c0 .426.24.815.622 1.006l.153.076c.433.217.956.132 1.298-.21l.723-.723a8.7 8.7 0 002.288-4.042 1.087 1.087 0 00-.358-1.099l-1.33-1.108c-.251-.21-.582-.299-.905-.245l-1.17.195a1.125 1.125 0 01-.98-.314l-.295-.295a1.125 1.125 0 010-1.591l.13-.132a1.125 1.125 0 011.3-.21l.603.302a.809.809 0 001.086-1.086L14.25 7.5l1.256-.837a4.5 4.5 0 001.528-1.732l.146-.292M6.115 5.19A9 9 0 1017.18 4.64M6.115 5.19A8.965 8.965 0 0112 3c1.929 0 3.716.607 5.18 1.64" /> + </svg> + </div> + + <h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</h2> + + <p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed"> + Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Forge</a>, <a href="https://vapor.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Vapor</a>, <a href="https://nova.laravel.com" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Nova</a>, and <a href="https://envoyer.io" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-sm focus:outline-red-500">Telescope</a>, and more. + </p> + </div> + </div> + </div> + </div> + + <div class="flex justify-center mt-16 px-0 sm:items-center sm:justify-between"> + <div class="text-center text-sm sm:text-left"> + + </div> + + <div class="text-center text-sm text-gray-500 dark:text-gray-400 sm:text-right sm:ml-0"> + Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) + </div> + </div> + </div> + </div> + </body> +</html> diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/routes/api.php @@ -0,0 +1,19 @@ +<?php + +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Route; + +/* +|-------------------------------------------------------------------------- +| API Routes +|-------------------------------------------------------------------------- +| +| Here is where you can register API routes for your application. These +| routes are loaded by the RouteServiceProvider and all of them will +| be assigned to the "api" middleware group. Make something great! +| +*/ + +Route::middleware('auth:sanctum')->get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,18 @@ +<?php + +use Illuminate\Support\Facades\Broadcast; + +/* +|-------------------------------------------------------------------------- +| Broadcast Channels +|-------------------------------------------------------------------------- +| +| Here you may register all of the event broadcasting channels that your +| application supports. The given channel authorization callbacks are +| used to check if an authenticated user can listen to the channel. +| +*/ + +Broadcast::channel('App.Models.User.{id}', function ($user, $id) { + return (int) $user->id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,19 @@ +<?php + +use Illuminate\Foundation\Inspiring; +use Illuminate\Support\Facades\Artisan; + +/* +|-------------------------------------------------------------------------- +| Console Routes +|-------------------------------------------------------------------------- +| +| This file is where you may define all of your Closure based console +| commands. Each Closure is bound to a command instance allowing a +| simple approach to interacting with each command's IO methods. +| +*/ + +Artisan::command('inspire', function () { + $this->comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 0000000..d259f33 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,18 @@ +<?php + +use Illuminate\Support\Facades\Route; + +/* +|-------------------------------------------------------------------------- +| Web Routes +|-------------------------------------------------------------------------- +| +| Here is where you can register web routes for your application. These +| routes are loaded by the RouteServiceProvider and all of them will +| be assigned to the "web" middleware group. Make something great! +| +*/ + +Route::get('/', function () { + return view('welcome'); +}); diff --git a/src/com/Base.js b/src/com/Base.js deleted file mode 100644 index b247389..0000000 --- a/src/com/Base.js +++ /dev/null @@ -1,211 +0,0 @@ -import FipamoAdminAPI from '../libraries/FipamoAdminAPI'; -import Maintenance from './controllers/MaintenanceManager'; -import DataUitls from './utils/DataUtils'; -import * as DataEvent from './events/DataEvent'; -import DashManager from './controllers/DashManager'; -import Notfications from './ui/Notifications'; -const data = new DataUitls(); -const notify = new Notfications(); - -export default class Base { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.processing = false; - this.start(); - } - - //-------------------------- - // methods - //-------------------------- - - //TODO: Move init functions and set up to their own class - start() { - if ( - document.getElementById('login') || - document.querySelector('[role="site-restore"]') - ) { - var options = document.getElementsByClassName('init-option'); - for (let index = 0; index < options.length; index++) { - options[index].addEventListener('click', e => this.handleOptions(e)); - } - if (document.getElementById('login')) { - document - .getElementById('login-btn') - .addEventListener('click', e => this.handleLogin(e)); - } else { - document - .getElementById('init-blog') - .addEventListener('click', e => this.handleSetup(e)); - document - .getElementById('blog-restore') - .addEventListener('click', e => this.handleRestore(e)); - } - } else if (document.getElementById('dash-reset')) { - document - .getElementById('get-secret-btn') - .addEventListener('click', e => this.handleReset(e)); - - document - .getElementById('reset-btn') - .addEventListener('click', e => this.handleReset(e)); - } else { - new DashManager(); - } - } - //-------------------------- - // event handlers - //-------------------------- - handleLogin(e) { - if (this.processing) return; - let self = this; - e.preventDefault(); - let authForm = data.formDataToJSON(document.getElementById('login')); - //notify.alert('Looking, hold up', null); - let api = new FipamoAdminAPI(); - this.processing = true; - api.login(authForm) - .then(response => { - self.processing = false; - if (response.type === DataEvent.REQUEST_LAME) { - e.target.innerHTML = response.message; - } else { - e.target.innerHTML = response.message; - setTimeout(() => { - window.location = '/dashboard'; - }, 500); - } - }) - .catch(err => { - self.processing = false; - }); - } - - handleSetup(e) { - if (this.processing) return; - let self = this; - e.stopPropagation(); - e.preventDefault(); - let setUpForm = data.formDataToJSON(document.getElementById('init-form')); - let mm = new Maintenance(); - this.processing = true; - mm.create(setUpForm) - .then(response => { - if (response.type === DataEvent.API_INIT_LAME) { - self.processing = false; - e.target.innerHTML = response.message; - } else { - self.processing = false; - e.target.innerHTML = response.message; - setTimeout(() => { - window.location = '/dashboard'; - }, 700); - } - }) - .catch(err => { - self.processing = false; - //notify.alert(err, false); - }); - } - - handleRestore(e) { - if (this.processing) return; - let self = this; - e.stopPropagation(); - e.preventDefault(); - let mm = new Maintenance(); - var form = document.getElementById('init-restore'); - this.processing = true; - mm.restore(form) - .then(response => { - if (response.type === DataEvent.REQUEST_LAME) { - self.processing = false; - e.target.innerHTML = response.message; - } else { - self.processing = false; - e.target.innerHTML = response.message; - setTimeout(() => { - window.location = '/dashboard'; - }, 1500); - } - }) - .catch(err => { - self.processing = false; - e.target.innerHTML = err; - }); - } - - handleReset(e) { - e.stopPropagation(); - e.preventDefault(); - let self = this; - let mm = new Maintenance(); - if (e.target.id == 'get-secret-btn') { - let data = { - email: document.getElementById('email').value, - task: 'retrieveSecret' - }; - this.processing = true; - mm.secret(data) - .then(response => { - self.processing = false; - if (response.secret) { - document.getElementById('secret').value = response.secret; - notify.alert(response.message, true); - } else { - if (response.type == 'mailSent') { - notify.alert(response.message, true); - } else { - notify.alert(response.message, false); - } - } - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - } else { - let data = { - newPass: document.getElementById('new_password').value, - newPassConfirm: document.getElementById('new_password2').value, - secret: document.getElementById('secret').value - }; - mm.newPass(data) - .then(response => { - self.processing = false; - if (response.type == 'passNotCreated') { - notify.alert(response.message, false); - } else { - notify.alert(response.message, true); - setTimeout(() => { - window.location = '/dashboard'; - }, 1000); - } - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - } - } - handleOptions(e) { - e.stopPropagation(); - e.preventDefault(); - let init = document.querySelector('[role="restore-fresh"]'); - let restore = document.querySelector('[role="restore-backup"]'); - if (e.target.id === 'init-switch-restore') { - init.style.display = 'none'; - init.style.visibility = 'hidden'; - - restore.style.display = 'grid'; - restore.style.visibility = 'visible'; - } else { - init.style.display = 'grid'; - init.style.visibility = 'visible'; - - restore.style.display = 'none'; - restore.style.visibility = 'hidden'; - } - } -} diff --git a/src/com/Start.js b/src/com/Start.js deleted file mode 100644 index b843adb..0000000 --- a/src/com/Start.js +++ /dev/null @@ -1,9 +0,0 @@ -import Base from './Base'; - -document.addEventListener( - 'DOMContentLoaded', - function () { - new Base(); - }, - false -); diff --git a/src/com/actions/Mailer.js b/src/com/actions/Mailer.js deleted file mode 100644 index 20e1eb4..0000000 --- a/src/com/actions/Mailer.js +++ /dev/null @@ -1,44 +0,0 @@ -import FipamoAdminAPI from "../../libraries/FipamoAdminAPI"; -import Notficaton from "../ui/Notifications"; -const notify = new Notficaton(); -export default class Mailer { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - sendMail() { - let mailData = { - content: "This is a test email" - }; - let admin = new FipamoAdminAPI(); - admin - .sendMail(mailData) - .then((result) => { - notify.alert(result.message, true); - }) - .catch((err) => { - notify.alert(err.message, false); - }); - } - testMail() { - let mailData = { - content: "This is a test email", - mail_task: "TESTING" - }; - let admin = new FipamoAdminAPI(); - admin - .sendMail(mailData) - .then((result) => { - notify.alert(result.message, true); - }) - .catch((err) => { - notify.alert(err.message, false); - }); - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/actions/NavActions.js b/src/com/actions/NavActions.js deleted file mode 100644 index 638e35b..0000000 --- a/src/com/actions/NavActions.js +++ /dev/null @@ -1,35 +0,0 @@ -export default class NavActions { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - syncMenu() { - let navData = []; - let items = document.getElementById('nav-items').children; - for (let index = 0; index < items.length; index++) { - navData.push({ - title: items[index].getElementsByTagName('label')[0].innerHTML, - id: items[index].id, - slug: items[index].getAttribute('data-slug'), - uuid: items[index].getAttribute('data-uuid'), - path: items[index].getAttribute('data-path') - }); - } - - let data = { menu: navData, remove: null }; - return new Promise(function (resolve) { - resolve(data); - }); - } - - removeItem(id) { - document.getElementById('nav-items').removeChild(document.getElementById(id)); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/actions/PageActions.js b/src/com/actions/PageActions.js deleted file mode 100644 index b1b3cb5..0000000 --- a/src/com/actions/PageActions.js +++ /dev/null @@ -1,53 +0,0 @@ -import StringUtils from '../utils/StringUtils'; -export default class PostActions { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - collectInfo(files) { - return new Promise((resolve, reject) => { - let pageInfo = []; - let pageRef = document.querySelector('[role="file-manager"]'); - //process html content for storage - let txt = document.createElement('textarea'); - txt.innerHTML = document.getElementById('highlight-content').innerHTML; - let html = txt.value; - html = html.replace(/<\/?span[^>]*>/g, ''); //removes prism styling - html = html.replace(/<\/?br[^>]*>/g, '\n'); //convert back to encoded line break for storage - //build data object - pageInfo = { - id: pageRef.getAttribute('data-index'), - uuid: pageRef.getAttribute('data-uuid'), - layout: document.getElementById('page-templates').value, - current_title: pageRef.getAttribute('data-slug'), - content: html, - title: document.getElementById('post-title-text').value, - created: document.getElementById('post-date').getAttribute('data-raw'), - slug: new StringUtils().cleanString( - document.getElementById('post-title-text').value - ), - tags: document.getElementById('post-tags').value, - menu: document - .getElementById('option-menu-pin') - .getAttribute('data-active'), - featured: document - .getElementById('option-feature') - .getAttribute('data-active'), - published: document - .getElementById('option-published') - .getAttribute('data-active'), - form_token: document.getElementById('form_token').value, - imageList: files.images, - fileList: files.files - }; - - resolve(pageInfo); - }); - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/actions/SettingsActions.js b/src/com/actions/SettingsActions.js deleted file mode 100644 index 0b48bd1..0000000 --- a/src/com/actions/SettingsActions.js +++ /dev/null @@ -1,79 +0,0 @@ -export default class SettingsActions { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - getInfo() { - let handle = document.getElementById('settings-handle').value; - let email = document.getElementById('settings-email').value; - let url = document.getElementById('settings-url').value; - let title = document.getElementById('settings-title').value; - let desc = document.getElementById('settings-desc').value; - //let privacy = document.getElementById('privacy-toggle').getAttribute('data-private'); - let render = document.getElementById('render-toggle').getAttribute('data-render'); - let background = document - .querySelector('[role="background"]') - .style.backgroundImage.slice(4, -1) - .replace(/"/g, ''); - let selected = ''; - let selects = document.querySelectorAll('.theme-select'); - let smtpDomain = document.getElementById('smtp-domain').value; - let smtpEmail = document.getElementById('smtp-email').value; - let smtpPass = document.getElementById('smtp-pass').value; - let mgDomain = document.getElementById('mg-domain').value; - let mgKey = document.getElementById('mg-key').value; - let mailActive = ''; - let mailOptions = document.querySelectorAll('.mail-option'); - let apiStatus = document - .getElementById('api-access-toggle') - .getAttribute('data-enabled'); - let dynamicRenderStatus = document - .getElementById('dynamic-render-toggle') - .getAttribute('data-enabled'); - var i, count; - for (i = 0, count = selects.length; i < count; i++) { - if (selects[i].getAttribute('data-enabled') == 'true') - selected = selects[i].id; - } - - for (i = 0, count = mailOptions.length; i < count; i++) { - if (mailOptions[i].getAttribute('data-enabled') == 'true') - mailActive = mailOptions[i].id; - } - let settingsData = { - global: { - base_url: url, - title: title, - descriptions: desc, - background: background, - private: false, - renderOnSave: render, - theme: selected, - externalAPI: apiStatus, - dynamicRender: dynamicRenderStatus - }, - member: { handle: handle, email: email }, - email: { - active: mailActive, - smtp: { - domain: smtpDomain, - email: smtpEmail, - password: smtpPass - }, - mailgun: { - domain: mgDomain, - key: mgKey - } - } - }; - return new Promise(function (resolve) { - resolve(settingsData); - }); - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/controllers/DashManager.js b/src/com/controllers/DashManager.js deleted file mode 100644 index 375012f..0000000 --- a/src/com/controllers/DashManager.js +++ /dev/null @@ -1,44 +0,0 @@ -import PostIndex from './PostIndex'; -import SettingsIndex from './SettingsIndex'; -import NaviIndex from './NavIndex'; -import Menu from '../ui/Menu'; - -export default class DashManager { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.currentDisplay = ''; - this.urlPieces = document.URL.split('/'); - this.chooseDisplay(this.urlPieces[4], this.urlPieces[5]); - //start main menu handler - new Menu(); - } - //-------------------------- - // methods - //-------------------------- - start() {} - - chooseDisplay(section, page) { - this.currentDisplay = ''; - switch (section) { - case 'page': - this.currentDisplay = new PostIndex(page); - break; - case 'settings': - this.currentDisplay = new SettingsIndex(); - break; - case 'navigation': - this.currentDisplay = new NaviIndex(); - break; - - default: - //just chill - break; - } - this.start(); - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/controllers/MaintenanceManager.js b/src/com/controllers/MaintenanceManager.js deleted file mode 100644 index 5de2663..0000000 --- a/src/com/controllers/MaintenanceManager.js +++ /dev/null @@ -1,292 +0,0 @@ -//** REQUEST TYPES **// -export const REQUEST_TYPE_POST = 'POST'; -export const REQUEST_TYPE_GET = 'GET'; -export const REQUEST_TYPE_PUT = 'PUT'; -export const REQUEST_TYPE_DELETE = 'DELETE'; -//** POST CONTENT TYPES **// -export const CONTENT_TYPE_JSON = 'json'; -export const CONTENT_TYPE_FORM = 'x-www-form-urlencoded'; -//** API URLS **// -export const API_STATUS = '/api/v1/status'; -export const API_INIT = '/api/v1/init'; -export const API_RESTORE = '/api/v1/restore'; -export const API_GET_SECRET = '/api/v1/get-secret'; -export const API_RESET_PASS = '/api/v1/reset-password'; -export const API_CREATE_BACKUP = '/api/v1/backup'; -export const API_DOWNLOAD_BACKUP = '/api/v1/backup/download'; -export const API_RESTORE_BACKUP = '/api/v1/backup/restore'; -export const API_UPLOAD_AVATAR = '/api/v1/settings/add-avatar'; -export const API_UPLOAD_BACKGROUND = '/api/v1/settings/add-feature-background'; -export const API_IMAGE_UPLOAD = '/api/v1/page/add-entry-image'; -export const API_FILES_UPLOAD = '/api/v1/files'; -//** API TASKS **// -export const TASK_SITE_INIT = 'blogInit'; -export const TASK_BACKUP_RESTORE = 'restoreBackup'; -export const TASK_BACKUP_CREATE = 'createBackup'; -export const TASK_GET_SECRET = 'retrieveSecret'; -export const TASK_RESET_PASS = 'resetPassword'; -export const TASK_UPLOAD_FILES = 'uploadFiles'; -//** API STATUS **// -export const API_ACCESS_GOOD = 'apiUseAuthorized'; -export const API_ACCESS_BAD = 'apiUseNotAuthorized'; - -/** - * A tub of methods for creating/restoring installs, resetting passwords and uploading images. - */ -class MaintenanceManager { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {string} key - user api key - */ - constructor(baseURL = null, key = null) { - this.accetableFiles = [ - 'image/jpeg', - 'image/gif', - 'image/png', - 'image/svg', - 'audio/mpeg', - 'video/mp4', - 'application/pdf', - 'text/plain', - 'text/rtf' - ]; - this.percentComplete = 0; //for later - this.token = null; - this.baseURL = null; - this.key = null; - if (key) this.key = key; - if (baseURL) this.baseURL = baseURL; - //if key is valid, checks to see if a session is active and returns - this._request( - this.baseURL - ? this.baseURL + API_STATUS + '?key=' + this.key - : API_STATUS + '?key=' + this.key - ).then(response => { - if (response.type === API_ACCESS_GOOD) { - this.token = response.token; - } else { - //don't set token - //console.log("NO TOKEN"); - } - }); - } - - /** - * Promise method used create new site from scratch. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_member_handle - handle for new user - * @property {string} new_member_email - email for new user - * @property {string} new_member_pass - password for new user - * @property {string} new_member_title - title for new user - */ - create(data) { - return new Promise((resolve, reject) => { - this._request( - API_INIT, - null, - TASK_SITE_INIT, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Promise method for restoring site from a previous back up. For local use only. - * @param {object} form - form object that contains restore data and files - * @property {string} restore_member_handle - handle for site user - * @property {string} restore_member_pass - password for site user - * @property {file} backup-upload - backup zip file - */ - restore(form) { - return new Promise((resolve, reject) => { - var url, event, method, type, data; - - url = API_RESTORE; - event = TASK_BACKUP_RESTORE; - method = REQUEST_TYPE_POST; - type = CONTENT_TYPE_FORM; - data = new FormData(form); - this._request(url, null, event, method, type, data) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Promise method for creating a zip back up of current site. For local use only. - */ - - backup() { - return new Promise((resolve, reject) => { - var url, event, method, type, data; - - url = API_CREATE_BACKUP; - event = TASK_BACKUP_CREATE; - method = REQUEST_TYPE_POST; - type = CONTENT_TYPE_JSON; - data = { task: 'create_backup' }; - this._request(url, null, event, method, type, data) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * Promise method for retrieving user secret key. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} email - email for site user - */ - - secret(data) { - return new Promise((resolve, reject) => { - this._request( - API_GET_SECRET, - TASK_GET_SECRET, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Promise method for resetting password for user. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_password - password for user - * @property {string} new_password2 - confirm password for user - * @property {string} secret - secret key for user - */ - - newPass(data) { - return new Promise((resolve, reject) => { - this._request( - API_RESET_PASS, - TASK_RESET_PASS, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * Promise method for uploading files [todo: change to uploading files] - * @param {string} type - type of upload - * @param {input} files - form input containing files - */ - filesUpload(type, files, progress = null) { - return new Promise((resolve, reject) => { - let url = API_FILES_UPLOAD; - - if (this.baseURL) { - files.append('key', this.key); - files.append('remote', true); - } else { - files.append('remote', false); - } - - this._request( - url, - progress, - TASK_UPLOAD_FILES, - REQUEST_TYPE_POST, - CONTENT_TYPE_FORM, - files - ) - .then(r => { - resolve(r); - }) - .catch(err => { - reject(err); - }); - }); - } - - //-------------------------- - // private - //-------------------------- - _request( - requestURL, - progressBar = null, - eventType, - requestType = REQUEST_TYPE_GET, - contentType = CONTENT_TYPE_JSON, - requestData = null - ) { - var self = this; - return new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); - - request.upload.addEventListener('progress', e => - self.handleLoadProgress(e, progressBar) - ); - request.open(requestType, requestURL, true); - request.onload = () => { - if (request.status == 200) { - let response = JSON.parse(request['response']); - resolve(response); - } else { - let error = JSON.parse(request['response']); - reject(error); - } - }; - if (requestType == REQUEST_TYPE_PUT || requestType == REQUEST_TYPE_POST) { - if (eventType === TASK_UPLOAD_FILES) - request.setRequestHeader('fipamo-access-token', self.token); - switch (contentType) { - case CONTENT_TYPE_JSON: - request.setRequestHeader( - 'Content-type', - 'application/' + contentType - ); - request.send(JSON.stringify(requestData)); - break; - case CONTENT_TYPE_FORM: - request.send(requestData); - break; - } - } else { - request.send(); - } - }); - } - - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil((e.loaded / e.total) * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) { - progressBar.style.width = percent + '%'; - } - } -} - -export { MaintenanceManager as default }; diff --git a/src/com/controllers/NavIndex.js b/src/com/controllers/NavIndex.js deleted file mode 100644 index 9ce29b1..0000000 --- a/src/com/controllers/NavIndex.js +++ /dev/null @@ -1,74 +0,0 @@ -import FipamoAdminAPI, { TASK_SYNC_NAV } from '../../libraries/FipamoAdminAPI'; -import NavActions from '../actions/NavActions'; -import * as DataEvent from '../events/DataEvent'; -import Notifications from '../ui/Notifications'; -import Sortable from 'sortablejs'; -const notify = new Notifications(); - -export default class NavIndex { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.processing = false; - this.admin = new FipamoAdminAPI(null); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() { - //grabs elements and makes them sortables - let self = this; - Sortable.create(document.getElementById('nav-items'), { - onUpdate: () => { - new NavActions().syncMenu().then(data => { - notify.alert('Updating Menu', null); - self.admin.sync(TASK_SYNC_NAV, data).then(r => { - if (r.type == DataEvent.MENU_UPDATED) { - notify.alert(r.message, true); - } else { - notify.alert(r.message, true); - } - }); - }); - } - }); - var nav = document.querySelectorAll('.nav-btn'); - for (var i = 0, length = nav.length; i < length; i++) { - nav[i].addEventListener('click', e => this.handleNavButton(e), false); - } - } - //-------------------------- - // event handlers - //-------------------------- - handleNavButton(e) { - if (this.processing) return; - let id = ''; - let self = this; - switch (e.target.id) { - case 'remove-item': - id = e.target.getAttribute('data-id'); - new NavActions().removeItem(id); - new NavActions().syncMenu().then(data => { - data.remove = e.target.getAttribute('data-uuid'); - notify.alert('Editing Menu', null); - self.processing = true; - self.admin.sync(TASK_SYNC_NAV, data).then(r => { - self.processing = false; - if (r.type == DataEvent.MENU_UPDATED) { - notify.alert(r.message, true); - } else { - notify.alert(r.message, true); - } - }); - }); - break; - case 'edit-item': - self.processing = false; - window.location = - '/dashboard/page/edit/' + e.target.getAttribute('data-id'); - break; - } - } -} diff --git a/src/com/controllers/PageEditor.js b/src/com/controllers/PageEditor.js deleted file mode 100644 index bf3a7e2..0000000 --- a/src/com/controllers/PageEditor.js +++ /dev/null @@ -1,228 +0,0 @@ -//TOOLS -import FipamoAdminAPI, { - TASK_PAGE_CREATE, - TASK_PAGE_EDIT, - TASK_PAGE_DELETE -} from '../../libraries/FipamoAdminAPI'; -import Maintenance from './MaintenanceManager'; -import * as DataEvent from '../events/DataEvent'; -import PageActions from '../actions/PageActions'; -import * as EditorEvent from '../events/EditorEvent'; -//import TinyDatePicker from 'tiny-date-picker'; TODO: Reactivate for scheduled publishing -import TextEditor from '../ui/TextEditor'; -import Notfications from '../ui/Notifications'; -import FileManager from '../ui/FileManager'; -const notify = new Notfications(); -export default class PostEditor { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.processing = false; - let self = 'this'; - this.admin = new FipamoAdminAPI(null, document.getElementById('notify-progress')); - this.mm = new Maintenance(null, null); - this.urlPieces = document.URL.split('/'); - this.post = []; - this.postID = null; - this.postUUID = null; - this.postLayout = null; - this.fm = null; - if (document.querySelector('[role="file-manager"]').getAttribute('data-index')) { - this.postID = document - .querySelector('[role="file-manager"]') - .getAttribute('data-index'); - this.postUUID = document - .querySelector('[role="file-manager"]') - .getAttribute('data-uuid'); - this.postLayout = document - .querySelector('[role="file-manager"]') - .getAttribute('data-layout'); - } - if (document.getElementById('edit')) { - this.editor = new TextEditor( - document.getElementById('edit'), - document.querySelector('[role="file-manager"]').offsetHeight + - document.querySelector('[role="page-meta"]').offsetHeight + - document.querySelector('[role="text-editor"]').offsetHeight - ); - this.editor.addListener( - EditorEvent.EDITOR_DELETE, - () => this.handleEditorOptions(EditorEvent.EDITOR_DELETE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_UPLOAD_POST_IMAGE, - () => this.handleEditorOptions(EditorEvent.EDITOR_UPLOAD_POST_IMAGE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_UPDATE, - () => this.handleEditorOptions(EditorEvent.EDITOR_UPDATE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_SAVE, - () => this.handleEditorOptions(EditorEvent.EDITOR_SAVE), - false - ); - document.getElementById('post-image-upload').addEventListener( - 'change', - e => { - this.handleImageUpload(e.target.id, e.target.files); - }, - false - ); - /* - TinyDatePicker(document.getElementById('post-date'), { - mode: 'dp-below', - format() { - //return self.dateUtils.getDate('origin', date); - } - }); - */ - - this.start(); - } - } - //-------------------------- - // methods - //-------------------------- - start() { - if (document.querySelector('[role="file-drop"]')) { - //insert fileManager here - this.fm = new FileManager( - document.querySelector('[role="file-drop"]'), - document.getElementById('page-files-upload'), - document.querySelector('[role="page-images-list"]'), - document.querySelector('[role="page-files-list"]') - ); - var optionButtons = document.querySelectorAll('.post-option-btn'); - for (var i = 0, length = optionButtons.length; i < length; i++) { - optionButtons[i].addEventListener( - 'click', - e => this.handlePostOptions(e), - false - ); - } - } - } - //-------------------------- - // event handlers - //-------------------------- - handlePostOptions(e) { - let currentOption = null; - switch (e.target.id) { - case 'option-page-icon': - case 'option-menu-pin': - currentOption = document.getElementById('option-menu-pin'); - break; - case 'option-feature-icon': - case 'option-feature': - currentOption = document.getElementById('option-feature'); - break; - case 'option-published-icon': - case 'option-published': - currentOption = document.getElementById('option-published'); - break; - } - if (currentOption != null) { - let active = currentOption.getAttribute('data-active'); - active == 'false' - ? currentOption.setAttribute('data-active', 'true') - : currentOption.setAttribute('data-active', 'false'); - } - } - handleEditorOptions(e) { - if (this.processing) return; - let self = this; - switch (e) { - case EditorEvent.EDITOR_SAVE: - case EditorEvent.EDITOR_UPDATE: - var task = ''; - e === EditorEvent.EDITOR_SAVE - ? (task = TASK_PAGE_CREATE) - : (task = TASK_PAGE_EDIT); - new PageActions().collectInfo(this.fm.getFileOrder()).then(page => { - self.processing = true; - notify.alert('Writing down changes', null); - self.admin - .pageActions(task, page) - .then(r => { - self.processing = false; - if ( - r.type === DataEvent.PAGE_ERROR || - r.type === DataEvent.API_REQUEST_LAME - ) { - notify.alert(r.message, false); - } else { - if (r.type === DataEvent.PAGE_UPDATED) { - notify.alert(r.message, true); - } else { - notify.alert(r.message, true); - window.location = '/dashboard/page/edit/' + r.id; - } - } - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - }); - break; - case EditorEvent.EDITOR_DELETE: - if (this.postLayout === 'index') { - notify.alert('Index cannot be deleted', false); - return; - } - if (confirm("AYE! You know you're deleting this post, right?")) { - new PageActions() - .collectInfo(this.fm.getFileOrder()) - .then(page => { - self.processing = true; - this.admin - .pageActions(TASK_PAGE_DELETE, page) - .then(() => { - self.processing = false; - window.location = '/dashboard/pages'; - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - }) - .catch(() => {}); - } else { - // Do nothing! - } - break; - case EditorEvent.EDITOR_UPLOAD_POST_IMAGE: - document.getElementById('post-image-upload').click(); - break; - } - } - - handleImageUpload(type, files) { - let self = this; - notify.alert('Uploading Image', null); - let upload = new FormData(); - upload.enctype = 'multipart/form-data'; - upload.append('upload_files[]', files[0], files[0].name); - this.mm - .filesUpload(files[0].type, upload) - .then(result => { - if (result.message == 'File Uploaded. Great!') { - self.editor.notify( - EditorEvent.EDITOR_UPLOAD_POST_IMAGE, - result.filePath - ); - notify.alert('Image Added to Entry', true); - } else { - notify.alert('Uh oh. Image not added', false); - } - }) - .catch(() => { - notify.alert('Uh oh. Image not added', false); - }); - } -} diff --git a/src/com/controllers/PostIndex.js b/src/com/controllers/PostIndex.js deleted file mode 100644 index 9ff06f8..0000000 --- a/src/com/controllers/PostIndex.js +++ /dev/null @@ -1,30 +0,0 @@ -import PageEditor from "./PageEditor"; -export default class PostIndex { - //-------------------------- - // constructor - //-------------------------- - constructor(page) { - this.currentPage = null; - this.choosePage(page); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() {} - choosePage(page) { - this.currentPage = ""; - switch (page) { - case "edit": - case "add": - this.currentPage = new PageEditor(); - break; - default: - //just chill - break; - } - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js deleted file mode 100644 index e6e04eb..0000000 --- a/src/com/controllers/SettingsIndex.js +++ /dev/null @@ -1,268 +0,0 @@ -import SettingsActions from '../actions/SettingsActions'; -import Maintenance from './MaintenanceManager'; -import FipamoAdminAPI, { TASK_SYNC_SETTNIGS } from '../../libraries/FipamoAdminAPI'; -import * as DataEvent from '../../../src/com/events/DataEvent'; -import Mailer from '../actions/Mailer'; -import Notifications from '../ui/Notifications'; -const notify = new Notifications(); -export default class SettingsIndex { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.processing = false; - this.start(); - this.admin = new FipamoAdminAPI(null); - this.mm = new Maintenance(null, null); - } - //-------------------------- - // methods - //-------------------------- - start() { - let self = this; - //handle save button - document.getElementById('save-toggle').addEventListener('click', () => - new SettingsActions() - .getInfo() - .then(data => { - notify.alert('Saving Settings', null); - self.admin.sync(TASK_SYNC_SETTNIGS, data).then(r => { - if (r.type == DataEvent.SETTINGS_UPDATED) { - notify.alert(r.message, true); - } else { - notify.alert(r.message, true); - } - }); - }) - .catch(() => { - //console.log(err); - }) - ); - //handle set up image uploads - document.querySelector('.avatar').addEventListener('click', () => { - document.getElementById('avatar-upload').click(); - }); - document.querySelector('.background').addEventListener('click', () => { - document.getElementById('background-upload').click(); - }); - document.getElementById('avatar-upload').addEventListener( - 'change', - e => { - self.handleImageUpload(e.target.id, e.target.files); - }, - false - ); - document.getElementById('background-upload').addEventListener( - 'change', - e => { - self.handleImageUpload(e.target.id, e.target.files); - }, - false - ); - //handle api access toggle - var apiButton = document.getElementById('api-access-toggle'); - var apiStatus = document.getElementById('api-status'); - apiButton.addEventListener('click', e => { - e.stopPropagation(); - e.preventDefault(); - if (apiButton.getAttribute('data-enabled') == 'false') { - apiButton.setAttribute('data-enabled', 'true'); - apiStatus.innerHTML = 'API ACCESS IS ENABLED'; - } else { - apiButton.setAttribute('data-enabled', 'false'); - apiStatus.innerHTML = 'API ACCESS IS DISABLED'; - } - }); - - //handle dynamic page rendering - var dynamicRenderButton = document.getElementById('dynamic-render-toggle'); - var dynamicRenderStatus = document.getElementById('dynamic-render-status'); - dynamicRenderButton.addEventListener('click', e => { - e.stopPropagation(); - e.preventDefault(); - if (dynamicRenderButton.getAttribute('data-enabled') == 'false') { - dynamicRenderButton.setAttribute('data-enabled', 'true'); - dynamicRenderStatus.innerHTML = 'DYNAMIC PAGE RENDERING'; - } else { - dynamicRenderButton.setAttribute('data-enabled', 'false'); - dynamicRenderStatus.innerHTML = 'STATIC PAGE RENDERING'; - } - }); - - document - .getElementById('send-mail') - .addEventListener('click', e => this.handleMailer(e)); - document - .getElementById('publish-pages') - .addEventListener('click', e => this.handlePublished(e)); - //handle page render on save toggle - document - .getElementById('render-toggle') - .addEventListener('click', e => this.toggleRender(e)); - //handle theme toggle - let themeBtns = document.querySelectorAll('.theme-select'); - for (var i = 0, length = themeBtns.length; i < length; i++) { - themeBtns[i].addEventListener('click', e => this.handleThemes(e)); - } - //handle mail options - let mailBtn = document.querySelectorAll('.mail-option'); - for (i = 0, length = mailBtn.length; i < length; i++) { - mailBtn[i].addEventListener('click', e => this.handleMailOptions(e)); - } - //handle backup from settings [disabled] - - document - .getElementById('create-backup') - .addEventListener('click', e => this.handleBackup(e)); - - /* - document - .getElementById("reindex-pages") - .addEventListener("click", (e) => this.handleReindex(e)); - */ - } - //-------------------------- - // event handlers - //-------------------------- - togglePrivacy(e) { - e.stopPropagation(); - e.preventDefault(); - if (e.target.getAttribute('data-private') == 'false') { - e.target.setAttribute('data-private', 'true'); - e.target.innerHTML = 'SITE IS PUBLIC'; - } else { - e.target.setAttribute('data-private', 'false'); - e.target.innerHTML = 'SITE IS PRIVATE'; - } - } - toggleRender(e) { - e.stopPropagation(); - e.preventDefault(); - let button = document.getElementById('render-toggle'); - if (button.getAttribute('data-render') == 'false') { - button.setAttribute('data-render', 'true'); - //e.target.innerHTML = 'RENDER PAGES ON SAVE'; - } else { - button.setAttribute('data-render', 'false'); - //e.target.innerHTML = "DON'T RENDER PAGES ON SAVE"; - } - } - handleMailer() { - let mailer = new Mailer(); - mailer.testMail(); - //mailer.sendMail(); - } - handleThemes(e) { - e.stopPropagation(); - e.preventDefault(); - let themes = document.querySelectorAll('.theme-select'); - for (var i = 0, length = themes.length; i < length; i++) { - e.target.id == themes[i].id - ? themes[i].setAttribute('data-enabled', 'true') - : themes[i].setAttribute('data-enabled', 'false'); - } - } - handleMailOptions(e) { - e.preventDefault(); - e.stopPropagation(); - let smtp = document.getElementById('mail-smtp'); - let mailgun = document.getElementById('mail-mg'); - let mail = document.querySelectorAll('.mail-option'); - for (var i = 0, length = mail.length; i < length; i++) { - if (e.target.id == mail[i].id) { - mail[i].setAttribute('data-enabled', 'true'); - if (e.target.id == 'option-smtp') { - smtp.setAttribute('data-enabled', 'true'); - mailgun.setAttribute('data-enabled', 'false'); - } else if (e.target.id == 'option-none') { - smtp.setAttribute('data-enabled', 'false'); - mailgun.setAttribute('data-enabled', 'false'); - } else { - smtp.setAttribute('data-enabled', 'false'); - mailgun.setAttribute('data-enabled', 'true'); - } - } else { - mail[i].setAttribute('data-enabled', 'false'); - } - } - } - handleImageUpload(type, files) { - notify.alert('Uploading Image... ', null); - let self = this; - notify.alert('Uploading Image', null); - let upload = new FormData(); - upload.enctype = 'multipart/form-data'; - upload.append('source', type); - upload.append('upload_files[]', files[0], files[0].name); - - this.mm - .filesUpload(files[0].type, upload) - .then(r => { - if (type == 'avatar-upload') { - notify.alert(r.message, true); - document.querySelector('[role="avatar"]').style.background = - 'url(' + r.filePath + ') no-repeat center center / cover'; - } else { - notify.alert(r.message, true); - document.querySelector('[role="background"]').style.background = - 'url(' + r.filePath + ') no-repeat center center / cover'; - } - }) - .catch(() => { - //console.log(err) - }); - } - handlePublished(e) { - if (this.processing) return; - e.preventDefault(); - e.stopPropagation(); - let self = this; - let task = { task: 'PUBLISH_ALL' }; - this.processing = true; - notify.alert('Publishing site...', null); - this.admin - .publish(task) - .then(r => { - self.processing = false; - notify.alert(r.message, true); - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - } - - handleBackup(e) { - e.preventDefault(); - e.stopPropagation(); - notify.alert('Creating backup', null); - this.mm - .backup() - .then(r => { - notify.alert(r.message, true); - }) - .catch(err => { - notify.alert(err, false); - }); - } - - handleReindex(e) { - if (this.processing) return; - let self = this; - e.preventDefault(); - e.stopPropagation(); - let task = { task: 'cleanup pages indexes' }; - this.processing = true; - notify.alert('Cleaning up page indexes', null); - this.admin - .handleReindex(task) - .then(r => { - self.processing = false; - notify.alert(r.message, true); - }) - .catch(err => { - self.processing = false; - notify.alert(err, false); - }); - } -} diff --git a/src/com/events/AuthEvent.js b/src/com/events/AuthEvent.js deleted file mode 100644 index 81fd0fc..0000000 --- a/src/com/events/AuthEvent.js +++ /dev/null @@ -1,21 +0,0 @@ -export const MEMBER_STATUS = 'memberStatus'; -export const LOGIN_STATUS = 'loginStatus'; -export const SUPPORTER_FOUND = 'SUPPORTER FOUND'; -export const SUPPORTER_LISTED = 'SUPPORTER LISTED'; -export const SUPPORTER_NOT_FOUND = 'SUPPORTER NOT FOUND'; -export const MEMBER_ADDED = 'MEMBER ADDED'; -export const MEMBER_NOT_ADDED = 'MEMBER NOT ADDED'; -export const MEMBER_LOGIN_GOOD = 'MEMBER LOGIN GOOD'; -export const MEMBER_LOGIN_LAME = 'MEMBER LOGIN LAME'; -export const MEMBER_EXISTS = 'USER ALREADY EXISTS'; -export const MEMBER_LOGIN_MISSING = 'Missing credentials'; - -class AuthEvent { - //-------------------------- - // methods - //-------------------------- - //-------------------------- - // event handlers - //-------------------------- -} -export default new AuthEvent(); diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js deleted file mode 100644 index fd0a8f2..0000000 --- a/src/com/events/DataEvent.js +++ /dev/null @@ -1,51 +0,0 @@ -export const AUTH_STATUS = "getAuthStatus"; -export const REQUEST_GOOD = "requestGood"; -export const REQUEST_LAME = "requestLame"; -export const API_REQUEST_GOOD = "apiUseAuthorized"; -export const API_REQUEST_LAME = "apiUseNotAuthorized"; -export const IMG_REQUEST_GOOD = "imgRequestGood"; -export const IMG_REQUEST_LAME = "imgRequestLame"; -export const SETTINGS_LOADED = "settingsLoaded"; -export const POST_IMAGE_ADDED = "postImageAdded"; -export const FEATURE_IMAGE_ADDED = "featureImageAdded"; -export const PAGE_ERROR = "postError"; -export const PAGE_ADDED = "postAdded"; -export const PAGE_UPDATED = "postUpdated"; -export const PAGE_DELETED = "postImageAdded"; -export const PAGES_RENDERED = "pagesRendered"; -export const PAGES_NOT_RENDERED = "pagesNotRendered"; -export const TAG_PAGES_RENDERED = "tagPagesRendered"; -export const TAG_PAGES_NOT_RENDERED = "tagPagesNotRendered"; -export const SETTINGS_UPDATED = "settingsUpdated"; -export const SETTINGS_NOT_UPDATED = "settingsNotUpdated"; -export const MENU_ADD_ITEM = "menuAddItem"; -export const MENU_DELETE_ITEM = "menuDeleteItem"; -export const MENU_UPDATED = "menuUpdated"; -export const AVATAR_UPLOADED = "avatarUploaded"; -export const SITE_BACKGROUND_UPLOADED = "siteBackgroundUploaded"; -export const UPLOAD_PROGRESS = "uploadProgress"; -export const API_PAGE_WRITE = "writingItDown"; -export const API_PAGE_CREATE = "writingNewEntry"; -export const API_PAGE_DELETE = "erasingPage"; -export const API_SETTINGS_WRITE = "savingSettings"; -export const API_BACKUP_CREATE = "createBackup"; -export const API_BACKUP_DOWNLOAD = "downloadBackup"; -export const API_BACKUP_RESTORE = "downloadBackup"; -export const API_IMAGES_UPLOAD = "uploadProfileImages"; -export const API_RENDER_PAGES = "renderPages"; -export const API_REINDEX_PAGES = "reindexPages"; -export const API_INIT = "blogInit"; -export const API_INIT_GOOD = "blogInitGood"; -export const API_INIT_LAME = "blogInitLame"; -export const API_GET_SECRET = "retrieveSecret"; -export const API_RESET_PASS = "resetPassword"; -export const SEND_MAIL = "sendMail"; -class DataEvent { - //-------------------------- - // methods - //-------------------------- - //-------------------------- - // event handlers - //-------------------------- -} -export default new DataEvent(); diff --git a/src/com/events/EditorEvent.js b/src/com/events/EditorEvent.js deleted file mode 100644 index 2cd24c6..0000000 --- a/src/com/events/EditorEvent.js +++ /dev/null @@ -1,14 +0,0 @@ -export const EDITOR_DELETE = 'editorDelete'; -export const EDITOR_UPLOAD_POST_IMAGE = 'editorUploadImage'; -export const EDITOR_SAVE = 'editorSave'; -export const EDITOR_UPDATE = 'editorUpdate'; - -class EditorEvent { - //-------------------------- - // methods - //-------------------------- - //-------------------------- - // event handlers - //-------------------------- -} -export default new EditorEvent(); diff --git a/src/com/events/EventEmitter.js b/src/com/events/EventEmitter.js deleted file mode 100644 index 56f5dfe..0000000 --- a/src/com/events/EventEmitter.js +++ /dev/null @@ -1,52 +0,0 @@ -class EventEmitter { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.listeners = new Map(); - } - //-------------------------- - // methods - //-------------------------- - addListener(label, callback) { - this.listeners.has(label) || this.listeners.set(label, []); - this.listeners.get(label).push(callback); - } - - removeListener(label, callback) { - var isFunction = function(obj) { - return typeof obj == 'function' || false; - }; - - var listeners = this.listeners.get(label), - index; - - if (listeners && listeners.length) { - index = listeners.reduce((i, listener, index) => { - return isFunction(listener) && listener === callback ? (i = index) : i; - }, -1); - - if (index > -1) { - listeners.splice(index, 1); - this.listeners.set(label, listeners); - return true; - } - } - return false; - } - - emitEvent(label, ...args) { - var listeners = this.listeners.get(label); - if (listeners && listeners.length) { - listeners.forEach(listener => { - listener(...args); - }); - return true; - } - return false; - } - //-------------------------- - // event handlers - //-------------------------- -} -export default EventEmitter; diff --git a/src/com/ui/FileManager.js b/src/com/ui/FileManager.js deleted file mode 100644 index 8f78dcc..0000000 --- a/src/com/ui/FileManager.js +++ /dev/null @@ -1,296 +0,0 @@ -import Sortable from 'sortablejs'; -import anime from 'animejs/lib/anime.es.js'; -import DataUtils from '../utils/DataUtils'; -import Notfications from './Notifications.js'; -import Maintenance from '../controllers/MaintenanceManager'; -const notify = new Notfications(); - -export default class FileManager { - //-------------------------- - // constructor - //-------------------------- - constructor(upload, input, imageList, fileList) { - this.mm = new Maintenance(null, null, document.getElementById('notify-progress')); - this.upload = upload; - this.input = input; - this.imageList = imageList; - this.fileList = fileList; - this.accetableFiles = [ - 'image/jpeg', - 'image/gif', - 'image/png', - 'image/svg', - 'audio/mpeg', - 'video/mp4', - 'application/pdf', - 'text/plain', - 'text/rtf' - ]; - this.files = []; - this.sortedFiles = []; - this.storage = []; - this.mediaSort = Sortable.create(this.imageList, { - animation: 150, - onUpdate: () => { - //notify.alert('REINDEXING MEDIA', null); - //this.updateFiles(); - } - }); - this.fileSort = Sortable.create(this.fileList, { - animation: 150, - onUpdate: () => { - //notify.alert('REINDEXING FILES', null); - //this.updateFiles(); - } - }); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() { - this.upload.addEventListener('dragover', e => this.handleFileActions(e), false); - this.upload.addEventListener('drop', e => this.handleFileActions(e), false); - this.input.addEventListener('change', e => this.handleFileActions(e), false); - var removeMedia = document.querySelectorAll('.media-remove'); - for (var i = 0, length = removeMedia.length; i < length; i++) { - removeMedia[i].addEventListener( - 'click', - e => this.removeFile(e, 'media'), - false - ); - } - } - getFileOrder() { - let imgList = ''; - let fileList = ''; - for (var i = 0, length = this.imageList.childNodes.length; i < length; i++) { - let div = this.imageList.childNodes[i]; - imgList = imgList + div.getAttribute('data-source') + ','; - } - for (var i = 0, length = this.fileList.childNodes.length; i < length; i++) { - let div = this.fileList.childNodes[i]; - fileList = fileList + div.getAttribute('data-source') + ','; - } - let media = { images: imgList, files: fileList }; - return media; - } - - sortFiles(files) { - var self = this; - for (var i = 0, file; (file = files[i]); i++) { - var reader = new FileReader(); - // Closure to capture the file information - reader.onload = (theFile => { - return function (f) { - //create remove button object - var remove = document.createElement('button'); - var removeIcon = document.createElement('i'); - removeIcon.classList.add('ti', 'ti-x'); - remove.className = 'media-remove'; - remove.appendChild(removeIcon); - //remove.setAttribute('id', mediaCount); - remove.addEventListener( - 'click', - e => self.removeFile(e, 'media'), - false - ); - - //upload the file - let upload = new FormData(); - upload.enctype = 'multipart/form-data'; - upload.append('upload_files[]', theFile, theFile.name); - let item = null; - let progress = null; - - // sort files - switch (theFile.type) { - case 'image/jpg': - case 'image/jpeg': - case 'image/gif': - case 'image/svg': - case 'image/png': - item = self.itemFactory('img-item'); - progress = document.getElementById( - 'pgs' + item.getAttribute('id') - ); - self.mm - .filesUpload(theFile.type, upload, progress) - .then(result => { - item.setAttribute('data-source', result.filePath); - item.style.background = - 'url(' + - f.target.result + - ') no-repeat center center / cover'; - anime({ - targets: progress, - width: 0, - easing: 'easeInOutQuint', - duration: 1000, - complete: () => { - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case 'video/mp4': - item = self.itemFactory('video-item'); - progress = document.getElementById( - 'pgs' + item.getAttribute('id') - ); - self.mm - .filesUpload(theFile.type, upload, progress) - .then(result => { - item.setAttribute('data-source', result.filePath); - let video = document.createElement('video'); - let source = document.createElement('source'); - source.src = f.target.result; - video.appendChild(source); - item.appendChild(video); - anime({ - targets: progress, - width: 0, - easing: 'easeInOutQuint', - duration: 1000, - complete: () => { - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case 'audio/mpeg': - item = self.itemFactory('audio-item'); - progress = document.getElementById( - 'pgs' + item.getAttribute('id') - ); - self.mm - .filesUpload(theFile.type, upload, progress) - .then(result => { - item.setAttribute('data-source', result.filePath); - let audio = document.createElement('audio'); - audio.setAttribute('controls', true); - let source = document.createElement('source'); - source.src = f.target.result; - audio.appendChild(source); - item.appendChild(audio); - anime({ - targets: progress, - width: 0, - easing: 'easeInOutQuint', - duration: 1000, - complete: () => { - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - case 'application/pdf': - case 'text/plain': - case 'text/rtf': - item = self.itemFactory('file-item'); - progress = document.getElementById( - 'pgs' + item.getAttribute('id') - ); - self.mm - .filesUpload(theFile.type, upload, progress) - .then(result => { - item.setAttribute('data-source', result.filePath); - let link = document.createElement('a'); - link.href = result.filePath; - link.innerHTML = result.fileName; - item.appendChild(link); - anime({ - targets: progress, - width: 0, - easing: 'easeInOutQuint', - duration: 1000, - complete: () => { - item.removeChild(progress); - item.appendChild(remove); - } - }); - }); - break; - } - }; - })(file); - // Read in the image file as a data URL. - reader.readAsDataURL(file); - } - } - itemFactory(type = null) { - //get counts for lists - var mediaCount = this.imageList.childNodes.length; - var fileCount = this.fileList.childNodes.length; - if (mediaCount < 0) mediaCount = 0; - if (fileCount < 0) fileCount = 0; - var item = document.createElement('div'); - item.className = type; - var progress = document.createElement('div'); - progress.className = 'item-progress'; - item.appendChild(progress); - - if (type == 'img-item' || type == 'video-item') { - this.imageList.appendChild(item); - progress.setAttribute('id', 'pgs' + mediaCount); - item.setAttribute('id', mediaCount); - } else { - this.fileList.appendChild(item); - progress.setAttribute('id', 'pgs' + fileCount); - item.setAttribute('id', fileCount); - } - return item; - } - - //-------------------------- - // event handlers - //-------------------------- - removeFile(e) { - var item = e.target.parentNode.parentNode; - switch (item.className) { - case 'img-item': - case 'video-item': - this.imageList.removeChild(item); - break; - case 'audio-item': - case 'file-item': - this.fileList.removeChild(item); - break; - } - notify.alert('File Removed!', true); - } - - handleFileActions(e) { - e.stopPropagation(); - e.preventDefault(); - let self = this; - let rawList = []; - let sortedList = []; - let notOnTheList = []; - - switch (e.type) { - case 'dragover': - e.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy. - break; - case 'change': - case 'drop': - e.type == 'drop' - ? (rawList = e.dataTransfer.files) - : (rawList = e.target.files); - for (var i = 0, f; (f = rawList[i]); i++) { - // check witch files are cool to upload - if (this.accetableFiles.includes(f.type)) { - sortedList.push(f); - } else { - notOnTheList.push(f); - } - } - //send for sorting - self.sortFiles(sortedList); - break; - } - } -} diff --git a/src/com/ui/Menu.js b/src/com/ui/Menu.js deleted file mode 100644 index 468fe50..0000000 --- a/src/com/ui/Menu.js +++ /dev/null @@ -1,28 +0,0 @@ -export default class Menu { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.mobile = false; - this.mobileMenu = document.querySelector('.mobile-menu'); - document - .querySelector('.menu-toggle') - .addEventListener('click', e => this.handleMobile(e)); - } - //-------------------------- - // methods - //-------------------------- - start() {} - //-------------------------- - // event handlers - //-------------------------- - handleMobile(e) { - if (this.mobile) { - this.mobile = false; - this.mobileMenu.style.display = 'none'; - } else { - this.mobile = true; - this.mobileMenu.style.display = 'inline'; - } - } -} diff --git a/src/com/ui/Notifications.js b/src/com/ui/Notifications.js deleted file mode 100644 index bdc4313..0000000 --- a/src/com/ui/Notifications.js +++ /dev/null @@ -1,109 +0,0 @@ -import anime from 'animejs/lib/anime.es.js'; -const notifcation = document.querySelector('.notify-message'); -const notify = document.getElementById('notify-message'); -const responseText = document.querySelector('.response-text'); -const notifyText = document.querySelector('.notify-text'); -const notifyIcons = document.querySelector('.notify-icons'); -//const notifyProgress = document.getElementById('notify-progress'); -const iconGood = document.querySelector('.notify-good'); -const iconNotGood = document.querySelector('.notify-notgood'); -const iconWorking = document.querySelector('.notify-working'); - -export default class Notfications { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - - alert(text, status) { - iconWorking.style.display = 'none'; - iconGood.style.display = 'none'; - iconNotGood.style.display = 'none'; - - var color = ''; - responseText.innerHTML = text; - if (status !== null) { - if (status) { - color = '#32cd32'; - iconWorking.style.display = 'none'; - iconGood.style.display = 'block'; - } else { - color = '#F64747'; - iconWorking.style.display = 'none'; - iconNotGood.style.display = 'block'; - } - } else { - color = '#200317'; - iconWorking.style.display = 'block'; - } - - new anime({ - targets: document.querySelector('.top-nav'), - rotateX: '180deg', - easing: 'easeOutQuint' - }); - - new anime({ - targets: document.querySelector('.notify'), - rotateX: '10deg', - easing: 'easeOutQuint', - complete: () => { - new anime({ - targets: notifyIcons, - width: 39, - opacity: 1, - easing: 'easeInQuint', - duration: 300 - }); - - new anime({ - targets: notifyText, - backgroundColor: color, - opacity: 1, - easing: 'easeInOutQuad', - duration: 400, - complete: () => { - setTimeout(() => { - if (status !== null) { - anime({ - targets: notifyText, - backgroundColor: color, - opacity: 0, - easing: 'easeInOutQuad', - duration: 400 - }); - - anime({ - targets: notifyIcons, - width: 0, - opacity: 0, - easing: 'easeOutQuint', - duration: 350 - }); - - new anime({ - targets: document.querySelector('.top-nav'), - rotateX: '0deg', - easing: 'easeOutQuint' - }); - - new anime({ - targets: document.querySelector('.notify'), - rotateX: '180deg', - easing: 'easeOutQuint' - }); - } - }, 2500); - } - }); - } - }); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/ui/TextEditor.js b/src/com/ui/TextEditor.js deleted file mode 100644 index d2b7ac7..0000000 --- a/src/com/ui/TextEditor.js +++ /dev/null @@ -1,203 +0,0 @@ -import * as DataEvent from '../events/DataEvent'; -import EventEmitter from '../events/EventEmitter'; -import * as EditorEvent from '../events/EditorEvent'; -import Prism from 'prismjs'; -class TextEditor extends EventEmitter { - /** - * Text Editor UI Component - * @constructor - * @param {object} textEditor - Text area that will edit text - * @param {number} scrollLimit - YPos where editor position will become fixed - */ - //-------------------------- - // constructor - //-------------------------- - constructor(textEditor, scrollLimit) { - super(); - - document - .querySelector('[role="text-editor-control"]') - .addEventListener('scroll', e => { - console.log('HERE'); - }); - - document.body.addEventListener('scroll', e => { - var fixLimit = scrollLimit; - console.log('POSITION', document.body.scrollTop + ' : ' + fixLimit); - if (document.body.scrollTop + 5 >= fixLimit) { - document - .querySelector('[role="text-editor-control"]') - .classList.add('control-freeze'); - } else { - document - .querySelector('[role="text-editor-control"]') - .classList.remove('control-freeze'); - } - }); - document.getElementById('edit').addEventListener('input', e => { - let result_element = document.querySelector('#highlight-content'); - this.textEditor = textEditor; - - // Update code - let text = e.target.value; - result_element.innerHTML = text - .replace(new RegExp('&', 'g'), '&') - .replace(new RegExp('<', 'g'), '<'); - let editorHeight = document.getElementById('highlight').offsetHeight; - document.querySelector('[role="edit-post-wrapper"]').style.height = - editorHeight + 'px'; - e.target.style.height = editorHeight + 30 + 'px'; //TODO: yeah, it's ugly but it works for now, fix soon - // Syntax Highlight - Prism.highlightElement(result_element); - }); - document.getElementById('edit').addEventListener('scroll', e => { - /* Scroll result to scroll coords of event - sync with textarea */ - let result_element = document.querySelector('#highlight'); - // Get and set x and y - result_element.scrollTop = e.scrollTop; - result_element.scrollLeft = e.scrollLeft; - }); - document.getElementById('edit').dispatchEvent(new Event('input')); - this.setInputs(); - - //freeze editor formatting so it doesn't scroll off screen - } - //-------------------------- - // methods - //-------------------------- - setInputs() { - var editorButtons = document.querySelectorAll('.editor-button'); - for (var i = 0, length = editorButtons.length; i < length; i++) { - editorButtons[i].addEventListener( - 'click', - e => this.handleEditorOption(e), - false - ); - } - } - notify(type, data) { - switch (type) { - case DataEvent.PAGE_UPDATED: - document.getElementById('submit-update').classList.add('icon-hide'); - document.getElementById('submit-good').classList.remove('icon-hide'); - document.getElementById('edit-update').classList.remove('submit-start'); - document.getElementById('edit-update').classList.add('submit-cool'); - setTimeout(() => { - document - .getElementById('submit-update') - .classList.remove('icon-hide'); - document.getElementById('submit-good').classList.add('icon-hide'); - document.getElementById('edit-update').classList.add('submit-start'); - document - .getElementById('edit-update') - .classList.remove('submit-cool'); - }, 2000); - break; - case DataEvent.PAGE_ADDED: - // do nothing - break; - case EditorEvent.EDITOR_UPLOAD_POST_IMAGE: { - let len = this.textEditor.value.length; - let start = this.textEditor.selectionStart; - let end = this.textEditor.selectionEnd; - let insert = ''; - - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - document.getElementById('edit').dispatchEvent(new Event('input')); - break; - } - } - } - //-------------------------- - // event handlers - //-------------------------- - handleEditorOption(e) { - e.preventDefault(); - let len = this.textEditor.value.length; - let start = this.textEditor.selectionStart; - let end = this.textEditor.selectionEnd; - - let selectedText = this.textEditor.value.substring(start, end); - let insert = ''; - switch (e.target.id) { - case 'edit-bold': - insert = '**' + selectedText + '**'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - - break; - case 'edit-italic': - insert = '*' + selectedText + '*'; - //console.log(this.textEditor); - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - break; - case 'edit-strikethrough': - insert = '~~' + selectedText + '~~'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - break; - case 'edit-header1': - insert = '# ' + selectedText + '\n'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - break; - case 'edit-header2': - insert = '## ' + selectedText + '\n'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - break; - case 'edit-header3': - insert = '### ' + selectedText + '\n'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - break; - case 'edit-link': - { - let url = prompt("Let's get that url, boss"); - let link = url.toLowerCase(); - insert = '[' + selectedText + '](' + link + ')'; - this.textEditor.value = - this.textEditor.value.substring(0, start) + - insert + - this.textEditor.value.substring(end, len); - } - break; - case 'edit-image': - //this.caretPos = position(this.textEditor).pos; - this.emitEvent(EditorEvent.EDITOR_UPLOAD_POST_IMAGE); - break; - case 'submit-save': - case 'edit-save': - this.emitEvent(EditorEvent.EDITOR_SAVE); - break; - case 'submit-update': - case 'edit-update': - this.emitEvent(EditorEvent.EDITOR_UPDATE); - break; - case 'edit-delete': - this.emitEvent(EditorEvent.EDITOR_DELETE); - break; - default: - //do stuff - break; - } - document.getElementById('edit').dispatchEvent(new Event('input')); - } -} -export default TextEditor; diff --git a/src/com/utils/DataUtils.js b/src/com/utils/DataUtils.js deleted file mode 100644 index fe36609..0000000 --- a/src/com/utils/DataUtils.js +++ /dev/null @@ -1,95 +0,0 @@ -export default class DataUtils { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - - imgLoad(url) { - 'use strict'; - // Create new promise with the Promise() constructor; - // This has as its argument a function with two parameters, resolve and reject - return new Promise(function (resolve, reject) { - // Standard XHR to load an image - var request = new XMLHttpRequest(); - request.open('GET', url); - request.responseType = 'blob'; - // When the request loads, check whether it was successful - request.onload = function () { - if (request.status === 200) { - // If successful, resolve the promise by passing back the request response - resolve(request.response); - } else { - // If it fails, reject the promise with a error message - reject( - new Error( - "Image didn't load successfully; error code: " + - request.status + - ' ' + - request.statusText - ) - ); - } - }; - request.onerror = function () { - // Also deal with the case when the entire request fails to begin with - // This is probably a network error, so reject the promise with an appropriate message - reject(new Error('There was a network error.')); - }; - // Send the request - request.send(); - }); - } - loadImage(src) { - 'use strict'; - let self = this; - return new Promise(function (resolve, reject) { - // Get a reference to the body element, and create a new image object - var myImage = new Image(); - myImage.crossOrigin = ''; // or "anonymous" - // Call the function with the URL we want to load, but then chain the - // promise then() method on to the end of it. This contains two callbacks - self.imgLoad(src).then( - function (response) { - // The first runs when the promise resolves, with the request.reponse specified within the resolve() method. - var imageURL = window.URL.createObjectURL(response); - resolve(imageURL); - //$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL; - //console.log(imageURL); - //body.appendChild(myImage); - // The second runs when the promise is rejected, and logs the Error specified with the reject() method. - }, - function (Error) { - reject(Error); - } - ); - }); - } - - /** - * Create a function to convert the serialize and convert the form data to JSON - * @param : $('#form_example'); - * @return a JSON Stringify - */ - formDataToJSON(form) { - let object = {}; - let formData = new FormData(form); - formData.forEach((value, key) => { - if (!object.hasOwnProperty(key)) { - object[key] = value; - return; - } - if (!Array.isArray(object[key])) { - object[key] = [object[key]]; - } - object[key].push(value); - }); - //let json = JSON.stringify(object); - return object; - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/src/com/utils/StringUtils.js b/src/com/utils/StringUtils.js deleted file mode 100644 index 6676b91..0000000 --- a/src/com/utils/StringUtils.js +++ /dev/null @@ -1,68 +0,0 @@ -class StringUtils { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - cleanString(string) { - var clean = string - .replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, '') - .toLowerCase() - .replace(/[\/_| -]+/g, '-'); - return clean; - } - - decodeHTML(string, quote_style) { - var optTemp = 0, - i = 0, - noquotes = false; - if (typeof quote_style === 'undefined') { - quote_style = 2; - } - string = string - .toString() - .replace(/</g, '<') - .replace(/>/g, '>'); - var OPTS = { - ENT_NOQUOTES: 0, - ENT_HTML_QUOTE_SINGLE: 1, - ENT_HTML_QUOTE_DOUBLE: 2, - ENT_COMPAT: 2, - ENT_QUOTES: 3, - ENT_IGNORE: 4 - }; - if (quote_style === 0) { - noquotes = true; - } - if (typeof quote_style !== 'number') { - // Allow for a single string or an array of string flags - quote_style = [].concat(quote_style); - for (i = 0; i < quote_style.length; i++) { - // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 - if (OPTS[quote_style[i]] === 0) { - noquotes = true; - } else if (OPTS[quote_style[i]]) { - optTemp = optTemp | OPTS[quote_style[i]]; - } - } - quote_style = optTemp; - } - if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { - string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should - // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP - } - if (!noquotes) { - string = string.replace(/"/g, '"'); - } - // Put this in last place to avoid escape being double-decoded - string = string.replace(/&/g, '&'); - return string; - } - - //-------------------------- - // event handlers - //-------------------------- -} -export default StringUtils; diff --git a/src/jsdoc.json b/src/jsdoc.json deleted file mode 100644 index df0756c..0000000 --- a/src/jsdoc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["plugins/markdown"] -} diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js deleted file mode 100644 index bace695..0000000 --- a/src/libraries/FipamoAdminAPI.js +++ /dev/null @@ -1,432 +0,0 @@ -//** REQUEST TYPES **// -export const REQUEST_TYPE_POST = 'POST'; -export const REQUEST_TYPE_GET = 'GET'; -export const REQUEST_TYPE_PUT = 'PUT'; -export const REQUEST_TYPE_DELETE = 'DELETE'; -//** POST CONTENT TYPES **// -export const CONTENT_TYPE_JSON = 'json'; -export const CONTENT_TYPE_FORM = 'x-www-form-urlencoded'; -//** API URLS **// -export const API_STATUS = '/api/v1/status'; -export const API_GET_SETTINGS = '/api/v1/settings/site'; -export const API_GET_MEMBER_INFO = '/api/v1/settings/member'; -export const API_NEW_PAGE = '/api/v1/page/create'; -export const API_EDIT_PAGE = '/api/v1/page/write'; -export const API_DELETE_PAGE = '/api/v1/page/delete'; -export const API_SETTINGS_SYNC = '/api/v1/settings/sync'; -export const API_PUBLISH_PAGES = '/api/v1/settings/publish'; -export const API_NAV_SYNC = '/api/v1/settings/nav-sync'; -export const API_REINDEX_PAGES = '/api/v1/settings/reindex'; -export const API_SEND_MAIL = '/api/v1/mailer'; -export const API_LOGIN = '/api/v1/login'; -//** API TASKS **// -export const AUTH_STATUS = 'getAuthStatus'; -export const TASK_SETTINGS_WRITE = 'writeSettings'; -export const TASK_PUBLISH_SITE = 'publishSite'; -export const TASK_PAGE_CREATE = 'createNewPage'; -export const TASK_PAGE_EDIT = 'editPage'; -export const TASK_PAGE_DELETE = 'deletePage'; -export const TASK_SEND_MAIL = 'sendMail'; -export const TASK_REINDEX_PAGE = 'reIndexPages'; -export const TASK_SYNC_SETTNIGS = 'syncSite'; -export const TASK_SYNC_NAV = 'syncNav'; -export const TASK_GET_SETTINGS = 'getSiteSettings'; -export const TASK_GET_MEMBER_INFO = 'getMemberInfo'; -//** API STATUS **// -export const API_ACCESS_GOOD = 'apiUseAuthorized'; -export const API_ACCESS_BAD = 'apiUseNotAuthorized'; - -/** - * A can of methods used to edit install settings, navigation pages and content pages - */ - -class FipamoAdminAPI { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {object} progressBar - element to be used to display upload progress - */ - constructor(baseURL = null, progressBar = null) { - this.percentComplete = 0; //for later - this.baseURL = null; - this.progressBar = progressBar; - this.status = false; - if (baseURL) this.baseURL = baseURL; - //asks server if a session is active - this._request(this.baseURL ? this.baseURL + API_STATUS : API_STATUS).then( - response => { - if (response.type === API_ACCESS_GOOD) { - this.token = response.token; - } else { - //don't set token - //console.log("NO TOKEN"); - } - } - ); - } - /** - * Promise method for authenticating and starting a session\ - * **POST**`/api/v1/login` - * @param {Object[]} data - json object that contains data for set up - * @param {string} data[].handle - handle for site user - * @param {string} data[].password - password for site user - * @example - * api.login(data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of login request - ``` - { - "message":"Example Message of Affirmation or what you're missing!", - "type":"exampleType", - } - ``` - */ - login(data) { - return new Promise((resolve, reject) => { - this.baseURL ? (data.remote = true) : (data.remote = false); - this.key ? (data.key = this.key) : (data.key = null); - this._request( - this.baseURL ? this.baseURL + API_LOGIN : API_LOGIN, - AUTH_STATUS, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Method for saving site and navigation settings\ - * **POST**`/api/v1/settings/:task` - * @param {string} task - settings being synced `config | navigation` - * @param {object[]} data - json object that contains settings data for [site] or [nav] - * @param {string} data[].global.base_url - base url for site [site] - * @param {string} data[].global.title - site title [site] - * @param {string} data[].global.descriptions - brief site summary [site] - * @param {string} data[].global.background - url for site feature image for header [site] - * @param {boolean} data[].global.private - privacy state for site [disabled] [site] - * @param {boolean} data[].global.renderOnSave - property for publishing site when page saved [disabled] [site] - * @param {string} data[].global.theme - current theme for site [site] - * @param {boolean} data[].global.externalAPI - toggle for external API access [site] - * @param {string} data[].member.handle - current member handle [site] - * @param {string} data[].member.email - current member email [site] - * @param {string} data[].email.active - current email protocol being used [site] - * @param {string} data[].email.smtp.domain - url of smtp service being [site] - * @param {string} data[].email.smtp.email - email account of smtp service [site] - * @param {string} data[].email.smtp.password - password for email of smtp service [site] - * @param {string} data[].email.mailgun.domain - mailgun domain url [site] - * @param {string} data[].email.mailgun.key - mailgun key [site] - * - * @param {string} data[].item.title - page title [nav] - * @param {string} data[].item.slug - url safe title [nav] - * @param {string} data[].item.uuid - unique identifier [nav] - * @param {string} data[].item.path - directory path to associated markdown file [nav] - * @example - * api.sync(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of sync request - ``` - * - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ - sync(task, data) { - return new Promise((resolve, reject) => { - let url = ''; - switch (task) { - case 'syncSite': - url = API_SETTINGS_SYNC; - break; - case 'syncNav': - url = API_NAV_SYNC; - break; - } - this._request( - this.baseURL ? this.baseURL + url : url, - TASK_SETTINGS_WRITE, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * Method for retrieving user authorizing user login - * @param {object[]} data - json object that contains task - * @param {string} data[].task - publishing task - * @example - * api.publish(TASK).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of publis request - * ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - * ``` - */ - publish(data) { - return new Promise((resolve, reject) => { - this._request( - //API_PUBLISH_PAGES, - this.baseURL ? this.baseURL + API_PUBLISH_PAGES : API_PUBLISH_PAGES, - TASK_PUBLISH_SITE, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * Method for handling page creating and editing\ - * **POST**`/api/v1/page/:task` - * @param {string} task - current page action - * @param {object[]} form - form object that contains info for current page being edited/created - * @param {string} form[].id - sequence id for page, leave empty for new page - * @param {string} form[].uuid - unique identifier for page, leave empty for new page - * @param {string} form[].layout - current page layout - * @param {string} form[].current_title - saved url save title for persistence when changing title, leave empty for new page - * @param {string} form[].content - markdown body of page - * @param {string} form[].title - current title of page - * @param {string} form[].created - date page was created, leave empty for new page - * @param {string} form[].slug - url safe string of page title - * @param {string} form[].tags - comma separated list of tags - * @param {boolean} form[].menu - property that indicates page is included in site menu - * @param {boolean} form[].featured - property that indicates page is featured - * @param {boolean} form[].published - property that indicates page is public - * @param {string} form[].form_token - hidden property to authenticate form submission - * @param {input} form[].feature_image - main image for page - * @example - * api.pageActions(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ - pageActions(task, data) { - let url, event, content; - switch (task) { - case TASK_PAGE_CREATE: - url = API_NEW_PAGE; - event = TASK_PAGE_CREATE; - content = CONTENT_TYPE_JSON; - break; - case TASK_PAGE_EDIT: - url = API_EDIT_PAGE; - event = TASK_PAGE_EDIT; - content = CONTENT_TYPE_JSON; - break; - - case TASK_PAGE_DELETE: - url = API_DELETE_PAGE; - event = TASK_PAGE_DELETE; - content = CONTENT_TYPE_JSON; - break; - - default: - break; - } - - if (this.baseURL) { - //data.key = this.key; - data.remote = true; - } else { - data.remote = false; - } - - return new Promise((resolve, reject) => { - this._request( - this.baseURL ? this.baseURL + url : url, - event, - REQUEST_TYPE_POST, - content, - data - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * Method for sending mail (if completed in settings)\ - * **POST**`/api/v1/mailer` - * @param {object[]} message - json object that contains items to be included in main site navigation - * @param {string} message[].content - message to send - * @example - * api.sendMail(message).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType" - } - ``` - */ - sendMail(message) { - return new Promise((resolve, reject) => { - this._request( - this.baseURL ? this.baseURL + API_SEND_MAIL : API_SEND_MAIL, - TASK_SEND_MAIL, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - message - ) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - /** - * *Promise method for retrieving site and member info*\ - * **GET** `/api/v1/settings/:type` - * @param {string} type - type of info requested ['site'|'member']; - * @example - * api.getInfo("type").then(data=>{ - console.log("Info Object", data); - * }) - * @returns {object} json object that contains data for requested information - * - * *info object example* - * ``` - { - "message":"message of affirmation!", - "task":"type of info request", - "data":json-data-object, - } - * ``` - */ - - getInfo(type) { - let url, task; - if (type == 'site') { - url = API_GET_SETTINGS; - task = TASK_GET_SETTINGS; - } else { - url = API_GET_MEMBER_INFO; - task = TASK_GET_MEMBER_INFO; - } - return new Promise((resolve, reject) => { - this._request(this.baseURL ? this.baseURL + url : url, task) - .then(result => { - resolve(result); - }) - .catch(err => { - reject(err); - }); - }); - } - - //-------------------------- - // private - //-------------------------- - _request( - requestURL, - eventType, - requestType = REQUEST_TYPE_GET, - contentType = CONTENT_TYPE_JSON, - requestData = null - ) { - var self = this; - return new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.addEventListener('progress', e => - self.handleLoadProgress(e, self.progressBar) - ); - request.open(requestType, requestURL, true); - request.onload = () => { - if (request.status == 200) { - let response = JSON.parse(request['response']); - resolve(response); - } else { - let error = JSON.parse(request['response']); - reject(error); - } - }; - if (requestType == REQUEST_TYPE_PUT || requestType == REQUEST_TYPE_POST) { - if ( - eventType === TASK_SETTINGS_WRITE || - eventType === TASK_PAGE_EDIT || - eventType === TASK_PAGE_CREATE || - eventType === TASK_PAGE_DELETE || - eventType === TASK_PUBLISH_SITE || - eventType === TASK_REINDEX_PAGE - ) - request.setRequestHeader('fipamo-access-token', self.token); - - switch (contentType) { - case CONTENT_TYPE_JSON: - request.setRequestHeader( - 'Content-type', - 'application/' + contentType - ); - request.send(JSON.stringify(requestData)); - break; - case CONTENT_TYPE_FORM: - request.send(requestData); - break; - } - } else { - if ( - eventType === TASK_GET_SETTINGS || - eventType === TASK_GET_MEMBER_INFO - ) { - request.setRequestHeader('fipamo-access-token', self.token); - } - request.send(); - } - }); - } - - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil((e.loaded / e.total) * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) { - progressBar.style.width = percent + '%'; - } - } -} - -export { FipamoAdminAPI as default }; diff --git a/src/libraries/FipamoContentAPI.js b/src/libraries/FipamoContentAPI.js deleted file mode 100644 index e2c2ef6..0000000 --- a/src/libraries/FipamoContentAPI.js +++ /dev/null @@ -1,294 +0,0 @@ -//** REQUEST TYPES **// -export const REQUEST_TYPE_POST = "POST"; -export const REQUEST_TYPE_GET = "GET"; -export const REQUEST_TYPE_PUT = "PUT"; -export const REQUEST_TYPE_DELETE = "DELETE"; - -//** POST CONTENT TYPES **// -export const CONTENT_TYPE_JSON = "json"; -export const CONTENT_TYPE_FORM = "x-www-form-urlencoded"; - -//** API URLS **// -export const API_GET_PAGES = "/api/v1/page/published"; -export const API_GET_FEATURED = "/api/v1/page/featured"; -export const API_GET_PAGE = "/api/v1/page/single"; -export const API_GET_MENU = "/api/v1/page/menu"; -export const API_GET_TAGS = "/api/v1/page/tags"; - -//** API TASKS **// -export const TASK_GET_CONTENT = "retrieveContent"; - -/** - * A bag of methods for getting content from an install. - */ -class FipamoContentAPI { - /** - * @constructor - * @param {string} baseURL - url of install, defaults to local - * @param {string} key - user api key found in Settings - * @author Ro - */ - constructor(baseURL = null, key = null) { - this.baseURL = null; - this.key = null; - if (key) this.key = key; - if (baseURL) this.baseURL = baseURL; - } - - /** - * *Promise method for retrieving page data*\ - * **GET**`/api/v1/page/:type` - * @param {string} type - type of pages (`published | menu | featured`) being retrieved; null value defaults to `published` - * @example - * api.pages('published').then(pages=>{ - * console.log("Pages Object", pages); - * }) - * @returns {object} json object that contains pages of requested type - * - * *pages object example* - * ``` - { - "pages": - [ - { - "id":1, - "uuid":"uuid-for-entry", - "title":"Entry Title", - "feature":"/path/to/image.jpg", - "path":"2020/09", - "layout":"page", - "tags":"these, are, tags", - "author":"your-name", - "created":"2020 Sep Tue 01", - "updated":"2020 Sep Tue 01", - "deleted":false, - "menu":false, - "featured":false, - "published":true, - "slug":"entry-title", - "content":"Premium Content" - }, - { - "id":2, - "uuid":"uuid-for-entry", - "title":"Another Title", - "feature":"/path/to/image.jpg", - "path":"2020/09", - "layout":"page", - "tags":"these, are, tags", - "author":"your-name", - "created":"2020 Sep Tue 01", - "updated":"2020 Sep Tue 01", - "deleted":false, - "menu":false, - "featured":false, - "published":true, - "slug":"another-title", - "content":"Premium Content" - } - ], - "totalItems":2 - } - * ``` - * - */ - pages(type = null) { - //set url based on request type - let requestURL = ""; - switch (type) { - default: - case "published": - requestURL = API_GET_PAGES + "?key=" + this.key; - break; - case "featured": - requestURL = API_GET_FEATURED + "?key=" + this.key; - break; - case "menu": - requestURL = API_GET_MENU + "?key=" + this.key; - break; - } - return new Promise((resolve, reject) => { - this._request( - this.baseURL ? this.baseURL + requestURL : requestURL, - TASK_GET_CONTENT - ) - .then((result) => { - resolve(result); - }) - .catch((err) => { - reject(err); - }); - }); - } - /** - * *Promise method for retrieving single page*\ - * **GET** `/api/v1/page/single/:id` - * @param {string} id - uuid of desired page - * @example - * api.page("a-uuid-for-a-page").then(page=>{ - console.log("Page Object", page); - * }) - * @returns {object} json object that contains data for requested page - * - * *page object example* - * ``` - { - "id":1, - "uuid":"uuid-for-entry", - "title":"Entry Title", - "feature":"/path/to/image.jpg", - "path":"2020/09", - "layout":"page", - "tags":"these, are, tags", - "author":"your-name", - "created":"2020 Sep Tue 01", - "updated":"2020 Sep Tue 01", - "deleted":false, - "menu":false, - "featured":false, - "published":true, - "slug":"entry-title", - "content":"Premium Content" - } - * ``` - */ - page(id) { - return new Promise((resolve, reject) => { - this._request( - this.baseURL - ? this.baseURL + API_GET_PAGE + "/" + id + "?key=" + this.key - : API_GET_PAGE + "/" + id + "?key=" + this.key, - TASK_GET_CONTENT, - REQUEST_TYPE_GET - ) - .then((result) => { - resolve(result); - }) - .catch((err) => { - reject(err); - }); - }); - } - - /** - * *Promise method for retrieving all tags used by pages*\ - * **GET** `/api/v1/page/tags` - * @example - * api.tags().then(tags=>{ - console.log("Tags Object", tags); - * }) - * @returns {object} json object that contains site tags and page stubs associated with said tag - * - * *tags object example* - * ``` - [ - { - "tag_name":"this is a tag", - "slug":"this-is-a-tag", - "pages": - [ - { - "title":"This is a title", - "slug":"this-is-a-title", - "path":"2021/04" - }, - - { - "title":"This is another title", - "slug":"this-is-another-title", - "path":"2020/10" - } - ] - }, - { - "tag_name":"this is another tag", - "slug":"this-is-another-tag", - "pages": - [ - { - "title":"This is a title", - "slug":"this-is-a-title", - "path":"2021/04" - }, - - { - "title":"This is another title", - "slug":"this-is-another-title", - "path":"2020/10" - } - ] - } - ] - * ``` - */ - tags() { - return new Promise((resolve, reject) => { - this._request( - this.baseURL - ? this.baseURL + API_GET_TAGS + "?key=" + this.key - : API_GET_TAGS + "?key=" + this.key, - TASK_GET_CONTENT, - REQUEST_TYPE_GET - ) - .then((result) => { - resolve(result); - }) - .catch((err) => { - reject(err); - }); - }); - } - - //-------------------------- - // private - //-------------------------- - _request( - requestURL, - eventType, - requestType = REQUEST_TYPE_GET, - contentType = CONTENT_TYPE_JSON, - requestData = null - ) { - var self = this; - return new Promise(function (resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.onprogress = self.handleLoadProgress; - request.open(requestType, requestURL, true); - request.onload = () => { - if (request.status == 200) { - let response = JSON.parse(request["response"]); - resolve(response); - } else { - let error = JSON.parse(request["response"]); - reject(error); - } - }; - if (requestType == REQUEST_TYPE_PUT || requestType == REQUEST_TYPE_POST) { - switch (contentType) { - case CONTENT_TYPE_JSON: - request.setRequestHeader( - "Content-type", - "application/" + contentType - ); - request.send(JSON.stringify(requestData)); - break; - case CONTENT_TYPE_FORM: - request.send(requestData); - break; - } - } else { - request.send(); - } - }); - } - - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e) { - this.percentComplete = Math.ceil((e.loaded / e.total) * 100); - //pass element to display request progress - } -} - -export { FipamoContentAPI as default }; diff --git a/src/styles/dash.scss b/src/styles/dash.scss deleted file mode 100644 index 77c9a63..0000000 --- a/src/styles/dash.scss +++ /dev/null @@ -1,43 +0,0 @@ -@use "sass:color"; -//CSS -//Bulma -@import "../../node_modules/bulma/sass/utilities/_all"; -@import "../../node_modules/bulma/sass/grid/columns"; - -//Colors -@import "main/_colors"; - -//Mixins -@import "main/_mixins"; - -//Normalize -@import "main/_normalize"; - -//Typography -@import "main/_typography"; - -//Main Structure -@import "main/_structure"; - -//Index -@import "main/_index"; - -//Settings -@import "main/_settings"; - -//Error -@import "main/_error"; - -//Navigation -@import "main/_navigation"; - -//Forms -@import "main/_forms"; - -//Posts -@import "main/_posts"; - -//Editor -@import "main/_calendar"; -@import "main/_editor"; -@import "main/_editor-highlight"; diff --git a/src/styles/main/_calendar.scss b/src/styles/main/_calendar.scss deleted file mode 100644 index 4fa433e..0000000 --- a/src/styles/main/_calendar.scss +++ /dev/null @@ -1,327 +0,0 @@ -.dp-modal { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 2000; -} - -.dp { - position: relative; - background: $primary; - box-shadow: 2px 2px 16px rgba(#000, 0.25); - line-height: 1.4; - border-radius: 4px; - max-height: 400px; - z-index: 5000; - padding-top: 6px; - overflow: hidden; - -webkit-tap-highlight-color: transparent; -} - -.dp::before { - content: ' '; - height: 6px; - position: absolute; - top: 0; - left: 0; - right: 0; - background: $highlight; -} - -.dp-permanent .dp { - padding-top: 0; - border: 1px solid #eee; - box-shadow: none; -} - -.dp-permanent .dp::before { - display: none; -} - -.dp-cal { - min-height: 300px; -} - -.dp-below { - position: absolute; - font-size: 0.8em; - width: 400px; - max-width: 90vw; -} - -.dp-permanent { - position: relative; - font-size: 0.8em; - width: 400px; - max-width: 100vw; -} - -.dp-permanent .dp { - z-index: 0; -} - -.dp-modal .dp { - position: absolute; - top: 50%; - left: 50%; - max-width: 600px; - width: calc(100% - 4em); - transform: translate(-50%, -50%); - animation: slide-up 0.3s forwards; -} - -.dp-months { - padding: 24px; -} - -.dp-years { - box-sizing: border-box; - max-height: 400px; - padding: 8px 0; - - /* HACK for Chrome on Android */ - overflow: auto !important; -} - -.dp-cal-month, -.dp-cal-year, -.dp-day, -.dp-month, -.dp-year { - box-sizing: border-box; - text-align: center; - text-decoration: none; - position: relative; - color: $white; - border-radius: 2px; - border: 0; - background: transparent; -} - -.dp-cal-header { - position: relative; - text-align: center; - padding-bottom: 16px; - background: color.adjust($primary, $lightness: -10%); -} - -.dp-next, -.dp-prev { - position: absolute; - width: 30px; - height: 30px; - overflow: hidden; - top: 14px; - color: color.adjust($primary, $lightness: -50%); - border-radius: 2px; - border: 0; - background: transparent; -} - -.dp-prev { - left: 24px; -} - -.dp-next { - right: 24px; -} - -.dp-next:focus, -.dp-prev:focus, -.dp-next:hover, -.dp-prev:hover { - outline: none; - color: inherit; -} - -.dp-prev::before, -.dp-next::before { - content: ''; - border: 2px solid; - width: 10px; - height: 10px; - display: inline-block; - transform: rotate(-45deg); - transition: border-color 0.2s; - margin: 9px 0 40px 4px; -} - -.dp-prev::before { - border-right: 0; - border-bottom: 0; -} - -.dp-next::before { - border-left: 0; - border-top: 0; - margin-left: 0; - margin-right: 4px; -} - -.dp-cal-month, -.dp-cal-year { - display: inline-block; - font-size: 1.4em; - padding: 16px 8px 8px; - outline: none; -} - -.dp-cal-footer { - text-align: center; - background: color.adjust($primary, $lightness: -10%); -} - -.dp-day-today::after { - content: ''; - height: 0; - width: 0; - border: 7px solid $highlight; - border-bottom-color: transparent; - border-left-color: transparent; - position: absolute; - top: 0; - right: 0; -} - -.dp-close, -.dp-clear, -.dp-today { - box-sizing: border-box; - display: inline-block; - width: 33%; - padding: 8px; - text-decoration: none; - color: color.adjust($primary, $lightness: -50%); - border: 0; - background: transparent; -} - -.dp-permanent .dp-close, -.dp-permanent .dp-clear { - display: none; -} - -.dp-close:active, -.dp-clear:active, -.dp-today:active, -.dp-next:active, -.dp-prev:active, -.dp-cal-month:active, -.dp-cal-year:active { - background: $highlight; - color: $white; -} -@media screen and (min-device-width: 1200px) { - .dp-close:hover, - .dp-close:focus, - .dp-clear:hover, - .dp-clear:focus, - .dp-today:hover, - .dp-today:focus, - .dp-next:hover, - .dp-next:focus, - .dp-prev:hover, - .dp-prev:focus, - .dp-cal-month:focus, - .dp-cal-month:hover, - .dp-cal-year:hover, - .dp-cal-year:focus { - background: $highlight; - color: $white; - } -} - -.dp-col-header, -.dp-day { - width: 14.2857%; - display: inline-block; - padding: 8px; - text-align: center; -} - -.dp-col-header { - color: #aaa; - text-transform: uppercase; - font-weight: 300; - font-size: 0.8em; - padding: 8px 0; -} - -.dp-month { - width: 33%; - display: inline-block; - padding: 8px; -} - -.dp-year { - display: block; - padding: 8px 40px; - width: 100%; -} - -.dp-edge-day { - color: #aaa; -} - -.dp-current, -.dp-day:hover, -.dp-month:hover, -.dp-year:hover, -.dp-current:focus, -.dp-day:focus, -.dp-month:focus, -.dp-year:focus { - outline: none; - background: color.adjust($primary, $lightness: -40%); - color: $white; -} - -.dp-selected:hover, -.dp-selected:focus, -.dp-selected { - background: $highlight; - color: color.adjust($primary, $lightness: -60%); -} - -.dp-day-disabled { - background: transparent; - color: #ddd; -} - -.dp-day-disabled:focus, -.dp-day-disabled:hover { - background: #ddd; -} - -.dp-focuser { - position: absolute; - z-index: 0; - top: 50%; - left: 50%; -} - -// Responsive -@media (max-width: 480px), (max-height: 480px) { - .dp-modal .dp { - font-size: 0.9em; - width: auto; - width: 100%; - } - - .dp-day-of-week, - .dp-day { - padding: 8px; - } -} - -@keyframes slide-up { - 0% { - transform: translate(-50%, 100%); - } - - 100% { - transform: translate(-50%, -50%); - } -} ; diff --git a/src/styles/main/_colors.scss b/src/styles/main/_colors.scss deleted file mode 100644 index 9a0c053..0000000 --- a/src/styles/main/_colors.scss +++ /dev/null @@ -1,16 +0,0 @@ -$primary: #1d3040; -$secondary: #b2cce5; -$tertiary: #f5ab35; -$highlight: #fc6399; -$white: #efebe3; -$grey: #abb7b7; -$black: #32302f; - -// editor colors -$event-cool: #32cd32; -$event-lame: #f64747; -$editor-primary: #fde3a7; -$editor-secondary: #e7903c; -$editor-tertiary: #6bb9f0; -$editor-string: #dcc6e0; -$editor-tag: #e73c4e; diff --git a/src/styles/main/_editor-highlight.scss b/src/styles/main/_editor-highlight.scss deleted file mode 100644 index bbbf5f9..0000000 --- a/src/styles/main/_editor-highlight.scss +++ /dev/null @@ -1,117 +0,0 @@ -code[class*='language-'], -pre[class*='language-'] { - color: $editor-primary; - background: none; - text-shadow: 0 1px rgba(#000, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - tab-size: 4; - hyphens: none; -} - -pre[class*='language-'] { - // padding: 1em - margin: 0.1em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: $primary; -} - -:not(pre) { - & > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; - } -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8292a2; -} - -.token { - &.punctuation { - color: $editor-secondary; - } - - &.namespace { - opacity: 0.6; - } - - &.keyword { - color: #66d9ef; - } - - &.italic { - font-style: italic; - } - - &.entity { - cursor: help; - } - - &.content { - color: $editor-tertiary; - } -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: $editor-tag; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: $editor-string; -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.regex, -.token.important { - color: $editor-secondary; -} - -.token.important, -.token.bold { - font-weight: bold; -} diff --git a/src/styles/main/_editor.scss b/src/styles/main/_editor.scss deleted file mode 100644 index 9ac5342..0000000 --- a/src/styles/main/_editor.scss +++ /dev/null @@ -1,120 +0,0 @@ -#edit-control { - // margin 10px - top: 1px; - border-radius: 3px; - width: 100%; - max-width: 880px; - margin-top: 30px; - z-index: 2000; - - button { - background: $secondary; - width: 10%; - height: 39px; - transition: all 0.3s linear; - margin: 0; - border-radius: 0; - display: inline-block; - vertical-align: top; - text-align: center; - - svg.icons { - fill: $primary; - } - } - - button:nth-child(1) { - border-radius: 3px 0 0 3px; - } - - button:nth-child(10) { - border-radius: 0 3px 3px 0; - } - - button:hover { - background: color.adjust($secondary, $lightness: -20%); - } - - #option-update { - padding: 5px 5px 1px; - display: inline-block; - vertical-align: top; - text-align: center; - } - - .icon-hide { - display: none; - visibility: hidden; - } - - .submit-start { - background: $white; - - svg { - fill: $event-cool !important; - } - } - - .submit-cool { - background: $event-cool; - - svg { - fill: $white; - } - } - - .submit-delete { - background: $event-lame !important; - - svg { - fill: $white !important; - } - } - - #option-date { - height: 30px; - padding-top: 6px; - - svg { - margin: -13px 5px 0 0; - display: inline-block; - vertical-align: top; - fill: $white; - } - } - - .content-editor-btn-icon { - padding: 5px 5px 1px; - - // border-radius 20px - color: $primary; - - svg.edit-btn-icon { - fill: $primary; - } - } - - .content-editor-btn-text { - padding: 5px; - - // border-radius 20px - color: $primary; - } - - #option-bold { - font-weight: bold; - text-decoration: none; - } - - #option-italic { - font-weight: bold; - text-decoration: none; - font-style: italic; - } - - #option-strikethrough { - font-weight: bold; - text-decoration: line-through; - font-style: italic; - } -} diff --git a/src/styles/main/_error.scss b/src/styles/main/_error.scss deleted file mode 100644 index 6029389..0000000 --- a/src/styles/main/_error.scss +++ /dev/null @@ -1,27 +0,0 @@ -#error-index { - width: 100%; - max-width: 900px; - margin: 0 auto; - padding: 10px; - height: 100%; - z-index: 10; - position: relative; - - label#title { - font-size: 100px; - color: $highlight; - font-weight: 500; - } - - label#message { - font-size: 50px; - color: $tertiary; - font-weight: 500; - } - - label#error { - font-size: 25px; - color: $event-lame; - font-weight: 500; - } -} diff --git a/src/styles/main/_forms.scss b/src/styles/main/_forms.scss deleted file mode 100644 index 4f0782b..0000000 --- a/src/styles/main/_forms.scss +++ /dev/null @@ -1,71 +0,0 @@ -form { - display: inline-block; - a { - color: $primary; - } - p { - background: $tertiary; - color: $primary; - padding: 5px; - display: block; - border-radius: 5px; - text-align: left; - } -} -input[type="email"], -input[type="password"], -input[type="text"] { - border: 0; - border-radius: 5px; - padding: 5px; - margin: 10px 5px 0 0; - font: 18px $basetype; - display: inline-block; - background: $primary; - color: $tertiary; -} -textarea { - border: 0; - border-radius: 3px; - color: $white; - font: 15px $basetype; - background: $primary; -} -button, -input[type="submit"] { - background: $highlight; - color: $primary; - font: 20px $basetype; - border-radius: 5px; - position: relative; - cursor: pointer; - border: 0; - padding: 10px 0 5px 0; - transition: all 0.3s linear; -} -select { - font: 14px $basetype; - border: 1px solid $secondary; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - color: $primary; -} -::-webkit-input-placeholder { - font: 25px $basetype; - color: $white; -} -:-moz-placeholder { - /* Firefox 18- */ - font: 25px $basetype; - color: $white; -} -::-moz-placeholder { - /* Firefox 19+ */ - font: 15px $basetype; - color: $white; -} -:-ms-input-placeholder { - font: 25px $basetype; - color: $white; -} diff --git a/src/styles/main/_index.scss b/src/styles/main/_index.scss deleted file mode 100644 index 6cce582..0000000 --- a/src/styles/main/_index.scss +++ /dev/null @@ -1,381 +0,0 @@ -#dash-index-content { - width: 100%; - height: 100%; - margin: 0 auto; - - #dash-index { - width: 100%; - height: 100%; - z-index: 10; - position: relative; - - #dash-index-wrapper { - width: 100%; - height: 100%; - margin: 0 auto; - - .dash-init, - .dash-restore { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - color: $primary; - - form { - background: $white; - padding: 15px; - width: 300px; - border-radius: 5px; - text-align: center; - - #the-logo { - width: 40px; - margin: 20px; - } - - input { - width: 290px; - margin: 0 0 10px; - height: 30px; - } - - button { - width: 300px; - } - - div { - background: $primary; - color: $white; - border-radius: 3px; - padding: 5px; - - label { - display: block; - padding: 5px; - color: $tertiary; - } - } - } - } - - .dash-restore { - display: none; - visibility: hidden; - } - - #dash-login { - width: 100%; - height: 100%; - margin: 0 auto; - display: flex; - align-items: center; - justify-content: center; - - #dash-form, - #dash-reset { - width: 300px; - padding: 0.75em; - background: $white; - border-radius: 5px; - color: $white; - text-align: center; - - #the-logo { - width: 40px; - margin: 20px; - } - - input { - width: 290px; - margin: 0 0 10px; - height: 30px; - } - - button { - width: 300px; - } - } - } - - #dash-menu { - padding: 10px; - width: 90%; - max-width: 900px; - margin: 50px auto; - - a { - display: inline-block; - vertical-align: top; - background: color.adjust($primary, $lightness: -60%); - width: 30%; - padding: 5px; - border-radius: 3px; - color: $white; - margin: 0 10px 10px 0; - - &:hover { - background: color.adjust($primary, $lightness: -60%); - } - - svg { - display: inline-block; - vertical-align: top; - fill: $white; - } - - label { - display: inline-block; - margin-top: 5px; - width: 85%; - text-align: center; - cursor: pointer; - } - } - } - - #dash-recent { - width: 100%; - max-width: 900px; - height: 100%; - padding: 5px 0 0; - margin: 0 auto; - - #recent-list { - // padding: 5px - position: relative; - - .recent-header { - height: 50px; - margin-top: 5px; - - .index-header-left { - vertical-align: top; - display: inline-block; - width: 50%; - color: $white; - font-size: 3em; - } - - .index-header-right { - width: 50%; - text-align: right; - vertical-align: top; - display: inline-block; - right: 10px; - color: $white; - - a { - button { - border-radius: 3px; - margin-left: 10px; - - svg { - transition: all 0.2s linear; - width: 40px; - height: 20px; - fill: $white; - } - } - } - } - } - - a.post-link, - a.post-video-link { - font-size: 1.5em; - font-weight: 300; - display: inline-block; - border-radius: 3px; - vertical-align: top; - text-decoration: none; - position: relative; - overflow: hidden; - - .post-video { - width: 100%; - height: 100%; - object-fit: cover; - position: absolute; - } - - label { - font-size: 1.4em; - font-weight: 700; - color: $white; - padding: 5px; - vertical-align: top; - display: inline-block; - word-wrap: break-word; - width: 100%; - text-align: center; - position: relative; - top: 35%; - text-shadow: 2px 2px 0 rgba($black, 1); - } - - div#options { - width: 100%; - position: absolute; - bottom: 0; - border-radius: 0 0 3px 3px; - background: linear-gradient( - to bottom, - rgba(#000, 0) 0%, - rgba(#000, 0.65) 100% - ); - - #option-left { - display: inline-block; - vertical-align: top; - width: 50%; - position: relative; - background: none; - - button { - border-radius: 3px; - background: $primary; - margin: 0 0 10px 10px; - - svg { - // @include object-transitions(0.1s) - width: 40px; - height: 20px; - fill: $secondary; - } - } - - .item-options { - border-radius: 3px; - margin: 5px; - display: inline-block; - } - - button[data-active='false'] { - background: $primary; - - svg { - fill: $secondary; - } - } - - button[data-active='true'] { - background: $tertiary; - - svg { - fill: $primary; - } - } - } - - #option-right { - display: inline-block; - width: 50%; - text-align: right; - - span { - font-weight: bold; - display: block; - background: $white; - color: $primary; - border-radius: 3px; - font-size: 0.6em; - text-align: center; - position: relative; - padding: 5px; - float: right; - margin: 0 10px 0 0; - bottom: -15px; - } - } - } - } - - a.recent-link:nth-child(3) { - width: 100%; - margin-bottom: 20px; - height: 500px; - } - - a.recent-link:nth-child(4), - a.recent-link:nth-child(6) { - width: 48.6%; - height: 350px; - margin: 0 10px 20px 0; - } - - a.recent-link:nth-child(5), - a.recent-link:nth-child(7) { - width: 48.6%; - height: 350px; - margin: 0 0 20px 10px; - } - } - } - } - } -} -@media only screen and (max-width: 768px) { - #dash-index-content { - #dash-index { - #dash-index-wrapper { - #dash-recent { - #recent-list { - a:nth-child(4), - a:nth-child(6) { - width: 48.9%; - } - } - } - } - } - } -} -@media only screen and (max-width: 640px) { - #dash-index-content { - #dash-index { - #dash-index-wrapper { - #dash-recent { - #recent-list { - a:nth-child(4), - a:nth-child(6) { - width: 48.5%; - } - } - } - } - } - } -} -@media only screen and (max-width: 480px) { - #dash-index-content { - #dash-index { - #dash-index-wrapper { - #dash-recent { - #recent-list { - .recent-header { - h3 { - width: 40%; - } - - .index-menu { - width: 60%; - } - } - - a.dash-link:nth-child(3), - a.dash-link:nth-child(4), - a.dash-link:nth-child(5), - a.dash-link:nth-child(6), - a.dash-link:nth-child(7) { - width: 100%; - margin: 15px 0 0; - height: 400px; - } - } - } - } - } - } -} ; diff --git a/src/styles/main/_mixins.scss b/src/styles/main/_mixins.scss deleted file mode 100644 index 09a68fc..0000000 --- a/src/styles/main/_mixins.scss +++ /dev/null @@ -1,7 +0,0 @@ -@mixin background-opacity($rgb_value, $opacity) { - background: rgba($rgb_value, $opacity); -} -@mixin custom-header($weight, $size, $line_height, $color) { - font: $weight $size/$line_height $bodyTypeSans; - color: $color; -} diff --git a/src/styles/main/_navigation.scss b/src/styles/main/_navigation.scss deleted file mode 100644 index b7c08b1..0000000 --- a/src/styles/main/_navigation.scss +++ /dev/null @@ -1,93 +0,0 @@ -#nav-index { - width: 100%; - max-width: 900px; - margin: 0 auto; - - #nav-index-wrapper { - #nav-pages { - .nav-item { - display: block; - width: 98%; - background: $white; - border-radius: 3px; - color: $highlight; - height: 30px; - padding: 10px; - margin: 0 0 10px; - font-size: 1.5em; - cursor: move; - - #item-arrows { - fill: $primary; - width: 40px; - height: 30px; - } - } - - label { - display: inline-block; - vertical-align: middle; - padding: 0; - margin: -15px 0 0 10px; - cursor: move; - } - - #nav-btns { - float: right; - top: -5px; - position: relative; - - button { - color: $white; - border-radius: 3px; - width: 40px; - margin: 0 10px; - - svg { - fill: $white; - width: 25px; - height: 20px; - } - } - } - } - } -} -@media only screen and (max-width: 375px) { - #nav-index { - #nav-index-wrapper { - #nav-pages { - .nav-item { - width: 94.5%; - font-size: 1em; - - label { - width: 40%; - vertical-align: top; - margin-top: 0; - line-height: 1em; - } - } - } - } - } -} -@media only screen and (max-width: 320px) { - #nav-index { - #nav-index-wrapper { - #nav-pages { - .nav-item { - width: 94.5%; - font-size: 1em; - - label { - width: 37%; - vertical-align: top; - margin-top: 0; - line-height: 1em; - } - } - } - } - } -} ; diff --git a/src/styles/main/_normalize.scss b/src/styles/main/_normalize.scss deleted file mode 100644 index 8794a15..0000000 --- a/src/styles/main/_normalize.scss +++ /dev/null @@ -1,351 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - // -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - // -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type='button']::-moz-focus-inner, -[type='reset']::-moz-focus-inner, -[type='submit']::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type='button']:-moz-focusring, -[type='reset']:-moz-focusring, -[type='submit']:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type='checkbox'], -[type='radio'] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type='number']::-webkit-inner-spin-button, -[type='number']::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type='search'] { - // -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type='search']::-webkit-search-decoration { - // -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - // -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} diff --git a/src/styles/main/_posts.scss b/src/styles/main/_posts.scss deleted file mode 100644 index 16c15d8..0000000 --- a/src/styles/main/_posts.scss +++ /dev/null @@ -1,701 +0,0 @@ -#post-index { - width: 100%; - max-width: 900px; - margin: 0 auto; - - #post-index-wrapper { - // padding: 0.75rem - overflow: hidden; - - #post-index-header { - margin: 10px 0 0; - - #post-index-header-left { - text-transform: capitalize; - display: inline-block; - width: 50%; - color: $white; - font-size: 3em; - } - - #post-index-header-right { - text-align: right; - display: inline-block; - width: 50%; - - a { - button { - color: $white; - border-radius: 3px; - margin-left: 10px; - width: 55px; - } - - svg { - transition: all 0.1s linear; - width: 20px; - height: 17px; - fill: $white; - } - } - - .current-filter { - color: $highlight; - text-decoration-color: $secondary; - } - } - } - - #posts-list { - margin: 20px 0 0; - - a.page-link { - background: $white; - display: inline-block; - vertical-align: top; - width: 100%; - text-decoration: none; - margin: 0 0 20px; - border-radius: 3px; - overflow: hidden; - color: color.adjust($primary, $lightness: -60%); - - label { - font-size: 2em; - font-weight: 500; - padding: 10px; - display: inline-block; - vertical-align: top; - width: 100%; - } - - div.page-bg, - div.page-video { - video { - width: 100%; - position: absolute; - } - - width: 100%; - height: 350px; - background-color: $highlight; - position: relative; - - label { - font-size: 2em; - font-weight: 700; - color: $white; - padding: 5px; - vertical-align: top; - display: inline-block; - word-wrap: break-word; - width: 100%; - text-align: center; - position: relative; - top: 35%; - text-shadow: 2px 2px 0 rgba($black, 1); - } - - #meta { - width: 100%; - background: linear-gradient( - to bottom, - rgba(#000, 0%) 0%, - rgba(#000, 0.65%) 100% - ); - border-radius: 3px; - margin: auto; - bottom: 0; - position: absolute; - padding: 0 0 20px; - - #options { - width: 100%; - bottom: 0; - position: absolute; - - #option-left { - display: inline-block; - vertical-align: top; - width: 50%; - position: relative; - background: none; - - button { - border-radius: 3px; - background: $primary; - margin: 0 0 10px 10px; - } - - svg { - transition: all 0.2s linear; - width: 40px; - height: 20px; - fill: $secondary; - } - - .item-options { - border-radius: 3px; - margin: 5px; - display: inline-block; - } - - button[data-active='false'] { - background: $primary; - - svg { - fill: $secondary; - } - } - - button[data-active='true'] { - background: $tertiary; - - svg { - fill: $primary; - } - } - } - - #option-right { - display: inline-block; - width: 50%; - text-align: right; - - span { - font-weight: bold; - display: block; - background: $white; - color: $primary; - border-radius: 3px; - font-size: 0.6em; - text-align: center; - position: relative; - padding: 5px; - float: right; - margin: 0 10px 0 0; - bottom: -15px; - } - } - } - } - } - - p { - padding: 5px 10px; - font-size: 1.2em; - font-weight: 400; - } - } - } - - .paginate { - width: 260px; - display: block; - margin: 0 auto; - - a.paginate-link { - display: inline-block; - vertical-align: top; - } - - span.count { - text-align: center; - padding: 5px; - margin-top: -2px; - display: inline-block; - width: 190px; - font-size: 1.5em; - color: $tertiary; - } - } - } -} - -#post-edit-index { - width: 100%; - overflow: hidden; - - #post-edit-index-wrapper { - width: 100%; - - #post-header { - // width 100% - - background: $highlight; - - #post-header-wrapper { - max-width: 900px; - margin: 0 auto; - padding: 0.75rem; - - label { - color: $white; - font-size: 0.9em; - font-family: $basetype; - font-weight: 600; - } - - span#post-span { - color: $primary; - font-size: 0.9em; - font-weight: 600; - text-transform: uppercase; - float: right; - } - - #post-edit-title { - textarea#post-title-text { - background: $white; - font-family: $basetype; - width: 97.6%; - height: 80px; - font-size: 2em; - color: $primary; - padding: 5px; - margin: 0 0 5px; - } - - #calendar-icon { - background: color.adjust($primary, $lightness: -15%); - border-radius: 3px 0 0 3px; - display: inline-block; - padding: 5.2px; - color: $secondary; - } - - #layouts { - select { - background: $primary; - color: $secondary; - border-radius: 3px; - border-color: $primary; - margin: 0 0 10px; - width: 100%; - height: 45px; - padding: 5px; - font-size: 1.5em; - } - } - } - - #post-meta { - #post-tags { - background: $white; - font-family: $basetype; - width: 97.6%; - height: 80px; - color: $primary; - padding: 5px; - margin: 0 0 5px; - } - - #post-options { - display: inline-block; - vertical-align: top; - width: 100%; - padding: 0; - margin: 0 0 10px; - - button.post-option-btn { - width: 25%; - height: 45px; - transition: all 0.3s linear; - margin: 0; - border-radius: 0; - display: inline-block; - vertical-align: top; - text-align: center; - } - - button.post-option-btn:nth-child(1) { - border-radius: 3px 0 0 3px; - } - - button.post-option-btn:nth-child(4) { - border-radius: 0 3px 3px 0; - } - - a { - button.button-link { - border-radius: 0 3px 3px 0 !important; - } - } - - button.post-option-btn[data-active='false'] { - background: $primary; - - svg.svg-toggle { - fill: $secondary; - } - } - - button.post-option-btn[data-active='true'] { - background: $tertiary; - - svg.icons { - fill: $primary; - } - } - } - - #page-files-upload, - #post-image-upload { - display: none; - } - } - } - } - - #post-feature { - width: 100%; - - #page-file-manager { - background: $tertiary; - width: 100%; - min-height: 300px; - - #page-file-wrapper { - width: 100%; - max-width: 900px; - padding: 10px; - margin: 0 auto; - font-weight: bold; - color: $primary; - font-size: 1em; - - #page-file-drop { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - min-height: 100px; - background: $white; - color: $primary; - vertical-align: middle; - border-radius: 5px; - margin: 0 0 10px; - - label { - cursor: pointer; - font-weight: 600px; - text-transform: capitalize; - } - - img { - width: 100%; - margin: 0; - padding: 0; - } - } - - #page-images-list, - #page-files-list { - padding: 10px 0 0; - - button.media-remove { - height: 35px; - width: 30px; - background: $event-lame; - color: $white; - float: right; - margin: 5px 5px 0; - } - - .img-item { - height: 150px; - width: 23.8%; - border-radius: 3px; - margin: 0 10px 10px 0; - display: inline-block; - cursor: pointer; - } - - .audio-item { - height: 150px; - width: 23.8%; - border-radius: 3px; - margin: 0 10px 10px 0; - display: inline-block; - cursor: pointer; - background: $primary; - background: url('/assets/images/global/upload-audio.png') - no-repeat center center / cover; - } - - .video-item { - height: 150px; - width: 23.8%; - border-radius: 3px; - margin: 0 10px 10px 0; - display: inline-block; - cursor: pointer; - background: $primary; - background: url('/assets/images/global/upload-video.png') - no-repeat center center / cover; - } - - .file-item { - height: 150px; - width: 23.8%; - border-radius: 3px; - margin: 0 10px 10px 0; - display: inline-block; - cursor: pointer; - background: $primary; - background: url('/assets/images/global/upload-doc.png') - no-repeat center center / cover; - } - } - } - } - } - - #edit-post { - width: 100%; - max-width: 880px; - margin: 0 auto; - - #edit-post-wrapper { - width: 100%; - max-width: 900px; - border-radius: 5px; - position: relative; - - textarea:focus { - outline: none; - border-color: $highlight; - } - - #edit, - #highlight { - border: 0; - width: 100%; - min-height: 300px; - height: auto; - position: absolute; - top: 0; - left: 0; - overflow: auto; - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; - } - - #highlight-content { - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; - } - - #edit, - #highlight, - #hightlight * { - font-size: 1.2em; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - line-height: 22pt; - } - - #edit { - z-index: 1; - color: transparent; - background: transparent; - caret-color: $highlight; - } - - #highlight { - z-index: 0; - - pre { - margin: 0; - - code { - font-family: $monotype; - padding: 5px; - border-radius: 5px; - line-height: 1.6em; - font-size: 1.25em; - color: $editor-primary; - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; - -webkit-line-break: normal; - -o-line-break: normal; - -moz-line-break: normal; - display: inline-block; - width: 100%; - max-width: 900px; - min-height: 200px; - caret-color: $highlight; - } - } - } - } - } - } -} -@media only screen and (max-width: 800px) { - #post-edit-index { - #post-edit-index-wrapper { - #post-header { - #post-title { - #post-date { - width: 37.6%; - } - } - } - } - } -} -@media only screen and (max-width: 768px) { - #post-edit-index { - #post-edit-index-wrapper { - #post-header { - #post-title { - #post-date { - width: 43.1%; - } - } - - #post-meta { - #edit-control { - max-width: 100%; - - button { - width: 9.91%; - } - } - } - } - } - } -} -@media only screen and (max-width: 640px) { - #post-edit-index { - #post-edit-index-wrapper { - #post-header { - #post-title { - #post-date { - width: 42%; - } - } - } - } - } -} -@media only screen and (max-width: 480px) { - #post-index { - #post-index-wrapper { - #post-index-header { - #post-index-header-left { - font-size: 1.35em; - width: 30%; - } - - #post-index-header-right { - width: 70%; - vertical-align: top; - } - } - - #post-index-menu { - a { - font-size: 0.95em; - - label { - display: none; - visibility: hidden; - } - } - } - } - } - - #post-edit-index { - #post-edit-index-wrapper { - #post-header { - #post-title { - #post-options { - margin: 5px 0 0; - width: 100%; - padding: 0; - } - - #post-date { - width: 89.2%; - } - } - - #post-meta { - #edit-control { - button { - width: 9.91%; - } - } - } - } - } - } -} -@media only screen and (max-width: 320px) { - #post-index { - #post-index-wrapper { - #post-index-menu { - a { - font-size: 0.95em; - - label { - display: none; - visibility: hidden; - } - } - } - } - } - - #post-edit-index { - #post-edit-index-wrapper { - #post-header { - #post-title { - #post-title-text { - width: 96.4%; - } - - #post-options { - margin: 5px 0 0; - width: 100%; - padding: 0; - } - - #post-date { - width: 83.1%; - } - } - - #post-meta { - #post-tags { - width: 96.4%; - } - - #edit-control { - .content-editor-btn-icon { - svg.icons { - width: 20px; - } - } - - .post-sumbit-btn { - svg.icons { - width: 20px; - } - } - - button { - width: 10%; - } - } - } - } - } - } -} ; diff --git a/src/styles/main/_settings.scss b/src/styles/main/_settings.scss deleted file mode 100644 index 29c09a1..0000000 --- a/src/styles/main/_settings.scss +++ /dev/null @@ -1,383 +0,0 @@ -#settings-actions { - position: fixed; - width: 40%; - margin-top: -85px; - left: 50%; - margin-left: -20%; - - #buttons { - width: 185px; - margin: 28px auto; - text-align: center; - background: $white; - padding: 2px; - border-radius: 3px; - - button { - color: $white; - border-radius: 3px; - width: 40px; - margin: 0 10px; - - svg { - width: 25px; - height: 20px; - fill: $white; - } - } - - button[data-render='false'] { - background: $secondary; - - svg { - fill: $primary; - } - } - - button[data-render='true'] { - background: $highlight; - - svg { - fill: $white; - } - } - } -} - -#settings-index { - width: 94%; - max-width: 900px; - margin: 0 auto; - overflow: hidden; - - #settings-index-wrapper { - padding: 0; - - button { - margin-top: 5px; - width: 100%; - height: 33px; - } - - #member-settings, - #feature-settings, - #option-settings, - #token-settings, - #backup-settings { - background: $white; - padding: 0; - border-radius: 5px 0; - width: 100%; - margin: 20px auto; - - label { - font-family: $basetype; - color: $primary; - font-weight: bold; - } - - span { - color: $secondary; - } - - input { - width: 95%; - margin: 0 5px 10px 0; - height: 30px; - padding: 10px; - } - - input#backup-upload { - visibility: hidden; - display: none; - } - - .backup-meta { - background: $primary; - color: $white; - padding: 8px; - border-radius: 3px; - margin: 5px 0 0; - text-align: center; - } - - #member-images { - padding: 10px 15px 0; - - #member-avatar-drop { - display: inline-block; - margin: 0 0 10px; - - img { - width: 100%; - border-radius: 5px; - overflow: hidden; - cursor: pointer; - display: block; - margin-bottom: 2px; - } - - input { - visibility: hidden; - display: none; - } - - #privacy-toggle { - width: 50%; - } - - #render-toggle { - width: 50%; - } - } - - #site-background { - margin: 0 0 10px; - - img { - width: 92.1%; - height: 292px; - border-radius: 3px; - overflow: hidden; - cursor: pointer; - } - - input { - visibility: hidden; - display: none; - } - } - } - - #member-meta { - padding: 10px 15px 0; - position: relative; - top: -30px; - } - - #features { - padding: 10px 15px 0; - } - } - - #mail-settings { - min-height: 240px; - - /* - input { - margin: 0 5px 5px 0; - vertical-align: top; - } - */ - - a.mail-option { - float: right; - font-family: $monotype; - font-size: 0.9em; - border-radius: 3px; - text-decoration: none; - margin: 0 0 0 5px; - } - - a.mail-option[data-enabled='true'] { - color: $highlight; - } - - a.mail-option[data-enabled='false'] { - color: $primary; - } - - div[data-enabled='false'] { - display: none; - visibility: hidden; - } - - #settings-api { - background: $primary; - border-radius: 3px; - padding: 10px; - - span { - color: $white !important; - margin: -13px 0 0 5px; - position: relative; - vertical-align: middle; - display: inline-block; - font-weight: bold; - } - - button { - color: $white; - border-radius: 3px; - width: 40px; - margin: 0; - - svg { - width: 25px; - height: 20px; - fill: $white; - } - } - - button[data-enabled='false'] { - background: $secondary; - - svg { - fill: $primary; - } - } - - button[data-enabled='true'] { - background: $highlight; - - svg { - fill: $white; - } - } - } - } - - textarea { - background: $primary; - width: 70%; - height: 89.5px; - color: $tertiary; - padding: 10px; - display: inline-block; - margin-bottom: 10px; - } - - span#key { - color: $white; - background: $primary; - font-size: 0.9em; - border-radius: 3px; - padding: 5px; - display: block; - width: 95%; - overflow: hidden; - } - - #feature-settings { - #feature-api, - #dynamic-api { - background: $white; - border-radius: 3px; - padding: 5px; - - button { - color: $white; - border-radius: 3px; - width: 200px; - margin: 0; - height: 200px; - font-size: 1em; - - svg.icons { - width: 100px; - height: 90px; - fill: $white; - position: relative; - display: block; - margin: 12px auto; - } - - span { - color: $white; - margin: 6px 0 0 5px; - position: relative; - vertical-align: middle; - display: inline-block; - font-weight: bold; - } - } - - button[data-enabled='false'] { - background: $secondary; - - svg { - fill: $primary; - } - - span { - color: $primary; - } - } - - button[data-enabled='true'] { - background: $highlight; - - svg { - fill: $white; - } - } - } - } - - #token-settings { - #keys-tokens { - padding: 10px 15px 0; - - #member-api-key, - #form-token { - background: $primary; - border-radius: 3px; - padding: 5px; - color: $white; - } - } - } - - #option-settings { - #theme-settings { - a { - width: 95%; - margin: 0 5px 5px 0; - height: 15px; - padding: 10px; - display: inline-block; - } - - a[data-enabled='false'] { - background: $white; - color: $primary; - border-radius: 3px; - font-weight: bold; - border-top: 1px $highlight solid; - border-bottom: 1px $highlight solid; - } - - a[data-enabled='true'] { - background: $highlight; - color: $primary; - border-radius: 3px; - font-weight: bold; - border-top: 1px $primary solid; - border-bottom: 1px $primary solid; - - svg { - fill: $primary; - display: inline-block; - float: right; - } - } - } - } - } -} - -// Responsive for Settings -@media only screen and (max-width: 480px) { - #settings-actions { - margin-left: -42%; - - #buttons { - width: 150px; - background: none; - - button { - margin: 0 5px; - } - } - } -} ; diff --git a/src/styles/main/_structure.scss b/src/styles/main/_structure.scss deleted file mode 100644 index 6be96be..0000000 --- a/src/styles/main/_structure.scss +++ /dev/null @@ -1,251 +0,0 @@ -html, -body { - background: $primary - linear-gradient( - 0deg, - rgba($primary, 1) 0%, - rgba(color.adjust($primary, $lightness: 10%), 1) 100% - ) - no-repeat; - font: 400 1em $basetype; - height: 100%; -} - -a { - font: 300 1em $basetype; - color: $secondary; - text-decoration: underline; - transition: all 0.2s linear; -} - -svg.icons { - width: 25px; - fill: $secondary; -} - -#notifications { - perspective: 1000px; - position: fixed; - z-index: 2000; - height: 55px; - width: 100%; - display: block; - align-items: center; - justify-content: center; - padding: 0; - margin-top: -55px; - - #notify-message { - margin: 0 auto; - - // ks-easing( "out-back" ); - transition: all 0.6s cubic-bezier(0.83, 0.05, 0.28, 1); - - // padding-top -125px - height: 50px; - width: 500px; - display: flex; - align-items: center; - justify-content: center; - opacity: 1; - transform-style: preserve-3d; - transform: rotateX(120deg); - transform-origin: 50% 0; - overflow: hidden; - - #notify-good, - #notify-lame, - #notify-working { - display: block; - } - - #notify-working-icon { - animation: spin 2s linear infinite; - @keyframes spin { - transform: rotate(360deg); - } - } - - .notify-icon { - background: $black; - padding: 8px 5px 5px; - border-radius: 5px 0 0 5px; - height: 30px; - width: 30px; - text-align: center; - border: 2px solid $white; - } - - #notify-text { - color: $white; - background: $black; - width: 400px; - height: 28px; - padding: 15px 0 0; - border-radius: 0 5px 5px 0; - border: 2px solid $white; - text-align: center; - overflow: hidden; - position: relative; - - #notify-progress { - width: 0; - background: $highlight; - height: 43px; - position: absolute; - top: 0; - } - - p { - top: -15px; - display: block; - position: relative; - } - } - - .icons { - fill: $white; - } - } -} - -.notify-close { - transform-style: preserve-3d; - transform: rotateX(-120deg); -} - -.notify-open { - transform-style: preserve-3d; - transform: rotateX(0deg); -} - -.blog-container { - width: 100%; -} - -.main-container { - margin: 0 auto; - z-index: 10; - position: relative; - height: 100%; - - section { - header { - width: 100%; - max-width: 900px; - margin: 10px auto; - background: $white; - height: 50px; - border-radius: 5px; - - #wrapper { - padding: 5px; - - #left, - #right { - width: 49.7%; - display: inline-block; - vertical-align: top; - min-height: 60px; - - #the-logo { - width: 29px; - } - } - - #right { - text-align: right; - color: $white; - - // word-break: break-all; - #dash-menu { - text-align: right; - - a { - button { - border-radius: 50px; - - svg { - transition: all 0.2s linear; - width: 40px; - height: 20px; - fill: $white; - } - } - - &:hover { - button { - background: $primary; - } - - svg { - fill: $secondary; - } - } - } - } - } - } - } - } -} /* Mozilla based browsers */ -::selection { - background-color: $highlight; - color: $white; -} - -/* Works in Opera */ -::-o-selection { - background-color: $highlight; - color: $white; -} - -::-ms-selection { - background-color: $highlight; - color: $white; -} - -/* Works in Internet Explorer */ -::-webkit-selection { - background-color: $highlight; - color: $white; -} - -// Responsive -@media only screen and (max-width: 901px) { - .main-container { - padding: 10px; - } -} - -@media only screen and (max-width: 800px) { - .main-container { - section { - header { - #wrapper { - #left, - #right { - display: inline-block; - } - } - } - } - } -} -@media only screen and (max-width: 480px) { - .main-container { - section { - header { - #wrapper { - #left { - width: 30%; - } - - #right { - width: 70%; - } - } - } - } - } -} ; diff --git a/src/styles/main/_typography.scss b/src/styles/main/_typography.scss deleted file mode 100644 index f9140ff..0000000 --- a/src/styles/main/_typography.scss +++ /dev/null @@ -1,23 +0,0 @@ -$basetype: helvetica, arial, sans-serif; -$monotype: 'Lucida Console', monaco, monospace; - -h1, -h2, -h3 { - color: $white; -} - -h1 { - font-size: 2em; - font-weight: 400; -} - -h2 { - font-size: 1.75em; - font-weight: 400; -} - -h3 { - font-size: 1.5em; - font-weight: 300; -} diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +<?php + +namespace Tests; + +use Illuminate\Contracts\Console\Kernel; +use Illuminate\Foundation\Application; + +trait CreatesApplication +{ + /** + * Creates the application. + */ + public function createApplication(): Application + { + $app = require __DIR__.'/../bootstrap/app.php'; + + $app->make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +<?php + +namespace Tests\Feature; + +// use Illuminate\Foundation\Testing\RefreshDatabase; +use Tests\TestCase; + +class ExampleTest extends TestCase +{ + /** + * A basic test example. + */ + public function test_the_application_returns_a_successful_response(): void + { + $response = $this->get('/'); + + $response->assertStatus(200); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +<?php + +namespace Tests; + +use Illuminate\Foundation\Testing\TestCase as BaseTestCase; + +abstract class TestCase extends BaseTestCase +{ + use CreatesApplication; +} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php new file mode 100644 index 0000000..5773b0c --- /dev/null +++ b/tests/Unit/ExampleTest.php @@ -0,0 +1,16 @@ +<?php + +namespace Tests\Unit; + +use PHPUnit\Framework\TestCase; + +class ExampleTest extends TestCase +{ + /** + * A basic test example. + */ + public function test_that_true_is_true(): void + { + $this->assertTrue(true); + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +});