New version with themes

This commit is contained in:
Daisuke 2020-03-31 18:46:27 -06:00
parent be2229cdc1
commit c16f58c013
137 changed files with 43075 additions and 0 deletions

241
LICENSE Normal file
View File

@ -0,0 +1,241 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are 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.
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.
Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software.
A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.
The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.
An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license.
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 Affero 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 s ue 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. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
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 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 work with which it is combined will remain governed by version 3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.
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 AGPL, see <http://www.gnu.org/licenses/>.

7
README.md Normal file
View File

@ -0,0 +1,7 @@
# DashboardFE
A frontend for Mastodon/Pleroma with heavy inspiration from the tumblr user dashboard. Written in PHP
The frontend should work on a standard LAMP stack with the most common php extensions enabled.
The frontend works and it's available for testing at https://ayanami.ga/dashboard but it's in a state of constant change, so check frequently here for updates.

314
action.php Normal file
View File

@ -0,0 +1,314 @@
<?php
//ini_set('display_errors', 1);
//ini_set("log_errors", 1);
//error_reporting(1);
ini_set("error_log", "php-error.log");
/* this file handles some actions that are most of the time requested
by the javascript portion of the FE */
/* since most of the time the file is loaded sandalonely, so we have to
include the initializing files if they haven't been included already */
require_once "vendor/simple_html_dom.php";
require_once "settings.php";
require_once "include/init.php";
require_once "include/functions.php";
$srv = $user_settings['instance'];
if (isset($_GET['action']) && $_GET['action'] == "settings"){
//file_put_contents("settings.txt",var_export($_GET,true));
foreach($_GET as $key => $value){
switch($key){
case "explicit":
$user_settings['explicit'] = htmlentities($value);
break;
case "emoji":
$user_settings['emoji'] = intval($value);
break;
case "text":
$user_settings['text'] = ($value == "on" ? "on" : "off");
break;
case "attach":
$user_settings['attach'] = ($value == "on" ? "on" : "off");
break;
case "replies":
$user_settings['replies'] = ($value == "on" ? "on" : "off");
break;
case "setreblog":
$user_settings['reblog'] = ($value == "on" ? "on" : "off");
break;
case "videoloop":
$user_settings['videoloop'] = ($value == "on" ? "on" : "off");
break;
case "theme":
$user_settings['theme'] = sanitize($value);
break;
case "instance":
if (!isset($_COOKIE['token'])){
$user_settings['instance'] = htmlentities($value);
}
break;
case "fg":
$theme['fg'] = sanitize($value);
break;
case "bg":
$theme['bg'] = sanitize($value);
break;
case "tx":
$theme['tx'] = sanitize($value);
break;
case "lc":
$theme['lc'] = sanitize($value);
break;
case "bc":
$theme['bc'] = sanitize($value);
break;
case "br":
$theme['br'] = sanitize($value);
break;
case "bw":
$theme['bw'] = sanitize($value);
break;
}
}
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
setrawcookie("theme",base64_encode(json_encode($theme)),time()+60*60*24*30,'/');
die();
}
$thread = (isset($_GET['thread']) ? htmlentities($_GET['thread']) : false);
$mode = (isset($_GET['mode']) ? htmlentities($_GET['mode']) : false);
$ajax = (isset($_GET['a']) ? true : false);
foreach($_GET as $key => $value){
switch($key){
case "fav":
$result = favourite($value,($mode === 'on' ? true : false));
if ($ajax){
echo $result;
die();
} else {
header("Location: ?thread=".$value);
}
break;
case "reblog":
$result =reblog($value,($mode === 'on' ? true : false));
if ($ajax){
echo $result;
die();
} else {
header("Location: ?thread=".$value);
}
break;
case "mute":
if($thread){
$rel = api_post("statuses/".htmlentities($value)."/".($mode === 'true' ? "" : "un")."mute",array());
echo (isset($rel[0]['muting']) ? "1" : "0" );
} else {
$rel = api_post("accounts/".htmlentities($value)."/".($mode === 'true' ? "" : "un")."mute",array());
echo (isset($rel[0]['muting']) ? "1" : "0" );
}
die();
break;
case "list":
if($mode === 'true'){
$rel = api_post("lists/".htmlentities($value)."/accounts?account_ids[]=".$_GET['user'],array());
var_dump($rel);
} else {
$rel = api_delete("lists/".htmlentities($value)."/accounts?account_ids[]=".$_GET['user'],array());
var_dump($rel);
}
die();
break;
case "block":
$rel = api_post("accounts/".htmlentities($value)."/".($mode === 'true' ? "" : "un")."block",array());
echo (isset($rel[0]['blocking']) ? "1" : "0" );
die();
break;
case "bookmark":
$status = api_get("statuses/".htmlentities($value));
$rel = api_post("statuses/".htmlentities($value)."/".($status['bookmarked'] == 'true' ? "un" : "")."bookmark",array());
die();
break;
case "notif":
echo getnotif(intval($value),(isset($_GET['max']) ? true : false));
die();
break;
case "delete":
echo delpost(htmlentities($value));
die();
break;
case "replies":
$since = (isset($_GET['since']) ? htmlentities($_GET['since']) : false);
foreach(getreplies(htmlentities($value),$since) as $elem){
echo render_reply($elem['content']);
}
die();
break;
case "notes":
$notes = getnotes($value);
foreach ($notes as $note){
echo "<div id='".$note[1]['id']."'>
<a href='?user=".$note[1]['id']."' class='ldr' title='".$note[1]['acct']."'>
<div class='nte' style='background-image:url(".$note[1]['avatar'].");'>
<div class='nte_type' style='background-color:".($note[0] == "fav" ? "red" : "green")."'><span>".($note[0] == "fav" ? "&#xe802;" : "&#xe826;")."</span></div>
</div>
</a>
</div>";
}
die();
break;
case "follow":
$rel = api_post("accounts/".htmlentities($value)."/follow",array());
echo ($rel['following'] == true || $rel['requested'] == true ? "1" : "0" );
die();
break;
case "unfollow":
$rel = api_post("accounts/".htmlentities($value)."/unfollow",array());
echo ($rel['following'] == false ? "1" : "0" );
die();
break;
case "nsfw":
if(in_array($value,$user_settings['nsfw'])){
$key = array_search($value, $user_settings['nsfw']);
unset($user_settings['nsfw'][$key]);
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
} else {
$user_settings['nsfw'][] = htmlentities($value);
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
}
echo "1";
die();
break;
case "hide":
if(!isset($user_settings['hide'])|| !is_array($user_settings['hide'])){
$user_settings['hide'] = array();
}
if(in_array($value,$user_settings['hide'])){
$key = array_search($value, $user_settings['hide']);
unset($user_settings['hide'][$key]);
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
} else {
$user_settings['hide'][] = htmlentities($value);
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
}
echo "1";
die();
break;
case "userinfo":
$info = api_get("accounts/".htmlentities($value));
$rel = api_get("accounts/relationships?id=".htmlentities($value));
$image=imagecreatefromstring(file_get_contents($info['avatar']));
$thumb=imagecreatetruecolor(1,1);
imagecopyresampled($thumb,$image,0,0,0,0,1,1,imagesx($image),imagesy($image));
$mainColor=strtoupper(dechex(imagecolorat($thumb,0,0)));
echo "<div class='userinfo_he' style='background-color:#$mainColor; background-size:cover; background-image:url(" . $info['header_static'] . ");'>
<span style='margin:5px; display:inline-block;'>
<a href='".$info['url']."' target='_blank' class='external' style='font-weight:bold; font-size:13px; text-decoration:none; color: white; text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;'>".$info['acct']."</a>
</span>
</div>
<div class='userinfo_co'>
<div class='avatar' style='position: absolute; left:35%; top:-60px; display:inline-block; margin:0px; background-color:white; background-image:url(" . $info['avatar'] . "); text-align:center; border:3px solid white; border-radius:10px; clear:both;'></div>
<div style='font-weight:bold; padding-top:30px; display:block;'><a href='?user=".$info['id']."' class='link ldr' style='font-size:15px;'>".emojify($info['display_name'],$info['emojis'],20)."</a></div><br>
<div style='font-weight:normal; font-size:12px; line-height:12px;'>".emojify($info['note'],$info['emojis'],20)."</div><br>
<span style='width:290; height:30px; display:block; margin-top:10px;'>
".($logedin ? "<span id='".$info['id']."' class='profileButton ".(($rel[0]['following'] || $rel[0]['requested']) ? "unfollow" : "follow" )."'>".($rel[0]['following'] || $rel[0]['requested'] ? "Following" : "Follow" )."</span>" : "")."
<span id='".$info['id']."' class='profileButton ".(in_array($info['id'],$user_settings['nsfw']) ? "unnsfw" : "nsfw" )."'>".(in_array($info['id'],$user_settings['nsfw']) ? "NSFW <span class='fontello'>&#xf205;</span>" : "NSFW <span class='fontello'>&#xf204;</span>" )."</span>
</span>
</div>
";
die();
break;
case "previewpost":
$post = api_get("statuses/".htmlentities($value));
echo "<div class='notifContents' style='max-width:none;'>
<div style='flex: 0 0 60px; background-size:cover; background-image:url(".$post['account']['avatar']."); border-radius:5px;'></div>
<div style='flex: 1; padding-left:5px; padding-right:5px; word-break: break-all; overflow:hidden;'>
<span><span style='font-size:12px; font-weight:bold;'><a class='link' style='font-size:12px;' href='?user=9hwsQhjN9oox1iSfK4'>".emojify($post['account']['display_name'],$post['account']['emojis'],20)."</a></span></span>
<a style='text-decoration:none;' class='ldr' href='?thread=9nngbBWBRHvILwEoF6' target='_blank'><span style='display:block; opacity:1; font-size:10px; line-height:12px;'>".emojify(strip_tags($post['content'],'<br>'),$post['emojis'],20)."</span></a>
</div>
".(!empty($post['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(".$post['media_attachments'][0]['url'].");'></div>" :"")."
</div>";
die();
break;
case "themefile":
//echo $value;
echo themes("get",$value);
die();
break;
}
}
if(isset($_POST['status'])){
if(isset($_POST['scope'])){
switch($_POST['scope']){
case "1":
$scope = "public";
break;
case "2":
$scope = "unlisted";
break;
case "3":
$scope = "private";
break;
case "4":
$scope = "direct";
break;
}
} else {
if (isset($_POST['thread'])){
$result = api_get("statuses/".htmlentities($_POST['thread']));
$scope = $result['visibility'];
} else {
$scope = "public";
}
}
$uploaded = (empty($_POST['uploaded']) ? array() : explode("|",$_POST['uploaded']));
$reply = json_decode(sendpost(trim($_POST['status']),$uploaded,$_POST['thread'],false,$scope,(isset($_POST['sensitive']) ? $_POST['sensitive'] : false),(isset($_POST['spoiler']) && $_POST['spoiler'] != 'Title (optional)' ? $_POST['spoiler'] : false)),true);
echo render_reply($reply);
die();
}

3625
css/animate.css vendored Normal file

File diff suppressed because it is too large Load Diff

85
css/animation.css Normal file
View File

@ -0,0 +1,85 @@
/*
Animation example, for spinners
*/
.animate-spin {
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
-webkit-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
display: inline-block;
}
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-webkit-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-o-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-ms-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

102
css/fontello-codes.css vendored Normal file
View File

@ -0,0 +1,102 @@
.icon-search:before { content: '\e800'; } /* '' */
.icon-mail:before { content: '\e801'; } /* '' */
.icon-heart:before { content: '\e802'; } /* '' */
.icon-heart-empty:before { content: '\e803'; } /* '' */
.icon-star:before { content: '\e804'; } /* '' */
.icon-star-empty:before { content: '\e805'; } /* '' */
.icon-user:before { content: '\e806'; } /* '' */
.icon-video:before { content: '\e807'; } /* '' */
.icon-picture:before { content: '\e808'; } /* '' */
.icon-th-large:before { content: '\e809'; } /* '' */
.icon-th:before { content: '\e80a'; } /* '' */
.icon-th-list:before { content: '\e80b'; } /* '' */
.icon-ok:before { content: '\e80c'; } /* '' */
.icon-ok-circled:before { content: '\e80d'; } /* '' */
.icon-cancel:before { content: '\e80e'; } /* '' */
.icon-cancel-circled:before { content: '\e80f'; } /* '' */
.icon-plus-circled:before { content: '\e810'; } /* '' */
.icon-plus:before { content: '\e811'; } /* '' */
.icon-minus:before { content: '\e812'; } /* '' */
.icon-minus-circled:before { content: '\e813'; } /* '' */
.icon-help-circled:before { content: '\e814'; } /* '' */
.icon-info-circled:before { content: '\e815'; } /* '' */
.icon-home:before { content: '\e816'; } /* '' */
.icon-link:before { content: '\e817'; } /* '' */
.icon-attach:before { content: '\e818'; } /* '' */
.icon-lock:before { content: '\e819'; } /* '' */
.icon-eye:before { content: '\e81a'; } /* '' */
.icon-eye-off:before { content: '\e81b'; } /* '' */
.icon-pin:before { content: '\e81c'; } /* '' */
.icon-tag:before { content: '\e81d'; } /* '' */
.icon-bookmark:before { content: '\e81e'; } /* '' */
.icon-thumbs-up:before { content: '\e81f'; } /* '' */
.icon-thumbs-down:before { content: '\e820'; } /* '' */
.icon-download:before { content: '\e821'; } /* '' */
.icon-upload:before { content: '\e822'; } /* '' */
.icon-forward:before { content: '\e823'; } /* '' */
.icon-pencil:before { content: '\e824'; } /* '' */
.icon-edit:before { content: '\e825'; } /* '' */
.icon-retweet:before { content: '\e826'; } /* '' */
.icon-comment:before { content: '\e827'; } /* '' */
.icon-bell:before { content: '\e828'; } /* '' */
.icon-attention:before { content: '\e829'; } /* '' */
.icon-attention-circled:before { content: '\e82a'; } /* '' */
.icon-trash-empty:before { content: '\e82b'; } /* '' */
.icon-block:before { content: '\e82c'; } /* '' */
.icon-cog:before { content: '\e82d'; } /* '' */
.icon-cog-alt:before { content: '\e82e'; } /* '' */
.icon-wrench:before { content: '\e82f'; } /* '' */
.icon-down-open:before { content: '\e830'; } /* '' */
.icon-left-open:before { content: '\e831'; } /* '' */
.icon-right-open:before { content: '\e832'; } /* '' */
.icon-up-open:before { content: '\e833'; } /* '' */
.icon-down-big:before { content: '\e834'; } /* '' */
.icon-left-big:before { content: '\e835'; } /* '' */
.icon-right-big:before { content: '\e836'; } /* '' */
.icon-up-big:before { content: '\e837'; } /* '' */
.icon-cw:before { content: '\e838'; } /* '' */
.icon-ccw:before { content: '\e839'; } /* '' */
.icon-arrows-cw:before { content: '\e83a'; } /* '' */
.icon-check:before { content: '\e83b'; } /* '' */
.icon-globe:before { content: '\e83c'; } /* '' */
.icon-spin1:before { content: '\e83d'; } /* '' */
.icon-spin2:before { content: '\e83e'; } /* '' */
.icon-spin3:before { content: '\e83f'; } /* '' */
.icon-spin4:before { content: '\e840'; } /* '' */
.icon-check-empty:before { content: '\f096'; } /* '' */
.icon-bookmark-empty:before { content: '\f097'; } /* '' */
.icon-menu:before { content: '\f0c9'; } /* '' */
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
.icon-download-cloud:before { content: '\f0ed'; } /* '' */
.icon-upload-cloud:before { content: '\f0ee'; } /* '' */
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
.icon-quote-left:before { content: '\f10d'; } /* '' */
.icon-quote-right:before { content: '\f10e'; } /* '' */
.icon-reply:before { content: '\f112'; } /* '' */
.icon-code:before { content: '\f121'; } /* '' */
.icon-reply-all:before { content: '\f122'; } /* '' */
.icon-help:before { content: '\f128'; } /* '' */
.icon-info:before { content: '\f129'; } /* '' */
.icon-attention-alt:before { content: '\f12a'; } /* '' */
.icon-lock-open-alt:before { content: '\f13e'; } /* '' */
.icon-minus-squared:before { content: '\f146'; } /* '' */
.icon-ok-squared:before { content: '\f14a'; } /* '' */
.icon-pencil-squared:before { content: '\f14b'; } /* '' */
.icon-link-ext-alt:before { content: '\f14c'; } /* '' */
.icon-export-alt:before { content: '\f14d'; } /* '' */
.icon-doc-inv:before { content: '\f15b'; } /* '' */
.icon-doc-text-inv:before { content: '\f15c'; } /* '' */
.icon-thumbs-up-alt:before { content: '\f164'; } /* '' */
.icon-thumbs-down-alt:before { content: '\f165'; } /* '' */
.icon-sliders:before { content: '\f1de'; } /* '' */
.icon-share:before { content: '\f1e0'; } /* '' */
.icon-bell-off:before { content: '\f1f6'; } /* '' */
.icon-bell-off-empty:before { content: '\f1f7'; } /* '' */
.icon-trash:before { content: '\f1f8'; } /* '' */
.icon-toggle-off:before { content: '\f204'; } /* '' */
.icon-toggle-on:before { content: '\f205'; } /* '' */
.icon-user-plus:before { content: '\f234'; } /* '' */
.icon-user-times:before { content: '\f235'; } /* '' */
.icon-hashtag:before { content: '\f292'; } /* '' */

155
css/fontello-embedded.css vendored Normal file

File diff suppressed because one or more lines are too long

102
css/fontello-ie7-codes.css vendored Normal file
View File

@ -0,0 +1,102 @@
.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
.icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
.icon-heart-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-star-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-video { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
.icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
.icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
.icon-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
.icon-ok-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
.icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
.icon-plus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
.icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
.icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
.icon-minus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
.icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
.icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
.icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
.icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
.icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
.icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
.icon-pin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
.icon-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
.icon-bookmark { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
.icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
.icon-thumbs-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
.icon-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe824;&nbsp;'); }
.icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe825;&nbsp;'); }
.icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe826;&nbsp;'); }
.icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe827;&nbsp;'); }
.icon-bell { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe828;&nbsp;'); }
.icon-attention { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe829;&nbsp;'); }
.icon-attention-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82a;&nbsp;'); }
.icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82b;&nbsp;'); }
.icon-block { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82c;&nbsp;'); }
.icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82d;&nbsp;'); }
.icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82e;&nbsp;'); }
.icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82f;&nbsp;'); }
.icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe830;&nbsp;'); }
.icon-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe831;&nbsp;'); }
.icon-right-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
.icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe833;&nbsp;'); }
.icon-down-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
.icon-left-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe835;&nbsp;'); }
.icon-right-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe836;&nbsp;'); }
.icon-up-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe837;&nbsp;'); }
.icon-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe838;&nbsp;'); }
.icon-ccw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83a;&nbsp;'); }
.icon-check { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83b;&nbsp;'); }
.icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83c;&nbsp;'); }
.icon-spin1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83d;&nbsp;'); }
.icon-spin2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83e;&nbsp;'); }
.icon-spin3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83f;&nbsp;'); }
.icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe840;&nbsp;'); }
.icon-check-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;&nbsp;'); }
.icon-bookmark-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;&nbsp;'); }
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
.icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;&nbsp;'); }
.icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;&nbsp;'); }
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
.icon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;&nbsp;'); }
.icon-quote-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;&nbsp;'); }
.icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
.icon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;&nbsp;'); }
.icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;&nbsp;'); }
.icon-help { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;&nbsp;'); }
.icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;&nbsp;'); }
.icon-attention-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;&nbsp;'); }
.icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
.icon-minus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;&nbsp;'); }
.icon-ok-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;&nbsp;'); }
.icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;&nbsp;'); }
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;&nbsp;'); }
.icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;&nbsp;'); }
.icon-doc-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;&nbsp;'); }
.icon-doc-text-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;&nbsp;'); }
.icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;&nbsp;'); }
.icon-thumbs-down-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;&nbsp;'); }
.icon-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1de;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1e0;&nbsp;'); }
.icon-bell-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f6;&nbsp;'); }
.icon-bell-off-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f7;&nbsp;'); }
.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f8;&nbsp;'); }
.icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf204;&nbsp;'); }
.icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf205;&nbsp;'); }
.icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf234;&nbsp;'); }
.icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf235;&nbsp;'); }
.icon-hashtag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf292;&nbsp;'); }

113
css/fontello-ie7.css vendored Normal file
View File

@ -0,0 +1,113 @@
[class^="icon-"], [class*=" icon-"] {
font-family: 'fontello';
font-style: normal;
font-weight: normal;
/* fix buttons height */
line-height: 1em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
}
.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
.icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
.icon-heart-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-star-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-video { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
.icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
.icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
.icon-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
.icon-ok-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
.icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
.icon-cancel-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
.icon-plus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
.icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
.icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe812;&nbsp;'); }
.icon-minus-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe813;&nbsp;'); }
.icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe814;&nbsp;'); }
.icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe815;&nbsp;'); }
.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
.icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe817;&nbsp;'); }
.icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe818;&nbsp;'); }
.icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe819;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81a;&nbsp;'); }
.icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81b;&nbsp;'); }
.icon-pin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81c;&nbsp;'); }
.icon-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81d;&nbsp;'); }
.icon-bookmark { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81e;&nbsp;'); }
.icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe81f;&nbsp;'); }
.icon-thumbs-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe820;&nbsp;'); }
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe821;&nbsp;'); }
.icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe822;&nbsp;'); }
.icon-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe823;&nbsp;'); }
.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe824;&nbsp;'); }
.icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe825;&nbsp;'); }
.icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe826;&nbsp;'); }
.icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe827;&nbsp;'); }
.icon-bell { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe828;&nbsp;'); }
.icon-attention { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe829;&nbsp;'); }
.icon-attention-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82a;&nbsp;'); }
.icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82b;&nbsp;'); }
.icon-block { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82c;&nbsp;'); }
.icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82d;&nbsp;'); }
.icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82e;&nbsp;'); }
.icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82f;&nbsp;'); }
.icon-down-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe830;&nbsp;'); }
.icon-left-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe831;&nbsp;'); }
.icon-right-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
.icon-up-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe833;&nbsp;'); }
.icon-down-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
.icon-left-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe835;&nbsp;'); }
.icon-right-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe836;&nbsp;'); }
.icon-up-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe837;&nbsp;'); }
.icon-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe838;&nbsp;'); }
.icon-ccw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83a;&nbsp;'); }
.icon-check { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83b;&nbsp;'); }
.icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83c;&nbsp;'); }
.icon-spin1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83d;&nbsp;'); }
.icon-spin2 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83e;&nbsp;'); }
.icon-spin3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83f;&nbsp;'); }
.icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe840;&nbsp;'); }
.icon-check-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf096;&nbsp;'); }
.icon-bookmark-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf097;&nbsp;'); }
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e0;&nbsp;'); }
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0e5;&nbsp;'); }
.icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ed;&nbsp;'); }
.icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ee;&nbsp;'); }
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0f3;&nbsp;'); }
.icon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;&nbsp;'); }
.icon-quote-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10e;&nbsp;'); }
.icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf112;&nbsp;'); }
.icon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;&nbsp;'); }
.icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf122;&nbsp;'); }
.icon-help { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf128;&nbsp;'); }
.icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf129;&nbsp;'); }
.icon-attention-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12a;&nbsp;'); }
.icon-lock-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf13e;&nbsp;'); }
.icon-minus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf146;&nbsp;'); }
.icon-ok-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14a;&nbsp;'); }
.icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14b;&nbsp;'); }
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14c;&nbsp;'); }
.icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf14d;&nbsp;'); }
.icon-doc-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15b;&nbsp;'); }
.icon-doc-text-inv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf15c;&nbsp;'); }
.icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf164;&nbsp;'); }
.icon-thumbs-down-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf165;&nbsp;'); }
.icon-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1de;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1e0;&nbsp;'); }
.icon-bell-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f6;&nbsp;'); }
.icon-bell-off-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f7;&nbsp;'); }
.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1f8;&nbsp;'); }
.icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf204;&nbsp;'); }
.icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf205;&nbsp;'); }
.icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf234;&nbsp;'); }
.icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf235;&nbsp;'); }
.icon-hashtag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf292;&nbsp;'); }

158
css/fontello.css vendored Normal file
View File

@ -0,0 +1,158 @@
@font-face {
font-family: 'fontello';
src: url('../font/fontello.eot?1332687');
src: url('../font/fontello.eot?1332687#iefix') format('embedded-opentype'),
url('../font/fontello.woff2?1332687') format('woff2'),
url('../font/fontello.woff?1332687') format('woff'),
url('../font/fontello.ttf?1332687') format('truetype'),
url('../font/fontello.svg?1332687#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
src: url('../font/fontello.svg?1332687#fontello') format('svg');
}
}
*/
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: "fontello";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
.icon-search:before { content: '\e800'; } /* '' */
.icon-mail:before { content: '\e801'; } /* '' */
.icon-heart:before { content: '\e802'; } /* '' */
.icon-heart-empty:before { content: '\e803'; } /* '' */
.icon-star:before { content: '\e804'; } /* '' */
.icon-star-empty:before { content: '\e805'; } /* '' */
.icon-user:before { content: '\e806'; } /* '' */
.icon-video:before { content: '\e807'; } /* '' */
.icon-picture:before { content: '\e808'; } /* '' */
.icon-th-large:before { content: '\e809'; } /* '' */
.icon-th:before { content: '\e80a'; } /* '' */
.icon-th-list:before { content: '\e80b'; } /* '' */
.icon-ok:before { content: '\e80c'; } /* '' */
.icon-ok-circled:before { content: '\e80d'; } /* '' */
.icon-cancel:before { content: '\e80e'; } /* '' */
.icon-cancel-circled:before { content: '\e80f'; } /* '' */
.icon-plus-circled:before { content: '\e810'; } /* '' */
.icon-plus:before { content: '\e811'; } /* '' */
.icon-minus:before { content: '\e812'; } /* '' */
.icon-minus-circled:before { content: '\e813'; } /* '' */
.icon-help-circled:before { content: '\e814'; } /* '' */
.icon-info-circled:before { content: '\e815'; } /* '' */
.icon-home:before { content: '\e816'; } /* '' */
.icon-link:before { content: '\e817'; } /* '' */
.icon-attach:before { content: '\e818'; } /* '' */
.icon-lock:before { content: '\e819'; } /* '' */
.icon-eye:before { content: '\e81a'; } /* '' */
.icon-eye-off:before { content: '\e81b'; } /* '' */
.icon-pin:before { content: '\e81c'; } /* '' */
.icon-tag:before { content: '\e81d'; } /* '' */
.icon-bookmark:before { content: '\e81e'; } /* '' */
.icon-thumbs-up:before { content: '\e81f'; } /* '' */
.icon-thumbs-down:before { content: '\e820'; } /* '' */
.icon-download:before { content: '\e821'; } /* '' */
.icon-upload:before { content: '\e822'; } /* '' */
.icon-forward:before { content: '\e823'; } /* '' */
.icon-pencil:before { content: '\e824'; } /* '' */
.icon-edit:before { content: '\e825'; } /* '' */
.icon-retweet:before { content: '\e826'; } /* '' */
.icon-comment:before { content: '\e827'; } /* '' */
.icon-bell:before { content: '\e828'; } /* '' */
.icon-attention:before { content: '\e829'; } /* '' */
.icon-attention-circled:before { content: '\e82a'; } /* '' */
.icon-trash-empty:before { content: '\e82b'; } /* '' */
.icon-block:before { content: '\e82c'; } /* '' */
.icon-cog:before { content: '\e82d'; } /* '' */
.icon-cog-alt:before { content: '\e82e'; } /* '' */
.icon-wrench:before { content: '\e82f'; } /* '' */
.icon-down-open:before { content: '\e830'; } /* '' */
.icon-left-open:before { content: '\e831'; } /* '' */
.icon-right-open:before { content: '\e832'; } /* '' */
.icon-up-open:before { content: '\e833'; } /* '' */
.icon-down-big:before { content: '\e834'; } /* '' */
.icon-left-big:before { content: '\e835'; } /* '' */
.icon-right-big:before { content: '\e836'; } /* '' */
.icon-up-big:before { content: '\e837'; } /* '' */
.icon-cw:before { content: '\e838'; } /* '' */
.icon-ccw:before { content: '\e839'; } /* '' */
.icon-arrows-cw:before { content: '\e83a'; } /* '' */
.icon-check:before { content: '\e83b'; } /* '' */
.icon-globe:before { content: '\e83c'; } /* '' */
.icon-spin1:before { content: '\e83d'; } /* '' */
.icon-spin2:before { content: '\e83e'; } /* '' */
.icon-spin3:before { content: '\e83f'; } /* '' */
.icon-spin4:before { content: '\e840'; } /* '' */
.icon-check-empty:before { content: '\f096'; } /* '' */
.icon-bookmark-empty:before { content: '\f097'; } /* '' */
.icon-menu:before { content: '\f0c9'; } /* '' */
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
.icon-download-cloud:before { content: '\f0ed'; } /* '' */
.icon-upload-cloud:before { content: '\f0ee'; } /* '' */
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
.icon-quote-left:before { content: '\f10d'; } /* '' */
.icon-quote-right:before { content: '\f10e'; } /* '' */
.icon-reply:before { content: '\f112'; } /* '' */
.icon-code:before { content: '\f121'; } /* '' */
.icon-reply-all:before { content: '\f122'; } /* '' */
.icon-help:before { content: '\f128'; } /* '' */
.icon-info:before { content: '\f129'; } /* '' */
.icon-attention-alt:before { content: '\f12a'; } /* '' */
.icon-lock-open-alt:before { content: '\f13e'; } /* '' */
.icon-minus-squared:before { content: '\f146'; } /* '' */
.icon-ok-squared:before { content: '\f14a'; } /* '' */
.icon-pencil-squared:before { content: '\f14b'; } /* '' */
.icon-link-ext-alt:before { content: '\f14c'; } /* '' */
.icon-export-alt:before { content: '\f14d'; } /* '' */
.icon-doc-inv:before { content: '\f15b'; } /* '' */
.icon-doc-text-inv:before { content: '\f15c'; } /* '' */
.icon-thumbs-up-alt:before { content: '\f164'; } /* '' */
.icon-thumbs-down-alt:before { content: '\f165'; } /* '' */
.icon-sliders:before { content: '\f1de'; } /* '' */
.icon-share:before { content: '\f1e0'; } /* '' */
.icon-bell-off:before { content: '\f1f6'; } /* '' */
.icon-bell-off-empty:before { content: '\f1f7'; } /* '' */
.icon-trash:before { content: '\f1f8'; } /* '' */
.icon-toggle-off:before { content: '\f204'; } /* '' */
.icon-toggle-on:before { content: '\f205'; } /* '' */
.icon-user-plus:before { content: '\f234'; } /* '' */
.icon-user-times:before { content: '\f235'; } /* '' */
.icon-hashtag:before { content: '\f292'; } /* '' */

View File

456
demo.html Normal file
View File

@ -0,0 +1,456 @@
<!DOCTYPE html>
<html>
<head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<meta charset="UTF-8"><style>/*
* Bootstrap v2.2.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
*zoom: 1;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
line-height: 0;
}
.clearfix:after {
clear: both;
}
html {
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
a:focus {
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
a:hover,
a:active {
outline: 0;
}
button,
input,
select,
textarea {
margin: 0;
font-size: 100%;
vertical-align: middle;
}
button,
input {
*overflow: visible;
line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
body {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
color: #333;
background-color: #fff;
}
a {
color: #08c;
text-decoration: none;
}
a:hover {
color: #005580;
text-decoration: underline;
}
.row {
margin-left: -20px;
*zoom: 1;
}
.row:before,
.row:after {
display: table;
content: "";
line-height: 0;
}
.row:after {
clear: both;
}
[class*="span"] {
float: left;
min-height: 1px;
margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
width: 940px;
}
.span12 {
width: 940px;
}
.span11 {
width: 860px;
}
.span10 {
width: 780px;
}
.span9 {
width: 700px;
}
.span8 {
width: 620px;
}
.span7 {
width: 540px;
}
.span6 {
width: 460px;
}
.span5 {
width: 380px;
}
.span4 {
width: 300px;
}
.span3 {
width: 220px;
}
.span2 {
width: 140px;
}
.span1 {
width: 60px;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
float: right;
}
.container {
margin-right: auto;
margin-left: auto;
*zoom: 1;
}
.container:before,
.container:after {
display: table;
content: "";
line-height: 0;
}
.container:after {
clear: both;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 21px;
font-weight: 200;
line-height: 30px;
}
small {
font-size: 85%;
}
h1 {
margin: 10px 0;
font-family: inherit;
font-weight: bold;
line-height: 20px;
color: inherit;
text-rendering: optimizelegibility;
}
h1 small {
font-weight: normal;
line-height: 1;
color: #999;
}
h1 {
line-height: 40px;
}
h1 {
font-size: 38.5px;
}
h1 small {
font-size: 24.5px;
}
body {
margin-top: 90px;
}
.header {
position: fixed;
top: 0;
left: 50%;
margin-left: -480px;
background-color: #fff;
border-bottom: 1px solid #ddd;
padding-top: 10px;
z-index: 10;
}
.footer {
color: #ddd;
font-size: 12px;
text-align: center;
margin-top: 20px;
}
.footer a {
color: #ccc;
text-decoration: underline;
}
.the-icons {
font-size: 14px;
line-height: 24px;
}
.switch {
position: absolute;
right: 0;
bottom: 10px;
color: #666;
}
.switch input {
margin-right: 0.3em;
}
.codesOn .i-name {
display: none;
}
.codesOn .i-code {
display: inline;
}
.i-code {
display: none;
}
@font-face {
font-family: 'fontello';
src: url('./font/fontello.eot?43704775');
src: url('./font/fontello.eot?43704775#iefix') format('embedded-opentype'),
url('./font/fontello.woff?43704775') format('woff'),
url('./font/fontello.ttf?43704775') format('truetype'),
url('./font/fontello.svg?43704775#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
.demo-icon
{
font-family: "fontello";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* You can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
</style>
<link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/" + font.fontname + "-ie7.css"><![endif]-->
<script>
function toggleCodes(on) {
var obj = document.getElementById('icons');
if (on) {
obj.className += ' codesOn';
} else {
obj.className = obj.className.replace(' codesOn', '');
}
}
</script>
</head>
<body>
<div class="container header">
<h1>fontello <small>font demo</small></h1>
<label class="switch">
<input type="checkbox" onclick="toggleCodes(this.checked)">show codes
</label>
</div>
<div class="container" id="icons">
<div class="row">
<div class="the-icons span3" title="Code: 0xe800"><i class="demo-icon icon-search">&#xe800;</i> <span class="i-name">icon-search</span><span class="i-code">0xe800</span></div>
<div class="the-icons span3" title="Code: 0xe801"><i class="demo-icon icon-mail">&#xe801;</i> <span class="i-name">icon-mail</span><span class="i-code">0xe801</span></div>
<div class="the-icons span3" title="Code: 0xe802"><i class="demo-icon icon-heart">&#xe802;</i> <span class="i-name">icon-heart</span><span class="i-code">0xe802</span></div>
<div class="the-icons span3" title="Code: 0xe803"><i class="demo-icon icon-heart-empty">&#xe803;</i> <span class="i-name">icon-heart-empty</span><span class="i-code">0xe803</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe804"><i class="demo-icon icon-star">&#xe804;</i> <span class="i-name">icon-star</span><span class="i-code">0xe804</span></div>
<div class="the-icons span3" title="Code: 0xe805"><i class="demo-icon icon-star-empty">&#xe805;</i> <span class="i-name">icon-star-empty</span><span class="i-code">0xe805</span></div>
<div class="the-icons span3" title="Code: 0xe806"><i class="demo-icon icon-user">&#xe806;</i> <span class="i-name">icon-user</span><span class="i-code">0xe806</span></div>
<div class="the-icons span3" title="Code: 0xe807"><i class="demo-icon icon-video">&#xe807;</i> <span class="i-name">icon-video</span><span class="i-code">0xe807</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe808"><i class="demo-icon icon-picture">&#xe808;</i> <span class="i-name">icon-picture</span><span class="i-code">0xe808</span></div>
<div class="the-icons span3" title="Code: 0xe809"><i class="demo-icon icon-th-large">&#xe809;</i> <span class="i-name">icon-th-large</span><span class="i-code">0xe809</span></div>
<div class="the-icons span3" title="Code: 0xe80a"><i class="demo-icon icon-th">&#xe80a;</i> <span class="i-name">icon-th</span><span class="i-code">0xe80a</span></div>
<div class="the-icons span3" title="Code: 0xe80b"><i class="demo-icon icon-th-list">&#xe80b;</i> <span class="i-name">icon-th-list</span><span class="i-code">0xe80b</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe80c"><i class="demo-icon icon-ok">&#xe80c;</i> <span class="i-name">icon-ok</span><span class="i-code">0xe80c</span></div>
<div class="the-icons span3" title="Code: 0xe80d"><i class="demo-icon icon-ok-circled">&#xe80d;</i> <span class="i-name">icon-ok-circled</span><span class="i-code">0xe80d</span></div>
<div class="the-icons span3" title="Code: 0xe80e"><i class="demo-icon icon-cancel">&#xe80e;</i> <span class="i-name">icon-cancel</span><span class="i-code">0xe80e</span></div>
<div class="the-icons span3" title="Code: 0xe80f"><i class="demo-icon icon-cancel-circled">&#xe80f;</i> <span class="i-name">icon-cancel-circled</span><span class="i-code">0xe80f</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe810"><i class="demo-icon icon-plus-circled">&#xe810;</i> <span class="i-name">icon-plus-circled</span><span class="i-code">0xe810</span></div>
<div class="the-icons span3" title="Code: 0xe811"><i class="demo-icon icon-plus">&#xe811;</i> <span class="i-name">icon-plus</span><span class="i-code">0xe811</span></div>
<div class="the-icons span3" title="Code: 0xe812"><i class="demo-icon icon-minus">&#xe812;</i> <span class="i-name">icon-minus</span><span class="i-code">0xe812</span></div>
<div class="the-icons span3" title="Code: 0xe813"><i class="demo-icon icon-minus-circled">&#xe813;</i> <span class="i-name">icon-minus-circled</span><span class="i-code">0xe813</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe814"><i class="demo-icon icon-help-circled">&#xe814;</i> <span class="i-name">icon-help-circled</span><span class="i-code">0xe814</span></div>
<div class="the-icons span3" title="Code: 0xe815"><i class="demo-icon icon-info-circled">&#xe815;</i> <span class="i-name">icon-info-circled</span><span class="i-code">0xe815</span></div>
<div class="the-icons span3" title="Code: 0xe816"><i class="demo-icon icon-home">&#xe816;</i> <span class="i-name">icon-home</span><span class="i-code">0xe816</span></div>
<div class="the-icons span3" title="Code: 0xe817"><i class="demo-icon icon-link">&#xe817;</i> <span class="i-name">icon-link</span><span class="i-code">0xe817</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe818"><i class="demo-icon icon-attach">&#xe818;</i> <span class="i-name">icon-attach</span><span class="i-code">0xe818</span></div>
<div class="the-icons span3" title="Code: 0xe819"><i class="demo-icon icon-lock">&#xe819;</i> <span class="i-name">icon-lock</span><span class="i-code">0xe819</span></div>
<div class="the-icons span3" title="Code: 0xe81a"><i class="demo-icon icon-eye">&#xe81a;</i> <span class="i-name">icon-eye</span><span class="i-code">0xe81a</span></div>
<div class="the-icons span3" title="Code: 0xe81b"><i class="demo-icon icon-eye-off">&#xe81b;</i> <span class="i-name">icon-eye-off</span><span class="i-code">0xe81b</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe81c"><i class="demo-icon icon-pin">&#xe81c;</i> <span class="i-name">icon-pin</span><span class="i-code">0xe81c</span></div>
<div class="the-icons span3" title="Code: 0xe81d"><i class="demo-icon icon-tag">&#xe81d;</i> <span class="i-name">icon-tag</span><span class="i-code">0xe81d</span></div>
<div class="the-icons span3" title="Code: 0xe81e"><i class="demo-icon icon-bookmark">&#xe81e;</i> <span class="i-name">icon-bookmark</span><span class="i-code">0xe81e</span></div>
<div class="the-icons span3" title="Code: 0xe81f"><i class="demo-icon icon-thumbs-up">&#xe81f;</i> <span class="i-name">icon-thumbs-up</span><span class="i-code">0xe81f</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe820"><i class="demo-icon icon-thumbs-down">&#xe820;</i> <span class="i-name">icon-thumbs-down</span><span class="i-code">0xe820</span></div>
<div class="the-icons span3" title="Code: 0xe821"><i class="demo-icon icon-download">&#xe821;</i> <span class="i-name">icon-download</span><span class="i-code">0xe821</span></div>
<div class="the-icons span3" title="Code: 0xe822"><i class="demo-icon icon-upload">&#xe822;</i> <span class="i-name">icon-upload</span><span class="i-code">0xe822</span></div>
<div class="the-icons span3" title="Code: 0xe823"><i class="demo-icon icon-forward">&#xe823;</i> <span class="i-name">icon-forward</span><span class="i-code">0xe823</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe824"><i class="demo-icon icon-pencil">&#xe824;</i> <span class="i-name">icon-pencil</span><span class="i-code">0xe824</span></div>
<div class="the-icons span3" title="Code: 0xe825"><i class="demo-icon icon-edit">&#xe825;</i> <span class="i-name">icon-edit</span><span class="i-code">0xe825</span></div>
<div class="the-icons span3" title="Code: 0xe826"><i class="demo-icon icon-retweet">&#xe826;</i> <span class="i-name">icon-retweet</span><span class="i-code">0xe826</span></div>
<div class="the-icons span3" title="Code: 0xe827"><i class="demo-icon icon-comment">&#xe827;</i> <span class="i-name">icon-comment</span><span class="i-code">0xe827</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe828"><i class="demo-icon icon-bell">&#xe828;</i> <span class="i-name">icon-bell</span><span class="i-code">0xe828</span></div>
<div class="the-icons span3" title="Code: 0xe829"><i class="demo-icon icon-attention">&#xe829;</i> <span class="i-name">icon-attention</span><span class="i-code">0xe829</span></div>
<div class="the-icons span3" title="Code: 0xe82a"><i class="demo-icon icon-attention-circled">&#xe82a;</i> <span class="i-name">icon-attention-circled</span><span class="i-code">0xe82a</span></div>
<div class="the-icons span3" title="Code: 0xe82b"><i class="demo-icon icon-trash-empty">&#xe82b;</i> <span class="i-name">icon-trash-empty</span><span class="i-code">0xe82b</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe82c"><i class="demo-icon icon-block">&#xe82c;</i> <span class="i-name">icon-block</span><span class="i-code">0xe82c</span></div>
<div class="the-icons span3" title="Code: 0xe82d"><i class="demo-icon icon-cog">&#xe82d;</i> <span class="i-name">icon-cog</span><span class="i-code">0xe82d</span></div>
<div class="the-icons span3" title="Code: 0xe82e"><i class="demo-icon icon-cog-alt">&#xe82e;</i> <span class="i-name">icon-cog-alt</span><span class="i-code">0xe82e</span></div>
<div class="the-icons span3" title="Code: 0xe82f"><i class="demo-icon icon-wrench">&#xe82f;</i> <span class="i-name">icon-wrench</span><span class="i-code">0xe82f</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe830"><i class="demo-icon icon-down-open">&#xe830;</i> <span class="i-name">icon-down-open</span><span class="i-code">0xe830</span></div>
<div class="the-icons span3" title="Code: 0xe831"><i class="demo-icon icon-left-open">&#xe831;</i> <span class="i-name">icon-left-open</span><span class="i-code">0xe831</span></div>
<div class="the-icons span3" title="Code: 0xe832"><i class="demo-icon icon-right-open">&#xe832;</i> <span class="i-name">icon-right-open</span><span class="i-code">0xe832</span></div>
<div class="the-icons span3" title="Code: 0xe833"><i class="demo-icon icon-up-open">&#xe833;</i> <span class="i-name">icon-up-open</span><span class="i-code">0xe833</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe834"><i class="demo-icon icon-down-big">&#xe834;</i> <span class="i-name">icon-down-big</span><span class="i-code">0xe834</span></div>
<div class="the-icons span3" title="Code: 0xe835"><i class="demo-icon icon-left-big">&#xe835;</i> <span class="i-name">icon-left-big</span><span class="i-code">0xe835</span></div>
<div class="the-icons span3" title="Code: 0xe836"><i class="demo-icon icon-right-big">&#xe836;</i> <span class="i-name">icon-right-big</span><span class="i-code">0xe836</span></div>
<div class="the-icons span3" title="Code: 0xe837"><i class="demo-icon icon-up-big">&#xe837;</i> <span class="i-name">icon-up-big</span><span class="i-code">0xe837</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe838"><i class="demo-icon icon-cw">&#xe838;</i> <span class="i-name">icon-cw</span><span class="i-code">0xe838</span></div>
<div class="the-icons span3" title="Code: 0xe839"><i class="demo-icon icon-ccw">&#xe839;</i> <span class="i-name">icon-ccw</span><span class="i-code">0xe839</span></div>
<div class="the-icons span3" title="Code: 0xe83a"><i class="demo-icon icon-arrows-cw">&#xe83a;</i> <span class="i-name">icon-arrows-cw</span><span class="i-code">0xe83a</span></div>
<div class="the-icons span3" title="Code: 0xe83b"><i class="demo-icon icon-check">&#xe83b;</i> <span class="i-name">icon-check</span><span class="i-code">0xe83b</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe83c"><i class="demo-icon icon-globe">&#xe83c;</i> <span class="i-name">icon-globe</span><span class="i-code">0xe83c</span></div>
<div class="the-icons span3" title="Code: 0xe83d"><i class="demo-icon icon-spin1 animate-spin">&#xe83d;</i> <span class="i-name">icon-spin1</span><span class="i-code">0xe83d</span></div>
<div class="the-icons span3" title="Code: 0xe83e"><i class="demo-icon icon-spin2 animate-spin">&#xe83e;</i> <span class="i-name">icon-spin2</span><span class="i-code">0xe83e</span></div>
<div class="the-icons span3" title="Code: 0xe83f"><i class="demo-icon icon-spin3 animate-spin">&#xe83f;</i> <span class="i-name">icon-spin3</span><span class="i-code">0xe83f</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe840"><i class="demo-icon icon-spin4 animate-spin">&#xe840;</i> <span class="i-name">icon-spin4</span><span class="i-code">0xe840</span></div>
<div class="the-icons span3" title="Code: 0xf096"><i class="demo-icon icon-check-empty">&#xf096;</i> <span class="i-name">icon-check-empty</span><span class="i-code">0xf096</span></div>
<div class="the-icons span3" title="Code: 0xf097"><i class="demo-icon icon-bookmark-empty">&#xf097;</i> <span class="i-name">icon-bookmark-empty</span><span class="i-code">0xf097</span></div>
<div class="the-icons span3" title="Code: 0xf0c9"><i class="demo-icon icon-menu">&#xf0c9;</i> <span class="i-name">icon-menu</span><span class="i-code">0xf0c9</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf0e0"><i class="demo-icon icon-mail-alt">&#xf0e0;</i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div>
<div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty">&#xf0e5;</i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
<div class="the-icons span3" title="Code: 0xf0ed"><i class="demo-icon icon-download-cloud">&#xf0ed;</i> <span class="i-name">icon-download-cloud</span><span class="i-code">0xf0ed</span></div>
<div class="the-icons span3" title="Code: 0xf0ee"><i class="demo-icon icon-upload-cloud">&#xf0ee;</i> <span class="i-name">icon-upload-cloud</span><span class="i-code">0xf0ee</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf0f3"><i class="demo-icon icon-bell-alt">&#xf0f3;</i> <span class="i-name">icon-bell-alt</span><span class="i-code">0xf0f3</span></div>
<div class="the-icons span3" title="Code: 0xf10d"><i class="demo-icon icon-quote-left">&#xf10d;</i> <span class="i-name">icon-quote-left</span><span class="i-code">0xf10d</span></div>
<div class="the-icons span3" title="Code: 0xf10e"><i class="demo-icon icon-quote-right">&#xf10e;</i> <span class="i-name">icon-quote-right</span><span class="i-code">0xf10e</span></div>
<div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply">&#xf112;</i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf121"><i class="demo-icon icon-code">&#xf121;</i> <span class="i-name">icon-code</span><span class="i-code">0xf121</span></div>
<div class="the-icons span3" title="Code: 0xf122"><i class="demo-icon icon-reply-all">&#xf122;</i> <span class="i-name">icon-reply-all</span><span class="i-code">0xf122</span></div>
<div class="the-icons span3" title="Code: 0xf128"><i class="demo-icon icon-help">&#xf128;</i> <span class="i-name">icon-help</span><span class="i-code">0xf128</span></div>
<div class="the-icons span3" title="Code: 0xf129"><i class="demo-icon icon-info">&#xf129;</i> <span class="i-name">icon-info</span><span class="i-code">0xf129</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf12a"><i class="demo-icon icon-attention-alt">&#xf12a;</i> <span class="i-name">icon-attention-alt</span><span class="i-code">0xf12a</span></div>
<div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt">&#xf13e;</i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
<div class="the-icons span3" title="Code: 0xf146"><i class="demo-icon icon-minus-squared">&#xf146;</i> <span class="i-name">icon-minus-squared</span><span class="i-code">0xf146</span></div>
<div class="the-icons span3" title="Code: 0xf14a"><i class="demo-icon icon-ok-squared">&#xf14a;</i> <span class="i-name">icon-ok-squared</span><span class="i-code">0xf14a</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf14b"><i class="demo-icon icon-pencil-squared">&#xf14b;</i> <span class="i-name">icon-pencil-squared</span><span class="i-code">0xf14b</span></div>
<div class="the-icons span3" title="Code: 0xf14c"><i class="demo-icon icon-link-ext-alt">&#xf14c;</i> <span class="i-name">icon-link-ext-alt</span><span class="i-code">0xf14c</span></div>
<div class="the-icons span3" title="Code: 0xf14d"><i class="demo-icon icon-export-alt">&#xf14d;</i> <span class="i-name">icon-export-alt</span><span class="i-code">0xf14d</span></div>
<div class="the-icons span3" title="Code: 0xf15b"><i class="demo-icon icon-doc-inv">&#xf15b;</i> <span class="i-name">icon-doc-inv</span><span class="i-code">0xf15b</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf15c"><i class="demo-icon icon-doc-text-inv">&#xf15c;</i> <span class="i-name">icon-doc-text-inv</span><span class="i-code">0xf15c</span></div>
<div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt">&#xf164;</i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
<div class="the-icons span3" title="Code: 0xf165"><i class="demo-icon icon-thumbs-down-alt">&#xf165;</i> <span class="i-name">icon-thumbs-down-alt</span><span class="i-code">0xf165</span></div>
<div class="the-icons span3" title="Code: 0xf1de"><i class="demo-icon icon-sliders">&#xf1de;</i> <span class="i-name">icon-sliders</span><span class="i-code">0xf1de</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf1e0"><i class="demo-icon icon-share">&#xf1e0;</i> <span class="i-name">icon-share</span><span class="i-code">0xf1e0</span></div>
<div class="the-icons span3" title="Code: 0xf1f6"><i class="demo-icon icon-bell-off">&#xf1f6;</i> <span class="i-name">icon-bell-off</span><span class="i-code">0xf1f6</span></div>
<div class="the-icons span3" title="Code: 0xf1f7"><i class="demo-icon icon-bell-off-empty">&#xf1f7;</i> <span class="i-name">icon-bell-off-empty</span><span class="i-code">0xf1f7</span></div>
<div class="the-icons span3" title="Code: 0xf1f8"><i class="demo-icon icon-trash">&#xf1f8;</i> <span class="i-name">icon-trash</span><span class="i-code">0xf1f8</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf204"><i class="demo-icon icon-toggle-off">&#xf204;</i> <span class="i-name">icon-toggle-off</span><span class="i-code">0xf204</span></div>
<div class="the-icons span3" title="Code: 0xf205"><i class="demo-icon icon-toggle-on">&#xf205;</i> <span class="i-name">icon-toggle-on</span><span class="i-code">0xf205</span></div>
<div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus">&#xf234;</i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
<div class="the-icons span3" title="Code: 0xf235"><i class="demo-icon icon-user-times">&#xf235;</i> <span class="i-name">icon-user-times</span><span class="i-code">0xf235</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xf292"><i class="demo-icon icon-hashtag">&#xf292;</i> <span class="i-name">icon-hashtag</span><span class="i-code">0xf292</span></div>
</div>
</div>
<div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
</body>
</html>

BIN
font/fontello.eot Normal file

Binary file not shown.

212
font/fontello.svg Normal file
View File

@ -0,0 +1,212 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
<defs>
<font id="fontello" horiz-adv-x="1000" >
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="search" unicode="&#xe800;" d="M643 386q0 103-73 176t-177 74-177-74-73-176 73-177 177-73 177 73 73 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 153-31 125-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
<glyph glyph-name="mail" unicode="&#xe801;" d="M929 11v428q-18-20-39-36-149-115-238-189-28-24-46-37t-48-28-57-13h-2q-26 0-57 13t-48 28-46 37q-88 74-238 189-21 16-39 36v-428q0-7 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 83-159 107-84 223-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
<glyph glyph-name="heart" unicode="&#xe802;" d="M500-79q-14 0-25 10l-348 336q-5 5-15 15t-31 37-38 54-30 67-13 77q0 123 71 192t196 70q34 0 70-12t67-33 54-38 42-38q20 20 42 38t54 38 67 33 70 12q125 0 196-70t71-192q0-123-128-251l-347-335q-10-10-25-10z" horiz-adv-x="1000" />
<glyph glyph-name="heart-empty" unicode="&#xe803;" d="M929 517q0 46-12 80t-31 55-46 33-52 18-55 4-62-14-62-36-48-40-34-34q-10-13-27-13t-27 13q-14 15-34 34t-48 40-62 36-62 14-55-4-52-18-46-33-31-55-12-80q0-93 105-198l324-312 324 312q105 105 105 198z m71 0q0-123-128-251l-347-335q-10-10-25-10t-25 10l-348 336q-5 5-15 15t-31 37-38 54-30 67-13 77q0 123 71 192t196 70q34 0 70-12t67-33 54-38 42-38q20 20 42 38t54 38 67 33 70 12q125 0 196-70t71-192z" horiz-adv-x="1000" />
<glyph glyph-name="star" unicode="&#xe804;" d="M929 489q0-12-15-27l-202-197 48-279q0-4 0-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="star-empty" unicode="&#xe805;" d="M635 290l170 166-235 34-106 213-105-213-236-34 171-166-41-235 211 111 211-111z m294 199q0-12-15-27l-202-197 48-279q0-4 0-12 0-28-23-28-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="user" unicode="&#xe806;" d="M714 69q0-60-35-104t-84-44h-476q-49 0-84 44t-35 104q0 48 5 90t17 85 33 73 52 50 76 19q73-72 174-72t175 72q42 0 75-19t52-50 33-73 18-85 4-90z m-143 495q0-88-62-151t-152-63-151 63-63 151 63 152 151 63 152-63 62-152z" horiz-adv-x="714.3" />
<glyph glyph-name="video" unicode="&#xe807;" d="M214-43v72q0 14-10 25t-25 10h-72q-14 0-25-10t-11-25v-72q0-14 11-25t25-11h72q14 0 25 11t10 25z m0 214v72q0 14-10 25t-25 11h-72q-14 0-25-11t-11-25v-72q0-14 11-25t25-10h72q14 0 25 10t10 25z m0 215v71q0 15-10 25t-25 11h-72q-14 0-25-11t-11-25v-71q0-15 11-25t25-11h72q14 0 25 11t10 25z m572-429v286q0 14-11 25t-25 11h-429q-14 0-25-11t-10-25v-286q0-14 10-25t25-11h429q15 0 25 11t11 25z m-572 643v71q0 15-10 26t-25 10h-72q-14 0-25-10t-11-26v-71q0-14 11-25t25-11h72q14 0 25 11t10 25z m786-643v72q0 14-11 25t-25 10h-71q-15 0-25-10t-11-25v-72q0-14 11-25t25-11h71q15 0 25 11t11 25z m-214 429v285q0 15-11 26t-25 10h-429q-14 0-25-10t-10-26v-285q0-15 10-25t25-11h429q15 0 25 11t11 25z m214-215v72q0 14-11 25t-25 11h-71q-15 0-25-11t-11-25v-72q0-14 11-25t25-10h71q15 0 25 10t11 25z m0 215v71q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-71q0-15 11-25t25-11h71q15 0 25 11t11 25z m0 214v71q0 15-11 26t-25 10h-71q-15 0-25-10t-11-26v-71q0-14 11-25t25-11h71q15 0 25 11t11 25z m71 89v-750q0-37-26-63t-63-26h-893q-36 0-63 26t-26 63v750q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
<glyph glyph-name="picture" unicode="&#xe808;" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
<glyph glyph-name="th-large" unicode="&#xe809;" d="M429 279v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z m500-428v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z" horiz-adv-x="928.6" />
<glyph glyph-name="th" unicode="&#xe80a;" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-22 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-22 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z" horiz-adv-x="1000" />
<glyph glyph-name="th-list" unicode="&#xe80b;" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m714-285v-108q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v108q0 22 16 38t38 15h535q23 0 38-15t16-38z m-714 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m714-286v-107q0-22-16-38t-38-15h-535q-23 0-38 15t-16 38v107q0 23 16 38t38 16h535q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-535q-23 0-38 16t-16 38v107q0 22 16 38t38 16h535q23 0 38-16t16-38z" horiz-adv-x="1000" />
<glyph glyph-name="ok" unicode="&#xe80c;" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
<glyph glyph-name="ok-circled" unicode="&#xe80d;" d="M717 440q0 16-10 26l-51 50q-11 11-25 11t-25-11l-228-227-126 126q-11 11-25 11t-25-11l-51-50q-10-10-10-26 0-15 10-25l202-202q10-10 25-10 15 0 26 10l303 303q10 10 10 25z m140-90q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="cancel" unicode="&#xe80e;" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
<glyph glyph-name="cancel-circled" unicode="&#xe80f;" d="M641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-25 11-16 0-26-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 26-11 14 0 25 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="plus-circled" unicode="&#xe810;" d="M679 314v72q0 14-11 25t-25 10h-143v143q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-143h-143q-14 0-25-10t-10-25v-72q0-14 10-25t25-10h143v-143q0-15 11-25t25-11h71q15 0 25 11t11 25v143h143q14 0 25 10t11 25z m178 36q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="plus" unicode="&#xe811;" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="minus" unicode="&#xe812;" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="minus-circled" unicode="&#xe813;" d="M679 314v72q0 14-11 25t-25 10h-429q-14 0-25-10t-10-25v-72q0-14 10-25t25-10h429q14 0 25 10t11 25z m178 36q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="help-circled" unicode="&#xe814;" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="info-circled" unicode="&#xe815;" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="home" unicode="&#xe816;" d="M786 296v-267q0-15-11-25t-25-11h-214v214h-143v-214h-214q-15 0-25 11t-11 25v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-3-7 1-12 6l-35 41q-4 6-3 13t6 12l401 334q18 15 42 15t43-15l136-113v108q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q6-4 6-12t-4-13z" horiz-adv-x="928.6" />
<glyph glyph-name="link" unicode="&#xe817;" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
<glyph glyph-name="attach" unicode="&#xe818;" d="M784 77q0-65-45-109t-109-44q-75 0-131 55l-434 434q-63 64-63 151 0 89 62 150t150 62q88 0 152-63l338-338q5-5 5-12 0-9-17-26t-26-17q-7 0-12 5l-339 339q-44 43-101 43-59 0-100-42t-40-101q0-58 42-101l433-433q35-36 81-36 36 0 59 24t24 59q0 46-35 81l-325 324q-14 14-33 14-16 0-27-11t-11-27q0-18 14-33l229-228q6-6 6-13 0-9-18-26t-26-17q-6 0-12 5l-229 229q-35 34-35 83 0 46 32 78t77 32q49 0 84-35l324-325q56-54 56-131z" horiz-adv-x="785.7" />
<glyph glyph-name="lock" unicode="&#xe819;" d="M179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" />
<glyph glyph-name="eye" unicode="&#xe81a;" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="eye-off" unicode="&#xe81b;" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="pin" unicode="&#xe81c;" d="M268 368v250q0 8-5 13t-13 5-13-5-5-13v-250q0-8 5-13t13-5 13 5 5 13z m375-197q0-14-11-25t-25-10h-239l-29-270q-1-7-6-11t-11-5h-1q-15 0-17 15l-43 271h-225q-15 0-25 10t-11 25q0 69 44 124t99 55v286q-29 0-50 21t-22 50 22 50 50 22h357q29 0 50-22t21-50-21-50-50-21v-286q55 0 99-55t44-124z" horiz-adv-x="642.9" />
<glyph glyph-name="tag" unicode="&#xe81d;" d="M250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z" horiz-adv-x="857.1" />
<glyph glyph-name="bookmark" unicode="&#xe81e;" d="M650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
<glyph glyph-name="thumbs-up" unicode="&#xe81f;" d="M143 100q0 15-11 25t-25 11-25-11-11-25 11-25 25-11 25 11 11 25z m643 321q0 29-22 50t-50 22h-196q0 32 27 89t26 89q0 55-17 81t-72 27q-14-15-21-48t-17-70-33-61q-13-13-43-51-2-3-13-16t-18-23-19-24-22-25-22-19-22-15-20-6h-18v-357h18q7 0 18-1t18-4 21-6 20-7 20-6 16-6q118-41 191-41h67q107 0 107 93 0 15-2 31 16 9 26 30t10 41-10 38q29 28 29 67 0 14-5 31t-14 26q18 1 30 26t12 45z m71 1q0-50-27-91 5-18 5-38 0-43-21-81 1-12 1-24 0-56-33-99 0-78-48-123t-126-45h-72q-54 0-106 13t-121 36q-65 23-77 23h-161q-29 0-50 21t-21 50v357q0 30 21 51t50 21h153q20 13 77 86 32 42 60 72 13 14 19 48t17 70 35 60q22 21 50 21 47 0 84-18t57-57 20-104q0-51-27-107h98q58 0 101-42t42-100z" horiz-adv-x="857.1" />
<glyph glyph-name="thumbs-down" unicode="&#xe820;" d="M143 600q0 15-11 25t-25 11-25-11-11-25 11-25 25-11 25 11 11 25z m643-321q0 19-12 45t-30 26q8 10 14 27t5 31q0 38-29 66 10 17 10 38 0 21-10 41t-26 30q2 16 2 31 0 47-27 70t-76 23h-71q-73 0-191-41-3-1-16-5t-20-7-20-7-21-6-18-4-18-1h-18v-357h18q9 0 20-5t22-15 22-20 22-25 19-24 18-22 13-17q30-38 43-51 23-24 33-61t17-70 21-48q54 0 72 27t17 81q0 33-26 89t-27 89h196q28 0 50 22t22 50z m71-1q0-57-42-100t-101-42h-98q27-55 27-107 0-66-20-104-19-39-57-57t-84-18q-28 0-50 21-19 18-30 45t-14 51-10 47-17 36q-27 28-60 71-57 73-77 86h-153q-29 0-50 21t-21 51v357q0 29 21 50t50 21h161q12 0 77 23 72 24 125 36t111 13h63q78 0 126-44t48-121v-3q33-43 33-99 0-12-1-24 21-38 21-80 0-21-5-39 27-41 27-91z" horiz-adv-x="857.1" />
<glyph glyph-name="download" unicode="&#xe821;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
<glyph glyph-name="upload" unicode="&#xe822;" d="M714 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m143 0q0 14-10 25t-26 10-25-10-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-38t-38-16h-821q-23 0-38 16t-16 38v179q0 22 16 38t38 15h238q12-31 39-51t62-20h143q34 0 61 20t40 51h238q22 0 38-15t16-38z m-182 361q-9-22-33-22h-143v-250q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v250h-143q-23 0-33 22-9 22 8 39l250 250q10 10 25 10t25-10l250-250q18-17 8-39z" horiz-adv-x="928.6" />
<glyph glyph-name="forward" unicode="&#xe823;" d="M1000 493q0-15-11-25l-285-286q-11-11-25-11t-25 11-11 25v143h-125q-55 0-98-3t-86-12-74-24-59-39-45-56-27-77-10-101q0-31 3-69 0-4 2-13t1-15q0-8-5-14t-13-6q-9 0-15 10-4 5-8 12t-7 17-6 13q-71 159-71 252 0 111 30 186 90 225 488 225h125v143q0 14 11 25t25 10 25-10l285-286q11-11 11-25z" horiz-adv-x="1000" />
<glyph glyph-name="pencil" unicode="&#xe824;" d="M203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" />
<glyph glyph-name="edit" unicode="&#xe825;" d="M496 189l64 65-85 85-64-65v-31h53v-54h32z m245 402q-9 9-18 0l-196-196q-9-9 0-18t18 0l196 196q9 9 0 18z m45-331v-106q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-8-8-18-4-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v70q0 7 5 12l36 36q8 8 20 4t11-16z m-54 411l161-160-375-375h-161v160z m248-73l-51-52-161 161 51 52q16 15 38 15t38-15l85-85q16-16 16-38t-16-38z" horiz-adv-x="1000" />
<glyph glyph-name="retweet" unicode="&#xe826;" d="M714 11q0-7-5-13t-13-5h-535q-5 0-8 1t-5 4-3 4-2 7 0 6v335h-107q-15 0-25 11t-11 25q0 13 8 23l179 214q11 12 27 12t28-12l178-214q9-10 9-23 0-15-11-25t-25-11h-107v-214h321q9 0 14-6l89-108q4-5 4-11z m357 232q0-13-8-23l-178-214q-12-13-28-13t-27 13l-179 214q-8 10-8 23 0 14 11 25t25 11h107v214h-322q-9 0-14 7l-89 107q-4 5-4 11 0 7 5 12t13 6h536q4 0 7-1t5-4 3-5 2-6 1-7v-334h107q14 0 25-11t10-25z" horiz-adv-x="1071.4" />
<glyph glyph-name="comment" unicode="&#xe827;" d="M1000 350q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12-10-1-17 5t-10 16v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 73 40 139t106 114 160 76 194 28q136 0 251-48t182-130 67-179z" horiz-adv-x="1000" />
<glyph glyph-name="bell" unicode="&#xe828;" d="M509-96q0 8-9 8-33 0-57 24t-23 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m-372 160h726q-149 168-149 465 0 28-13 58t-39 58-67 45-95 17-95-17-67-45-39-58-13-58q0-297-149-465z m827 0q0-29-21-50t-50-21h-250q0-59-42-101t-101-42-101 42-42 101h-250q-29 0-50 21t-21 50q28 24 51 49t47 67 42 89 27 115 11 145q0 84 66 157t171 89q-5 10-5 21 0 23 16 38t38 16 38-16 16-38q0-11-5-21 106-16 171-89t66-157q0-78 11-145t28-115 41-89 48-67 50-49z" horiz-adv-x="1000" />
<glyph glyph-name="attention" unicode="&#xe829;" d="M571 83v106q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-106q0-8 5-13t12-6h108q7 0 12 6t5 13z m-1 208l10 257q0 6-5 10-7 6-14 6h-122q-6 0-14-6-5-4-5-12l9-255q0-5 6-9t13-3h103q8 0 14 3t5 9z m-7 522l428-786q20-35-1-70-9-17-26-26t-35-10h-858q-18 0-35 10t-26 26q-21 35-1 70l429 786q9 17 26 27t36 10 36-10 27-27z" horiz-adv-x="1000" />
<glyph glyph-name="attention-circled" unicode="&#xe82a;" d="M429 779q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m71-696v106q0 8-5 13t-12 5h-107q-8 0-13-5t-6-13v-106q0-8 6-13t13-6h107q7 0 12 6t5 13z m-1 192l10 346q0 7-6 10-5 5-13 5h-123q-8 0-13-5-6-3-6-10l10-346q0-6 5-10t14-4h103q8 0 13 4t6 10z" horiz-adv-x="857.1" />
<glyph glyph-name="trash-empty" unicode="&#xe82b;" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
<glyph glyph-name="block" unicode="&#xe82c;" d="M732 352q0 90-48 164l-421-420q76-50 166-50 62 0 118 25t96 65 65 97 24 119z m-557-167l421 421q-75 50-167 50-83 0-153-40t-110-111-41-153q0-91 50-167z m682 167q0-88-34-168t-91-137-137-92-166-34-167 34-137 92-91 137-34 168 34 167 91 137 137 91 167 34 166-34 137-91 91-137 34-167z" horiz-adv-x="857.1" />
<glyph glyph-name="cog" unicode="&#xe82d;" d="M571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-27 59-77 6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5-8 0-14 6-70 64-92 94-4 5-4 13 0 6 5 12 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 16 20 16h124q7 0 13-5t7-12l15-103q28-9 51-20l79 59q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-12 0-7-4-13-9-12-29-37t-30-40q15-28 23-54l102-16q7-1 12-7t4-13z" horiz-adv-x="857.1" />
<glyph glyph-name="cog-alt" unicode="&#xe82e;" d="M500 350q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m429-286q0 29-22 51t-50 21-50-21-21-51q0-29 21-50t50-21 51 21 21 50z m0 572q0 29-22 50t-50 21-50-21-21-50q0-30 21-51t50-21 51 21 21 51z m-215-235v-103q0-6-4-11t-8-6l-87-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-12-17-46-50t-43-33q-7 0-12 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v104q0 5 4 10t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 12 12 16 46 49t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 42-17l65 49q5 4 12 4 6 0 11-4 81-75 81-90 0-4-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q6-2 9-6t4-11z m357-298v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18z m0 572v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-37q12 1 17 1t17-1q28 39 51 62l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17z" horiz-adv-x="1071.4" />
<glyph glyph-name="wrench" unicode="&#xe82f;" d="M214 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m360 234l-381-381q-21-20-50-20-29 0-51 20l-59 61q-21 20-21 50 0 29 21 51l380 380q22-55 64-97t97-64z m354 243q0-22-13-59-27-75-92-122t-144-46q-104 0-177 73t-73 177 73 176 177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45 40 20q8 0 13-5t5-14z" horiz-adv-x="928.6" />
<glyph glyph-name="down-open" unicode="&#xe830;" d="M939 399l-414-413q-10-11-25-11t-25 11l-414 413q-11 11-11 26t11 25l93 92q10 11 25 11t25-11l296-296 296 296q11 11 25 11t26-11l92-92q11-11 11-25t-11-26z" horiz-adv-x="1000" />
<glyph glyph-name="left-open" unicode="&#xe831;" d="M654 682l-297-296 297-297q10-10 10-25t-10-25l-93-93q-11-10-25-10t-25 10l-414 415q-11 10-11 25t11 25l414 414q10 11 25 11t25-11l93-93q10-10 10-25t-10-25z" horiz-adv-x="714.3" />
<glyph glyph-name="right-open" unicode="&#xe832;" d="M618 361l-414-415q-11-10-25-10t-25 10l-93 93q-11 11-11 25t11 25l296 297-296 296q-11 11-11 25t11 25l93 93q10 11 25 11t25-11l414-414q10-11 10-25t-10-25z" horiz-adv-x="714.3" />
<glyph glyph-name="up-open" unicode="&#xe833;" d="M939 107l-92-92q-11-10-26-10t-25 10l-296 297-296-297q-11-10-25-10t-25 10l-93 92q-11 11-11 26t11 25l414 414q11 10 25 10t25-10l414-414q11-11 11-25t-11-26z" horiz-adv-x="1000" />
<glyph glyph-name="down-big" unicode="&#xe834;" d="M899 386q0-30-21-50l-363-364q-22-21-51-21-29 0-50 21l-363 364q-21 20-21 50 0 29 21 51l41 41q22 21 51 21 29 0 50-21l164-164v393q0 29 21 50t51 22h71q29 0 50-22t21-50v-393l165 164q20 21 50 21 29 0 51-21l41-41q21-22 21-51z" horiz-adv-x="928.6" />
<glyph glyph-name="left-big" unicode="&#xe835;" d="M857 350v-71q0-30-18-51t-47-21h-393l164-164q21-20 21-50t-21-50l-42-43q-21-20-51-20-29 0-50 20l-364 364q-20 21-20 50 0 29 20 51l364 363q21 21 50 21 29 0 51-21l42-41q21-22 21-51t-21-51l-164-164h393q29 0 47-20t18-51z" horiz-adv-x="857.1" />
<glyph glyph-name="right-big" unicode="&#xe836;" d="M821 314q0-30-20-50l-363-364q-22-20-51-20-29 0-50 20l-42 42q-22 21-22 51t22 51l163 163h-393q-29 0-47 21t-18 51v71q0 30 18 51t47 20h393l-163 165q-22 20-22 50t22 50l42 42q21 21 50 21 29 0 51-21l363-363q20-20 20-51z" horiz-adv-x="857.1" />
<glyph glyph-name="up-big" unicode="&#xe837;" d="M899 308q0-28-21-50l-41-42q-22-21-51-21-30 0-50 21l-165 164v-393q0-29-20-47t-51-19h-71q-30 0-51 19t-21 47v393l-164-164q-20-21-50-21t-50 21l-42 42q-21 21-21 50 0 30 21 51l363 363q20 21 50 21 30 0 51-21l363-363q21-22 21-51z" horiz-adv-x="928.6" />
<glyph glyph-name="cw" unicode="&#xe838;" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" />
<glyph glyph-name="ccw" unicode="&#xe839;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
<glyph glyph-name="arrows-cw" unicode="&#xe83a;" d="M843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-36 90-57t105-20q74 0 139 37t104 99q6 10 30 66 4 13 16 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" />
<glyph glyph-name="check" unicode="&#xe83b;" d="M786 331v-177q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-6-5-13-5-1 0-5 1-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v141q0 8 5 13l36 35q6 6 13 6 3 0 7-2 11-4 11-16z m129 273l-455-454q-13-14-31-14t-32 14l-240 240q-14 13-14 31t14 32l61 62q14 13 32 13t32-13l147-147 361 361q13 13 31 13t32-13l62-61q13-14 13-32t-13-32z" horiz-adv-x="928.6" />
<glyph glyph-name="globe" unicode="&#xe83c;" d="M429 779q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m153-291q-2-1-6-5t-7-6q1 0 2 3t3 6 2 4q3 4 12 8 8 4 29 7 19 5 29-6-1 1 5 7t8 7q2 1 8 3t9 4l1 12q-7-1-10 4t-3 12q0-2-4-5 0 4-2 5t-7-1-5-1q-5 2-8 5t-5 9-2 8q-1 3-5 6t-5 6q-1 1-2 3t-1 4-3 3-3 1-4-3-4-5-2-3q-2 1-4 1t-2-1-3-1-3-2q-1-2-4-2t-5-1q8 3-1 6-5 2-9 2 6 2 5 6t-5 8h3q-1 2-5 5t-10 5-7 3q-5 3-19 5t-18 1q-3-4-3-6t2-8 2-7q1-3-3-7t-3-7q0-4 7-9t6-12q-2-4-9-9t-9-6q-3-5-1-11t6-9q1-1 1-2t-2-3-3-2-4-2l-1-1q-7-3-12 3t-7 15q-4 14-9 17-13 4-16-1-3 7-23 15-14 5-33 2 4 0 0 8-4 9-10 7 1 3 2 10t0 7q2 8 7 13 1 1 4 5t5 7 1 4q19-3 28 6 2 3 6 9t6 10q5 3 8 3t8-3 8-3q8-1 8 6t-4 11q7 0 2 10-2 4-5 5-6 2-15-3-4-2 2-4-1 0-6-6t-9-10-9 3q0 0-3 7t-5 8q-5 0-9-9 1 5-6 9t-14 4q11 7-4 15-4 3-12 3t-11-2q-2-4-3-7t3-4 6-3 6-2 5-2q8-6 5-8-1 0-5-2t-6-2-4-2q-1-3 0-8t-1-8q-3 3-5 10t-4 9q4-5-14-3l-5 0q-3 0-9-1t-12-1-7 5q-3 4 0 11 0 2 2 1-2 2-6 5t-6 5q-25-8-52-23 3 0 6 1 3 1 8 4t5 3q19 7 24 4l3 2q7-9 11-14-4 3-17 1-11-3-12-7 4-6 2-10-2 2-6 6t-8 6-8 3q-9 0-13-1-81-45-131-124 4-4 7-4 2-1 3-5t1-6 6 1q5-4 2-10 1 0 25-15 10-10 11-12 2-6-5-10-1 1-5 5t-5 2q-2-3 0-10t6-7q-4 0-5-9t-2-20 0-13l1-1q-2-6 3-19t12-11q-7-1 11-24 3-4 4-5 2-1 7-4t9-6 5-5q2-3 6-13t8-13q-2-3 5-11t6-13q-1 0-2-1t-1 0q2-4 9-8t8-7q1-2 1-6t2-6 4-1q2 11-13 35-8 13-9 16-2 2-4 8t-2 8q1 0 3 0t5-2 4-3 1-1q-1-4 1-10t7-10 10-11 6-7q4-4 8-11t0-8q5 0 11-5t10-11q3-5 4-15t3-13q1-4 5-8t7-5l9-5t7-3q3-2 10-6t12-7q6-2 9-2t8 1 8 2q8 1 16-8t12-12q20-10 30-6-1 0 1-4t4-9 5-8 3-5q3-3 10-8t10-8q4 2 4 5-1-5 4-11t10-6q8 2 8 18-17-8-27 10 0 0-2 3t-2 5-1 4 0 5 2 1q5 0 6 2t-1 7-2 8q-1 4-6 11t-7 8q-3-5-9-4t-9 5q0-1-1-3t-1-4q-7 0-8 0 1 2 1 10t2 13q1 2 3 6t5 9 2 7-3 5-9 1q-11 0-15-11-1-2-2-6t-2-6-5-4q-4-2-14-1t-13 3q-8 4-13 16t-5 20q0 6 1 15t2 14-3 14q2 1 5 5t5 6q2 1 3 1t3 0 2 1 1 3q0 1-2 2-1 1-2 1 4-1 16 1t15-1q9-6 12 1 0 1-1 6t0 7q3-15 16-5 2-1 9-3t9-2q2-1 4-3t3-3 3 0 5 4q5-8 7-13 6-23 10-25 4-2 6-1t3 5 0 8-1 7l-1 5v10l0 4q-8 2-10 7t0 10 9 10q0 1 4 2t9 4 7 4q12 11 8 20 4 0 6 5 0 0-2 2t-5 2-2 2q5 2 1 8 3 2 4 7t4 5q5-6 12-1 5 5 1 9 2 4 11 6t10 5q4-1 5 1t0 7 2 7q2 2 9 5t7 2l9 7q2 2 0 2 10-1 18 6 5 6-4 11 2 4-1 5t-9 4q2 0 7 0t5 1q9 5-3 9-10 2-24-7z m-91-490q115 21 195 106-1 2-7 2t-7 2q-10 4-13 5 1 4-1 7t-5 5-7 5-6 4q-1 1-4 3t-4 3-4 2-5 2-5-1l-2-1q-2 0-3-1t-3-2-2-1 0-2q-12 10-20 13-3 0-6 3t-6 4-6 0-6-3q-3-3-4-9t-1-7q-4 3 0 10t1 10q-1 3-6 2t-6-2-7-5-5-3-4-3-5-5q-2-2-4-6t-2-6q-1 2-7 3t-5 3q1-5 2-19t3-22q4-17-7-26-15-14-16-23-2-12 7-14 0-4-5-12t-4-12q0-3 2-9z" horiz-adv-x="857.1" />
<glyph glyph-name="spin1" unicode="&#xe83d;" d="M496 850c-176 0-331-90-421-226-18-27-33-55-46-85-12-29-21-60-28-92 0 0 0-1 0-1l0 0 0 0c0-1 0-2 0-2 0-7 5-12 11-12l101 0c5 0 10 4 11 9 29 113 109 206 214 253 20 10 41 17 63 23 31 7 62 11 95 11l0 0 0 0 0 0c25 0 50-2 74-7 5-1 10-2 14-3 6-1 10-3 14-4l0 0c5-1 11 1 13 6l51 87c0 0 1 1 1 2 2 6-1 13-7 15-22 7-43 13-65 17-5 1-9 1-13 2-27 5-54 7-82 7l0 0 0 0z m327-114c-5 0-9-2-11-6l-50-87c-3-4-2-10 2-14 29-29 54-63 73-101 4-7 7-14 11-22 19-46 30-97 30-151l0 0 0 0c0-77-22-149-62-209-7-11-15-23-24-33-9-11-18-21-28-31l0 0 0 0 0 0c-4-4-5-10-2-14l50-87c0-1 1-2 2-3 4-5 11-5 16-1 58 52 104 117 134 190 6 15 11 29 15 44 14 46 21 94 21 144 0 108-34 209-92 291-11 16-23 31-37 46-13 14-26 28-41 41l0 0c-1 1-1 1-2 1-2 1-4 2-5 2z m-811-468l0 0c-1 0-2 0-3 0-6-1-10-8-9-14 34-166 149-302 302-366 30-12 61-21 93-28 32-6 66-10 100-10l0 0 0 0c40 0 79 5 117 14 7 1 14 3 22 5 6 2 13 5 20 7 1 0 2 1 3 1 6 3 8 10 4 16l-50 87c-3 5-8 7-13 6-14-4-28-7-42-9-3-1-6-1-8-2-18-2-35-3-53-3l0 0 0 0c-128 0-242 63-311 160-1 0-1 0-1 0-13 19-25 40-35 61-10 21-18 43-24 65-1 6-6 10-11 10l-101 0z" horiz-adv-x="1000" />
<glyph glyph-name="spin2" unicode="&#xe83e;" d="M46 144l0 0c0 0-1 0-1 0-8 18-15 37-21 55-6 19-11 38-15 58-19 99-8 203 35 298 3 6 10 8 15 5 1 0 2 0 2-1l0 0 80-59c5-3 6-9 4-14-5-12-9-25-12-37-4-13-7-26-9-40-11-67-3-137 23-201 2-5 0-10-4-13l0 0-80-56c-5-4-12-2-16 3-1 0-1 1-1 2l0 0z m120 574l0 0c0 1 0 1 0 1 15 13 30 25 46 37 16 11 33 22 51 31 89 50 192 72 297 60 6-1 10-6 10-13 0-1-1-1-1-2l0 0-31-94c-2-5-8-8-13-7-13 0-27 0-40 0-14-1-27-2-40-4-68-11-133-40-186-84-4-3-10-3-14 0l0 0-79 58c-5 3-6 11-2 16 0 0 1 1 2 1l0 0z m588 65l0 0c0 0 1 0 1 0 17-10 34-21 50-32 16-12 31-25 46-38 74-69 127-160 148-262 2-6-2-12-9-13-1 0-1 0-2 0l0 0-100 1c-5 0-10 4-11 9-3 13-8 26-12 38-5 12-10 25-17 36-31 61-78 113-137 150-5 3-6 8-5 13l0 0 31 92c2 6 9 9 15 7 1 0 2-1 2-1l0 0z m244-535l0 0c0 0 0 0 0 0-4-20-9-39-15-57-7-19-14-37-22-55-44-92-114-170-205-221-6-3-13-1-16 4 0 1-1 2-1 2l0 0-30 94c-2 6 1 12 6 14 11 7 22 15 32 23 11 9 21 18 30 27 49 48 84 109 101 176 2 5 6 8 11 8l0 0 98-1c6 0 11-5 11-11 0-1 0-2 0-3l0 0z m-438-395l0 0c0 0 0 0 0 0-20-2-40-3-60-3-20 0-40 1-59 4-102 12-198 54-276 125-5 4-5 11 0 16 0 0 1 1 1 1l0 0 81 58c5 3 12 2 16-2 10-8 20-16 32-23 11-7 22-14 34-20 62-31 131-45 200-41 6 0 10-3 12-8l0 0 29-92c2-6-1-12-7-14-1-1-2-1-3-1l0 0z" horiz-adv-x="1000" />
<glyph glyph-name="spin3" unicode="&#xe83f;" d="M494 850c-266 0-483-210-494-472-1-19 13-20 13-20l84 0c16 0 19 10 19 18 10 199 176 358 378 358 107 0 205-45 273-118l-58-57c-11-12-11-27 5-31l247-50c21-5 46 11 37 44l-58 227c-2 9-16 22-29 13l-65-60c-89 91-214 148-352 148z m409-508c-16 0-19-10-19-18-10-199-176-358-377-358-108 0-205 45-274 118l59 57c10 12 10 27-5 31l-248 50c-21 5-46-11-37-44l58-227c2-9 16-22 30-13l64 60c89-91 214-148 353-148 265 0 482 210 493 473 1 18-13 19-13 19l-84 0z" horiz-adv-x="1000" />
<glyph glyph-name="spin4" unicode="&#xe840;" d="M498 850c-114 0-228-39-320-116l0 0c173 140 428 130 588-31 134-134 164-332 89-495-10-29-5-50 12-68 21-20 61-23 84 0 3 3 12 15 15 24 71 180 33 393-112 539-99 98-228 147-356 147z m-409-274c-14 0-29-5-39-16-3-3-13-15-15-24-71-180-34-393 112-539 185-185 479-195 676-31l0 0c-173-140-428-130-589 31-134 134-163 333-89 495 11 29 6 50-12 68-11 11-27 17-44 16z" horiz-adv-x="1001" />
<glyph glyph-name="check-empty" unicode="&#xf096;" d="M625 707h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v464q0 37-26 63t-63 26z m161-89v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q66 0 114-48t47-113z" horiz-adv-x="785.7" />
<glyph glyph-name="bookmark-empty" unicode="&#xf097;" d="M643 707h-572v-693l237 227 49 47 50-47 236-227v693z m7 72q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
<glyph glyph-name="menu" unicode="&#xf0c9;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
<glyph glyph-name="mail-alt" unicode="&#xf0e0;" d="M1000 454v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-27 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-32-15-28-5h-2q-12 0-27 5t-32 15-30 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 63-26t26-63z" horiz-adv-x="1000" />
<glyph glyph-name="comment-empty" unicode="&#xf0e5;" d="M500 636q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
<glyph glyph-name="download-cloud" unicode="&#xf0ed;" d="M714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
<glyph glyph-name="upload-cloud" unicode="&#xf0ee;" d="M714 368q0 8-5 13l-196 196q-5 5-13 5t-13-5l-196-196q-5-6-5-13 0-8 5-13t13-5h125v-196q0-8 5-13t12-5h108q7 0 12 5t5 13v196h125q8 0 13 5t5 13z m357-161q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
<glyph glyph-name="bell-alt" unicode="&#xf0f3;" d="M509-96q0 8-9 8-33 0-57 24t-23 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m455 160q0-29-21-50t-50-21h-250q0-59-42-101t-101-42-101 42-42 101h-250q-29 0-50 21t-21 50q28 24 51 49t47 67 42 89 27 115 11 145q0 84 66 157t171 89q-5 10-5 21 0 23 16 38t38 16 38-16 16-38q0-11-5-21 106-16 171-89t66-157q0-78 11-145t28-115 41-89 48-67 50-49z" horiz-adv-x="1000" />
<glyph glyph-name="quote-left" unicode="&#xf10d;" d="M429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" />
<glyph glyph-name="quote-right" unicode="&#xf10e;" d="M429 671v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z m500 0v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z" horiz-adv-x="928.6" />
<glyph glyph-name="reply" unicode="&#xf112;" d="M1000 225q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" />
<glyph glyph-name="code" unicode="&#xf121;" d="M344 69l-28-28q-5-5-12-5t-13 5l-260 261q-6 5-6 12t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l209 720q2 8 8 11t13 2l35-10q7-2 11-9t1-13z m367-363l-260-261q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-12z" horiz-adv-x="1071.4" />
<glyph glyph-name="reply-all" unicode="&#xf122;" d="M357 246v-39q0-23-22-33-7-3-14-3-15 0-25 11l-285 286q-11 10-11 25t11 25l285 286q17 17 39 8 22-10 22-33v-39l-221-222q-11-11-11-25t11-25z m643-21q0-32-9-74t-22-77-27-70-22-51l-11-22q-5-10-16-10-3 0-5 1-14 4-13 19 24 223-59 315-36 40-95 62t-150 29v-140q0-23-21-33-8-3-14-3-15 0-25 11l-286 286q-11 10-11 25t11 25l286 286q16 17 39 8 21-10 21-33v-147q230-15 335-123 94-96 94-284z" horiz-adv-x="1000" />
<glyph glyph-name="help" unicode="&#xf128;" d="M393 149v-134q0-9-7-15t-15-7h-134q-9 0-16 7t-7 15v134q0 9 7 16t16 6h134q9 0 15-6t7-16z m176 335q0-30-8-56t-20-43-31-33-32-25-34-19q-23-13-38-37t-15-37q0-10-7-18t-16-9h-134q-8 0-14 11t-6 20v26q0 46 37 87t79 60q33 16 47 32t14 42q0 24-26 41t-60 18q-36 0-60-16-20-14-60-64-7-9-17-9-7 0-14 4l-91 70q-8 6-9 14t3 16q89 148 259 148 45 0 90-17t81-46 59-72 23-88z" horiz-adv-x="571.4" />
<glyph glyph-name="info" unicode="&#xf129;" d="M357 100v-71q0-15-10-25t-26-11h-285q-15 0-25 11t-11 25v71q0 15 11 25t25 11h35v214h-35q-15 0-25 11t-11 25v71q0 15 11 25t25 11h214q15 0 25-11t11-25v-321h35q15 0 26-11t10-25z m-71 643v-107q0-15-11-25t-25-11h-143q-14 0-25 11t-11 25v107q0 14 11 25t25 11h143q15 0 25-11t11-25z" horiz-adv-x="357.1" />
<glyph glyph-name="attention-alt" unicode="&#xf12a;" d="M286 154v-125q0-15-11-25t-25-11h-143q-14 0-25 11t-11 25v125q0 14 11 25t25 10h143q15 0 25-10t11-25z m17 589l-16-429q-1-14-12-25t-25-10h-143q-14 0-25 10t-12 25l-15 429q-1 14 10 25t24 11h179q14 0 25-11t10-25z" horiz-adv-x="357.1" />
<glyph glyph-name="lock-open-alt" unicode="&#xf13e;" d="M589 421q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v179q0 103 74 177t176 73 177-73 73-177q0-14-10-25t-25-11h-36q-14 0-25 11t-11 25q0 59-42 101t-101 42-101-42-41-101v-179h410z" horiz-adv-x="642.9" />
<glyph glyph-name="minus-squared" unicode="&#xf146;" d="M714 314v72q0 14-10 25t-25 10h-500q-15 0-25-10t-11-25v-72q0-14 11-25t25-10h500q14 0 25 10t10 25z m143 304v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="ok-squared" unicode="&#xf14a;" d="M382 125l343 343q11 10 11 25t-11 25l-57 57q-11 11-25 11t-25-11l-261-261-118 118q-10 11-25 11t-25-11l-57-57q-10-10-10-25t10-25l200-200q11-10 25-10t25 10z m475 493v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="pencil-squared" unicode="&#xf14b;" d="M225 232l85-85-29-29h-31v53h-54v32z m232 217q7-7-2-16l-163-163q-9-9-16-1-8 7 1 16l163 163q9 9 17 1z m-153-385l303 304-161 161-303-304v-161h161z m339 340l51 51q16 16 16 38t-16 38l-85 85q-15 15-38 15t-37-15l-52-52z m214 214v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="link-ext-alt" unicode="&#xf14c;" d="M714 332v268q0 15-10 25t-25 11h-268q-24 0-33-22-10-23 8-39l80-80-298-298q-11-11-11-26t11-25l57-57q11-10 25-10t25 10l298 298 81-80q10-11 25-11 6 0 14 3 21 10 21 33z m143 286v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="export-alt" unicode="&#xf14d;" d="M561 236l196 196q11 11 11 25t-11 25l-196 197q-17 17-39 8-22-10-22-33v-90q-66 0-120-11t-91-28-64-44-42-53-25-61-12-62-3-62q0-101 93-226 6-6 14-6 4 0 7 1 13 5 11 19-25 197 35 264 25 29 72 42t125 13v-89q0-24 22-33 7-3 14-3 14 0 25 11z m296 382v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="doc-inv" unicode="&#xf15b;" d="M571 564v264q13-8 21-16l227-228q8-7 16-20h-264z m-71-18q0-22 16-37t38-16h303v-589q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h446v-304z" horiz-adv-x="857.1" />
<glyph glyph-name="doc-text-inv" unicode="&#xf15c;" d="M819 584q8-7 16-20h-264v264q13-8 21-16z m-265-91h303v-589q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h446v-304q0-22 16-37t38-16z m89-411v36q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v36q0 8-5 13t-13 5h-393q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z m0 143v36q0 7-5 12t-13 5h-393q-8 0-13-5t-5-12v-36q0-8 5-13t13-5h393q8 0 13 5t5 13z" horiz-adv-x="857.1" />
<glyph glyph-name="thumbs-up-alt" unicode="&#xf164;" d="M143 100q0 15-11 25t-25 11q-15 0-25-11t-11-25q0-15 11-25t25-11q15 0 25 11t11 25z m89 286v-357q0-15-10-25t-26-11h-160q-15 0-25 11t-11 25v357q0 14 11 25t25 10h160q15 0 26-10t10-25z m661 0q0-48-31-83 9-25 9-43 1-42-24-76 9-31 0-66-9-31-31-52 5-62-27-101-36-43-110-44h-72q-37 0-80 9t-68 16-67 22q-69 24-88 25-15 0-25 11t-11 25v357q0 14 10 25t24 11q13 1 42 33t57 67q38 49 56 67 10 10 17 27t10 27 8 34q4 22 7 34t11 29 19 28q10 11 25 11 25 0 46-6t33-15 22-22 14-25 7-28 2-25 1-22q0-21-6-43t-10-33-16-31q-1-4-5-10t-6-13-5-13h155q43 0 75-32t32-75z" horiz-adv-x="928.6" />
<glyph glyph-name="thumbs-down-alt" unicode="&#xf165;" d="M143 529q0-15-11-25t-25-11q-15 0-25 11t-11 25q0 15 11 25t25 10q15 0 25-10t11-25z m89-286v357q0 15-10 25t-26 11h-160q-15 0-25-11t-11-25v-357q0-15 11-25t25-11h160q15 0 26 11t10 25z m630 83q31-34 31-83-1-44-32-75t-75-32h-155q2-8 5-14t6-12 5-10q10-21 15-32t11-32 6-43q0-14-1-22t-2-25-7-28-14-25-22-23-33-14-46-6q-15 0-25 11-12 11-19 27t-11 29-7 35q-5 23-8 33t-10 27-17 27q-18 19-56 67-28 36-57 68t-42 33q-14 1-24 11t-10 24v358q0 15 11 25t25 11q19 0 88 24 43 15 67 22t68 17 80 8h72q74-1 110-43 32-39 27-101 22-21 31-53 9-34 0-65 25-34 24-77 0-17-9-42z" horiz-adv-x="928.6" />
<glyph glyph-name="sliders" unicode="&#xf1de;" d="M196 64v-71h-196v71h196z m197 72q14 0 25-11t11-25v-143q0-14-11-25t-25-11h-143q-14 0-25 11t-11 25v143q0 15 11 25t25 11h143z m89 214v-71h-482v71h482z m-357 286v-72h-125v72h125z m732-572v-71h-411v71h411z m-536 643q15 0 26-10t10-26v-142q0-15-10-25t-26-11h-142q-15 0-25 11t-11 25v142q0 15 11 26t25 10h142z m358-286q14 0 25-10t10-25v-143q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v143q0 14 11 25t25 10h143z m178-71v-71h-125v71h125z m0 286v-72h-482v72h482z" horiz-adv-x="857.1" />
<glyph glyph-name="share" unicode="&#xf1e0;" d="M679 279q74 0 126-53t52-126-52-126-126-53-127 53-52 126q0 7 1 19l-201 100q-51-48-121-48-75 0-127 53t-52 126 52 126 127 53q70 0 121-48l201 100q-1 12-1 19 0 74 52 126t127 53 126-53 52-126-52-126-126-53q-71 0-122 48l-201-100q1-12 1-19t-1-19l201-100q51 48 122 48z" horiz-adv-x="857.1" />
<glyph glyph-name="bell-off" unicode="&#xf1f6;" d="M869 375q35-199 167-311 0-29-21-50t-51-21h-250q0-59-42-101t-101-42-100 42-42 100z m-298-480q9 0 9 9t-9 8q-32 0-56 24t-24 57q0 9-9 9t-9-9q0-41 29-70t69-28z m560 893q4-6 4-14t-6-12l-1045-905q-5-5-13-4t-12 6l-47 53q-4 6-4 14t6 12l104 90q-11 17-11 36 28 24 51 49t47 67 42 89 28 115 11 145q0 84 65 157t171 89q-4 10-4 21 0 23 16 38t37 16 38-16 16-38q0-11-4-21 69-10 122-46t82-88l234 202q5 5 13 4t12-6z" horiz-adv-x="1142.9" />
<glyph glyph-name="bell-off-empty" unicode="&#xf1f7;" d="M580-96q0 8-9 8-32 0-56 24t-24 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m-299 265l489 424q-23 49-74 82t-125 32q-51 0-94-17t-68-45-38-58-14-58q0-215-76-360z m755-105q0-29-21-50t-51-21h-250q0-59-42-101t-101-42-100 42-42 100l83 72h422q-92 105-126 256l61 55q35-199 167-311z m48 777l47-53q4-6 4-14t-6-12l-1045-905q-5-5-13-4t-12 6l-47 53q-4 6-4 14t6 12l104 90q-11 17-11 36 28 24 51 49t47 67 42 89 28 115 11 145q0 84 65 157t171 89q-4 10-4 21 0 23 16 38t37 16 38-16 16-38q0-11-4-21 69-10 122-46t82-88l234 202q5 5 13 4t12-6z" horiz-adv-x="1142.9" />
<glyph glyph-name="trash" unicode="&#xf1f8;" d="M286 82v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m143 0v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m142 0v393q0 8-5 13t-12 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q7 0 12 5t5 13z m-303 554h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
<glyph glyph-name="toggle-off" unicode="&#xf204;" d="M643 350q0 58-23 111t-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23 111 23 91 61 61 91 23 111z m428 0q0 58-22 111t-61 91-91 61-111 23h-216q67-50 106-125t38-161-38-161-106-125h216q58 0 111 23t91 61 61 91 22 111z m72 0q0-72-29-139t-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139 29 139 76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139z" horiz-adv-x="1142.9" />
<glyph glyph-name="toggle-on" unicode="&#xf205;" d="M0 350q0 73 29 139t76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139-29-139-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139z m786-286q58 0 111 23t91 61 61 91 22 111-22 111-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23z" horiz-adv-x="1142.9" />
<glyph glyph-name="user-plus" unicode="&#xf234;" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" />
<glyph glyph-name="user-times" unicode="&#xf235;" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m601-179l139-138q5-5 5-13 0-8-5-13l-76-76q-5-5-12-5-8 0-13 5l-139 139-139-139q-5-5-13-5-7 0-12 5l-76 76q-5 5-5 13 0 8 5 13l139 138-139 139q-5 5-5 13 0 8 5 13l76 75q5 5 12 5 8 0 13-5l139-139 139 139q5 5 13 5 7 0 12-5l76-75q5-5 5-13 0-8-5-13z m-278 0l-101-101q-21-20-21-50 0-30 21-51l46-46q-11-2-24-2h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 86-68 178-68t178 68q11 10 22 10 15 0 31-4-15-15-22-27t-8-32q0-30 21-51z" horiz-adv-x="1142.9" />
<glyph glyph-name="hashtag" unicode="&#xf292;" d="M553 279l36 142h-142l-36-142h142z m429 281l-32-125q-4-14-17-14h-182l-36-142h173q9 0 14-7 6-8 4-16l-32-125q-2-13-17-13h-182l-45-183q-4-14-18-14h-125q-9 0-14 7-5 7-4 16l44 174h-142l-45-183q-4-14-17-14h-126q-8 0-14 7-5 7-3 16l43 174h-173q-9 0-14 7-5 6-4 15l32 125q4 14 17 14h182l36 142h-173q-9 0-14 7-6 8-4 16l32 125q2 13 17 13h182l46 183q3 14 17 14h125q9 0 14-7 5-7 4-16l-44-174h142l45 183q4 14 18 14h125q8 0 14-7 5-7 3-16l-43-174h173q9 0 14-7 5-6 4-15z" horiz-adv-x="1000" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 47 KiB

BIN
font/fontello.ttf Normal file

Binary file not shown.

BIN
font/fontello.woff Normal file

Binary file not shown.

BIN
font/fontello.woff2 Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,361 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<defs >
<font id="PatuaOne" horiz-adv-x="443" ><font-face
font-family="Patua One"
units-per-em="1000"
panose-1="2 0 0 0 0 0 0 0 0 0"
ascent="972"
descent="-247"
alphabetic="0" />
<glyph unicode=" " glyph-name="space" horiz-adv-x="225" />
<glyph unicode="!" glyph-name="exclam" horiz-adv-x="279" d="M62 510Q62 594 69 690H211Q217 601 217 522Q217 335 184 202H94Q62 332 62 510ZM60 -10T60 64T139 138T219 64T140 -10Z" />
<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="386" d="M358 839T378 823T399 782Q399 716 295 579L244 598Q246 751 283 813Q299 839 328 839ZM152 839T172 823T193 782Q193 716 89 579L38 598Q40 751 77 813Q93 839 122 839Z" />
<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="793" d="M586 86H514L419 -200L353 -189Q346 -178 344 -156T341 -120T349 -89L407 86H261L166 -200L100 -189Q93 -178 91 -156T88 -120T96 -89L154 86H32L22 144Q53 179 112 179H185L248 370H126L116
428Q147 463 206 463H279L365 720L431 709Q438 698 440 676T443 640T435 608L386 463H532L618 720L684 709Q691 698 693 676T696 640T688 608L639 463H762L772 405Q742 370 682 370H608L545 179H666L676 121Q646 86 586 86ZM355 370L292 179H438L501 370H355Z"
/>
<glyph unicode="$" glyph-name="dollar" horiz-adv-x="541" d="M339 581Q305 590 268 590T209 572T186 520T203 467T270 434L359 408Q431 387 473 343T516 210T457 64T306 -5Q330 -82 330 -158Q330 -167 330 -175H210Q209 -164 209 -153Q209 -82 232 -7Q106 0
31 51Q31 57 31 74T38 132T58 199H153Q169 168 172 116Q207 101 253 101T330 123T360 186Q360 205 357 217T339 244T294 268L191 298Q34 343 34 498Q34 578 85 630T222 694Q198 774 198 846Q198 857 198 867H318Q318 858 318 850Q318 775 295 697Q390 692 481 650Q481
644 481 627T474 569T454 502H359Q343 531 339 581Z" />
<glyph unicode="%" glyph-name="percent" horiz-adv-x="846" d="M217 -5Q212 11 212 35T231 94L563 720L626 698Q631 682 631 658T612 598L280 -27L217 -5ZM25 507Q25 604 75 653T207 702T336 659T382 516T332 366T199 315Q25 315 25 507ZM170 617T159 597T147
512T160 423T204 399T248 421T260 508T247 595T202 617ZM464 184Q464 281 514 330T646 379T775 336T821 193T771 43T638 -8Q464 -8 464 184ZM609 294T598 274T586 189T599 100T643 76T687 98T699 185T686 272T641 294Z" />
<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="591" d="M361 698T399 653T437 545T403 443T290 345Q336 277 432 203Q461 233 476 286L566 254Q549 188 506 134Q519 122 548 102T582 77L526 -8Q469 22 425 59Q332 -8 237 -8T86 37T29 166Q29 263
147 351Q72 448 72 528T123 653T267 698ZM329 530Q329 609 269 609Q194 609 194 530Q194 471 237 412Q329 474 329 530ZM205 272Q166 233 166 184Q166 93 274 93Q326 93 350 123Q239 222 205 272Z" />
<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="180" d="M152 839T172 823T193 782Q193 716 89 579L38 598Q40 751 77 813Q93 839 122 839Z" />
<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="285" d="M191 471T181 405T171 271T180 135T204 20Q232 -72 256 -117L265 -135L214 -174Q204 -167 181 -143T141 -94T102 -31T66 50Q29 151 29 254T48 435T94 559T148 640T195 688L214 702L262 660Q250
642 233 599T203 513Z" />
<glyph unicode=")" glyph-name="parenright" horiz-adv-x="285" d="M216 514T236 436T256 272T237 109T191 -17Q135 -118 90 -158L71 -174L20 -135Q29 -122 49 -73T82 22Q114 137 114 271Q114 408 82 514Q52 609 32 644L23 660L71 702Q79 697 91 688T135 641T191 559Z" />
<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="415" d="M251 643V607L342 660L378 616Q370 576 325 550L294 532L386 480L365 427Q351 422 331 422T281 439L251 456V350L195 342Q163 369 163 421V456L71 403L36 447Q44 488 89 514L120 532L28 586L48
638Q61 643 81 643T132 625L163 607V714L219 722Q251 696 251 643Z" />
<glyph unicode="+" glyph-name="plus" horiz-adv-x="507" d="M305 405V318H473L483 256Q453 221 393 221H305V54L235 44Q200 75 200 134V221H34L24 283Q55 318 114 318H200V485L270 495Q305 465 305 405Z" />
<glyph unicode="," glyph-name="comma" horiz-adv-x="244" d="M36 65Q36 141 121 141T206 65Q206 -2 172 -59T90 -151L48 -125Q81 -70 81 -17Q81 -9 80 -2Q61 4 49 22T36 65Z" />
<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="421" d="M286 220H56L46 284Q77 319 136 319H366L376 255Q346 220 286 220Z" />
<glyph unicode="." glyph-name="period" horiz-adv-x="240" d="M37 -10T37 65T120 141T204 66T121 -10Z" />
<glyph unicode="/" glyph-name="slash" horiz-adv-x="413" d="M41 -189Q29 -168 29 -120Q29 -107 37 -89L306 720L372 709Q379 698 381 676T384 640T376 608L107 -200L41 -189Z" />
<glyph unicode="0" glyph-name="zero" horiz-adv-x="576" d="M148 -8T95 71T41 339T101 613T295 698T482 623T536 359T475 81T281 -8ZM191 497T191 352T211 146T288 85Q336 85 359 124Q386 169 386 329T366 547T287 605T209 551Z" />
<glyph unicode="1" glyph-name="one" horiz-adv-x="347" d="M206 693Q233 693 261 690V689L262 690V116Q302 100 317 83L307 0H47L37 83Q55 105 118 121V559Q62 565 28 580V656Q112 693 206 693Z" />
<glyph unicode="2" glyph-name="two" horiz-adv-x="543" d="M275 698Q491 698 491 523Q491 485 472 443T427 369L282 195Q249 157 204 120L188 106L193 95Q239 104 291 104H370Q377 159 395 190L490 184Q512 146 512 63Q512 28 505 0H46L22 124L271 394Q341 470
341 540Q341 576 323 593T259 610T180 597Q171 523 157 500L68 505Q49 538 47 616Q47 633 48 640Q138 698 275 698Z" />
<glyph unicode="3" glyph-name="three" horiz-adv-x="512" d="M40 644Q40 657 41 666Q66 678 125 688T227 698T307 690T377 664T430 609T450 527T423 442T359 382V373Q477 331 477 218T397 48T190 -8Q150 -8 101 3T24 29L47 115Q114 90 174 90Q321 90 321 196Q321
316 204 316Q157 316 115 312L106 396L195 404Q308 415 308 513Q308 564 284 587T212 610Q194 610 176 607Q169 552 151 523L62 528Q40 563 40 644Z" />
<glyph unicode="4" glyph-name="four" horiz-adv-x="557" d="M459 282H533V182H459V113Q498 98 514 79L504 0H250L240 79Q259 102 321 118V182H32L6 261L219 714L321 670L192 366Q172 320 148 292L139 281L144 270Q178 282 230 282H321V425Q321 552 355 606L459 595V282Z" />
<glyph unicode="5" glyph-name="five" horiz-adv-x="499" d="M263 442Q361 442 416 390T472 233Q472 110 400 51T197 -8Q155 -8 105 4T28 32L60 119Q117 97 183 97T282 124T315 211Q315 292 277 318Q247 339 205 339T96 329L56 403H55V690H424V576H180V436Q212
442 263 442Z" />
<glyph unicode="6" glyph-name="six" horiz-adv-x="524" d="M299 426Q398 426 452 373T506 215T438 51T254 -8T87 59T36 273T117 539T334 702L376 619Q230 556 193 401Q240 426 299 426ZM180 273Q180 176 200 131T263 86Q362 86 362 211Q362 270 345 299T286 329Q225
329 180 300V273Z" />
<glyph unicode="7" glyph-name="seven" horiz-adv-x="502" d="M246 590H158Q151 535 133 504L38 510Q16 548 16 628Q16 662 23 690H483L496 611L241 0H90L287 471Q307 517 338 570L349 588L344 599Q298 590 246 590Z" />
<glyph unicode="8" glyph-name="eight" horiz-adv-x="556" d="M67 516Q67 604 123 651T283 698T438 657T489 527Q489 488 467 447T414 377Q468 341 495 305T522 207Q522 107 456 50T271 -8T93 41T34 192Q34 246 62 291T138 366Q102 398 85 431T67 516ZM180 204Q180
93 278 93T376 187Q376 239 338 268Q308 290 275 303T234 320Q180 274 180 204ZM236 608T215 588T193 539T200 494T224 466T252 448T286 433T317 420Q363 466 363 516T341 587T278 608Z" />
<glyph unicode="9" glyph-name="nine" horiz-adv-x="518" d="M237 282Q145 282 81 335T17 489T78 644T250 699T422 624T483 409T401 153T189 -12L143 71Q282 136 325 299Q292 282 237 282ZM339 417Q339 519 315 562T245 605T180 578T161 495T186 409T250 379Q309
379 338 397Q339 404 339 417Z" />
<glyph unicode=":" glyph-name="colon" horiz-adv-x="255" d="M48 70T48 144T127 219T207 145T128 70ZM48 296T48 370T127 445T207 371T128 296Z" />
<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="271" d="M53 115Q53 188 134 188T215 115Q215 52 183 -3T105 -91L64 -66Q96 -16 96 36Q96 44 95 51Q77 57 65 74T53 115ZM54 293T54 367T133 442T213 368T134 293Z" />
<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="390" d="M351 98L307 60Q250 85 159 173T23 339Q67 416 158 504T307 618L351 581Q309 473 190 339Q311 201 351 98Z" />
<glyph unicode="=" glyph-name="equal" horiz-adv-x="563" d="M421 305H62L52 367Q83 402 142 402H501L511 340Q481 305 421 305ZM421 108H62L52 170Q83 205 142 205H501L511 143Q481 108 421 108Z" />
<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="391" d="M84 60L40 98Q77 196 200 339Q79 478 40 581L84 618Q141 593 232 505T368 339Q324 262 233 174T84 60Z" />
<glyph unicode="?" glyph-name="question" horiz-adv-x="530" d="M167 193Q157 226 157 247T165 291T203 344T266 396T324 448T349 514Q349 589 247 589Q205 589 167 573Q164 521 148 490H53Q40 516 33 556T26 614T26 637Q69 666 131 682T252 698Q363 698 434
648T505 503Q505 462 488 428T445 372T390 328T335 288Q282 252 282 202Q282 198 283 193H167ZM139 -8T139 67T222 143T306 68T223 -8Z" />
<glyph unicode="@" glyph-name="at" horiz-adv-x="937" d="M422 -187Q36 -187 36 181Q36 439 162 568T522 698Q718 698 814 611T911 341Q911 201 842 109T647 16Q594 16 562 35T522 80Q499 62 465 50T407 38Q331 38 295 76T259 195T279 331T332 416Q394 470 459
470T560 439Q575 464 609 464H663L632 144Q632 141 632 139Q632 106 669 106Q806 106 806 319Q806 486 716 556Q633 621 505 621Q310 621 216 494Q182 448 162 374T141 202Q141 42 223 -29T438 -101Q549 -101 643 -68L660 -137Q552 -187 422 -187ZM379 165T393
145T445 124T517 156L537 371Q506 385 471 385Q379 385 379 212Q379 165 393 145Z" />
<glyph unicode="A" glyph-name="A" horiz-adv-x="645" d="M390 695L589 118Q631 103 648 83L638 0H404L394 83Q406 99 442 113L415 197H215L190 116Q225 102 242 83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325
481 322 538L321 555H307Z" />
<glyph unicode="B" glyph-name="B" horiz-adv-x="617" d="M269 690Q387 690 440 676T517 641Q568 597 568 506Q568 438 495 377Q588 330 588 202Q588 102 523 54T327 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H269ZM320 299H231V109H300Q368 109 403
129T438 201T411 276T320 299ZM283 581H231V408H313Q364 408 391 434T418 497T399 554T355 577T283 581Z" />
<glyph unicode="C" glyph-name="C" horiz-adv-x="570" d="M404 572Q374 585 314 585T217 533T180 351T215 167T321 112Q428 112 513 144L549 55Q443 -8 300 -8T94 73T30 338T108 610T329 698Q443 698 546 635Q546 629 546 612T539 554T519 487H424Q410 514 404 572Z" />
<glyph unicode="D" glyph-name="D" horiz-adv-x="643" d="M297 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H265Q426 690 520 600T615 336T530 81T297 0ZM231 109H303Q378 109 421 154T465 331Q465 581 276 581H231V109Z" />
<glyph unicode="E" glyph-name="E" horiz-adv-x="539" d="M506 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H498V516L424 507Q401 527 387 581H231V409H370Q382 439 395 451L458 444V266L395 258Q382 268 370 300H231V109H395Q408 161 432 183L506 174V0Z" />
<glyph unicode="F" glyph-name="F" horiz-adv-x="523" d="M498 690V516L424 507Q401 527 387 581H231V399H370Q382 429 395 441L458 434V256L395 248Q382 258 370 290H231V124Q298 109 328 83L318 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H498Z" />
<glyph unicode="G" glyph-name="G" horiz-adv-x="620" d="M323 585Q255 585 218 533T180 352Q180 105 316 105Q370 105 412 122V235Q366 250 349 272L359 351H593L603 272Q590 256 556 241V56Q508 21 451 7T307 -8Q164 -8 97 73T30 338T109 610T327 698T554 635Q554
629 554 612T547 554T527 487H435Q420 515 415 570Q372 585 323 585Z" />
<glyph unicode="H" glyph-name="H" horiz-adv-x="682" d="M451 316H231V116Q271 100 286 83L276 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276L286 607Q270 588 231 573V416H451V573Q410 588 396 607L406 690H640L650 607Q634 588 595 573V116Q635
100 650 83L640 0H406L396 83Q409 100 451 116V316Z" />
<glyph unicode="I" glyph-name="I" horiz-adv-x="318" d="M276 690L286 607Q270 588 231 573V116Q271 100 286 83L276 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="J" glyph-name="J" horiz-adv-x="300" d="M12 -100Q48 -100 63 -82T78 -9V573Q37 588 23 607L33 690H267L277 607Q261 588 222 573L221 0Q221 -115 177 -161T33 -208T-138 -156Q-138 -150 -138 -135T-132 -84T-113 -24H-23Q-9 -46 -3 -99Q2 -100 12 -100Z" />
<glyph unicode="K" glyph-name="K" horiz-adv-x="627" d="M625 0H459L237 360L404 582Q376 595 365 609L375 690H603L613 609Q599 593 561 577L388 364L546 126Q611 112 635 83L625 0ZM276 690L286 607Q270 588 231 573V116Q271 100 286 83L276 0H42L32 83Q45
100 87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="L" glyph-name="L" horiz-adv-x="502" d="M500 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276L286 607Q270 588 231 573V109H389Q402 161 426 183L500 174V0Z" />
<glyph unicode="M" glyph-name="M" horiz-adv-x="907" d="M681 377Q681 417 688 501L690 525L680 526Q657 441 640 391L507 0H374L234 391Q215 436 200 503L194 526L184 525Q193 436 193 377V114Q230 100 248 77L238 0H42L32 77Q50 100 87 114V576Q46 591 30 613L40
690H268L414 287Q442 221 450 166L453 149H467Q471 210 503 287L642 690H866L876 613Q860 591 819 576V118Q858 103 874 83L864 0H636L626 82Q642 102 681 117V377Z" />
<glyph unicode="N" glyph-name="N" horiz-adv-x="676" d="M193 377V114Q230 100 248 77L238 0H42L32 77Q50 100 87 114V576Q46 591 30 613L40 690H246L445 302Q467 260 488 190L495 166L506 170Q492 257 492 316V575Q456 589 437 613L447 690H643L653 613Q634
589 598 575V0H441L240 391Q218 433 197 504L190 527L179 523Q193 436 193 377Z" />
<glyph unicode="O" glyph-name="O" horiz-adv-x="643" d="M171 -8T101 74T30 339T107 610T328 698T542 620T613 359T534 84T313 -8ZM180 481T180 352T218 164T322 105T426 160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="P" glyph-name="P" horiz-adv-x="606" d="M276 240H231V122Q304 106 322 83L312 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H307Q446 688 514 640T583 467Q583 240 276 240ZM291 581H231V349H298Q366 349 399 376T433 469T397 558T291 581Z" />
<glyph unicode="Q" glyph-name="Q" horiz-adv-x="643" d="M135 16T83 99T30 352T107 610T328 698T542 620T613 356Q613 201 554 111T387 -1Q437 -66 554 -85L544 -176Q540 -176 535 -176Q431 -176 346 -131T240 -2Q135 16 83 99ZM180 481T180 352T218 164T322
105T426 160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="R" glyph-name="R" horiz-adv-x="628" d="M573 488Q573 420 531 374T424 304Q474 283 490 253L563 114Q610 98 627 77L617 0H448L333 245Q317 282 296 282H231V122Q304 106 322 83L312 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H297Q437
688 505 645T573 488ZM290 581H231V391H288Q356 391 389 411T423 485T389 559T290 581Z" />
<glyph unicode="S" glyph-name="S" horiz-adv-x="538" d="M340 581Q306 590 269 590T210 572T187 520T204 467T271 434L360 408Q432 387 474 343T517 212Q517 110 444 51T261 -8Q201 -8 138 7T32 51Q32 57 32 74T39 132T59 199H154Q170 168 173 116Q208 101 254
101T331 123T361 186Q361 205 358 217T340 244T295 268L192 298Q35 343 35 498Q35 589 101 643T273 698T482 650Q482 644 482 627T475 569T455 502H360Q343 526 340 581Z" />
<glyph unicode="T" glyph-name="T" horiz-adv-x="576" d="M568 689V546L505 538Q492 548 480 580H360V116Q400 100 415 83L405 0H171L161 83Q174 100 216 116V580H96Q84 548 71 538L8 546V689H568Z" />
<glyph unicode="U" glyph-name="U" horiz-adv-x="634" d="M563 119T504 56T311 -8T125 54T71 250V573Q33 587 16 607L26 690H260L270 607Q254 588 215 573V246Q215 174 238 140T323 105T409 140T434 246V573Q393 588 379 607L389 690H608L618 607Q602 588 563
573V250Q563 119 504 56Z" />
<glyph unicode="V" glyph-name="V" horiz-adv-x="630" d="M246 -5L56 573Q13 589 0 607L10 690H244L254 607Q240 588 203 575L288 279Q309 210 314 152L315 135H329Q330 196 354 277L443 574Q405 587 390 607L400 690H628L638 607Q620 585 571 569L383 -5H246Z" />
<glyph unicode="W" glyph-name="W" horiz-adv-x="979" d="M456 374L372 -5H218L58 573Q17 588 3 607L13 690H244L254 607Q237 587 200 574L271 279Q287 215 296 152L298 135H312Q313 194 331 277L421 683H574L664 279Q680 206 686 152L688 134H702Q704 195 726
277L805 570Q763 585 747 607L757 690H978L988 607Q969 583 921 568L753 -5H596L515 373Q501 441 494 506L492 526H478Q474 457 456 374Z" />
<glyph unicode="X" glyph-name="X" horiz-adv-x="596" d="M317 423Q323 447 353 503L391 575Q356 590 342 607L352 690H580L590 607Q572 585 523 569L393 359L528 118Q572 103 589 83L579 0H345L335 83Q347 97 377 111L331 209Q306 260 298 291L295 302H280Q271
268 244 211L199 115Q235 99 249 83L239 0H11L1 83Q19 105 68 121L204 360L74 571Q27 587 12 607L22 690H256L266 607Q253 591 226 580L266 505Q292 455 302 423H317Z" />
<glyph unicode="Y" glyph-name="Y" horiz-adv-x="588" d="M412 0H178L168 83Q181 100 223 116V231L60 570Q13 586 -4 607L5 685V686L6 690H240L250 607Q238 590 204 577L238 500Q267 434 288 369L295 349H310Q331 422 365 500L397 573Q357 589 343 607L353 690H581L591
607Q571 584 525 569L367 231V116Q407 100 422 83L412 0Z" />
<glyph unicode="Z" glyph-name="Z" horiz-adv-x="570" d="M269 590H176Q169 535 151 504L56 510Q34 548 34 628Q34 662 41 690H528L538 611L248 176Q221 134 192 110L181 102L186 91Q232 100 284 100H406Q413 155 431 186L526 180Q548 142 548 62Q548 28 541 0H25L15
79L305 514Q332 556 362 580L372 588L367 599Q321 590 269 590Z" />
<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="327" d="M223 634H168V-114H223Q250 -114 273 -123T307 -140L317 -149L307 -200H67V720H307L317 669Q283 634 223 634Z" />
<glyph unicode="\" glyph-name="backslash" horiz-adv-x="446" d="M151 641L418 -168L359 -199Q344 -193 324 -170T296 -121L28 689L88 719Q105 712 124 689T151 641Z" />
<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="327" d="M159 634H104Q77 634 54 642T20 660L10 669L20 720H260V-200H20L10 -149Q44 -114 104 -114H159V634Z" />
<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="524" d="M262 695Q209 616 138 569L95 604Q108 649 162 730T262 837Q307 811 361 730T429 604L386 569Q315 616 262 695Z" />
<glyph unicode="_" glyph-name="underscore" horiz-adv-x="633" d="M451 -125H103L93 -65Q124 -30 183 -30H531L541 -90Q511 -125 451 -125Z" />
<glyph unicode="`" glyph-name="grave" horiz-adv-x="833" d="M328 600L274 569Q233 595 190 643T133 732L237 796Q266 767 294 706T328 600Z" />
<glyph unicode="a" glyph-name="a" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224 407Q193 407
173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94Z" />
<glyph unicode="b" glyph-name="b" horiz-adv-x="537" d="M5 710Q61 723 109 723T190 720V470Q211 485 246 496T313 508Q422 508 466 452T510 261Q510 186 490 132T434 48Q368 -8 278 -8Q210 -8 144 26Q125 0 100 0H50V599Q15 611 -5 633L5 710ZM270 94Q366 94
366 255Q366 340 350 370T292 401Q230 401 190 368V111Q233 94 270 94Z" />
<glyph unicode="c" glyph-name="c" horiz-adv-x="450" d="M261 406Q169 406 169 248Q169 168 194 137T268 105Q344 105 402 119L432 42Q400 21 346 7T241 -8Q25 -8 25 242Q25 388 100 452Q167 508 263 508T423 472Q424 462 424 453Q424 396 398 345H310Q296 370
293 405Q281 406 261 406Z" />
<glyph unicode="d" glyph-name="d" horiz-adv-x="555" d="M286 710Q343 723 395 723T484 720V120Q514 115 539 103V24Q479 -8 387 -8Q377 -3 368 10T357 35Q335 17 300 5T231 -8Q123 -8 75 50T26 242Q26 393 100 454Q165 508 260 508Q302 508 344 498V597Q298
610 276 633L286 710ZM252 94Q309 94 344 128V396Q303 406 257 406T191 366T170 245T190 129T252 94Z" />
<glyph unicode="e" glyph-name="e" horiz-adv-x="483" d="M266 -8Q146 -8 86 56T25 242Q25 316 46 369T103 452Q173 508 266 508T408 461T458 290Q458 218 387 218H170Q174 155 202 129T293 103Q327 103 358 111T403 127L417 135L447 55Q441 48 430 38T372 10T266
-8ZM329 307Q331 321 331 341T315 383T260 406T199 382T171 301L329 307Z" />
<glyph unicode="f" glyph-name="f" horiz-adv-x="382" d="M81 519Q81 623 126 675T269 728T439 675Q440 668 440 655T433 610T414 560H330Q312 594 311 624Q299 626 291 626Q253 626 237 605T221 529V491H374V399H221V116Q296 101 323 77L313 0H36L26 77Q40 96
81 111V399H37L26 468Q48 488 81 491V519Z" />
<glyph unicode="g" glyph-name="g" horiz-adv-x="535" d="M256 -106Q345 -106 345 1V45Q296 15 222 15Q128 15 78 70T27 253Q27 508 261 508Q321 508 373 482Q383 500 403 500H485V8Q485 -102 431 -155T262 -208Q202 -208 138 -194T41 -159Q40 -150 40 -141Q40
-86 66 -35H154Q165 -56 170 -91Q208 -106 256 -106ZM165 184T185 154T255 124T345 152V389Q305 406 258 406Q165 406 165 259Q165 184 185 154Z" />
<glyph unicode="h" glyph-name="h" horiz-adv-x="583" d="M24 710Q80 723 128 723T209 720V470Q233 486 273 497T344 508Q443 508 481 460T519 314V111Q558 96 574 77L564 0H334L324 77Q338 96 379 111V309Q379 363 362 381T298 400T209 368V111Q248 96 264 77L254
0H24L14 77Q28 96 69 111V599Q34 611 14 633L24 710Z" />
<glyph unicode="i" glyph-name="i" horiz-adv-x="292" d="M38 500Q94 513 142 513T223 510V111Q262 96 278 77L268 0H38L28 77Q42 96 83 111V389Q48 401 28 423L38 500ZM68 569T68 644T151 720T235 645T152 569Z" />
<glyph unicode="j" glyph-name="j" horiz-adv-x="260" d="M25 500Q81 513 129 513T210 510V0Q210 -116 167 -162T21 -208Q-9 -208 -36 -203L-24 -105Q-17 -106 11 -106T54 -85T70 -9V389Q35 401 15 423L25 500ZM55 569T55 644T138 720T222 645T139 569Z" />
<glyph unicode="k" glyph-name="k" horiz-adv-x="567" d="M24 710Q80 723 128 723T209 720V111Q248 96 264 77L254 0H24L14 77Q28 96 69 111V599Q34 611 14 633L24 710ZM395 0L218 259L328 402Q311 412 304 423L314 500H534L544 423Q522 395 461 379L365 269L478
120Q540 106 565 77L555 0H395Z" />
<glyph unicode="l" glyph-name="l" horiz-adv-x="279" d="M24 710Q80 723 128 723T209 720V111Q248 96 264 77L254 0H24L14 77Q28 96 69 111V599Q34 611 14 633L24 710Z" />
<glyph unicode="m" glyph-name="m" horiz-adv-x="876" d="M36 500Q91 512 135 512T208 510V460Q232 480 268 494T333 508Q447 508 485 451Q510 475 551 491T627 508Q737 508 775 459T813 273V111Q852 96 868 77L858 0H628L618 77Q632 96 673 111V309Q673 364 658
382T599 400T514 367Q519 333 519 273V111Q558 96 574 77L564 0H334L324 77Q338 96 379 111V309Q379 364 364 382T305 400T221 368V111Q260 96 276 77L266 0H36L26 77Q40 96 81 111V389Q46 401 26 423L36 500Z" />
<glyph unicode="n" glyph-name="n" horiz-adv-x="595" d="M36 500Q91 512 135 512T208 510V460Q233 481 274 494T354 508Q452 508 491 462T531 303V111Q570 96 586 77L576 0H346L336 77Q350 96 391 111V309Q391 363 374 381T311 400T221 368V111Q260 96 276 77L266
0H36L26 77Q40 96 81 111V389Q46 401 26 423L36 500Z" />
<glyph unicode="o" glyph-name="o" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254Z" />
<glyph unicode="p" glyph-name="p" horiz-adv-x="556" d="M25 500Q80 512 124 512T197 510V461Q264 508 340 508Q440 508 485 451T530 261Q530 190 509 136T452 52Q383 -8 288 -8Q247 -8 210 0V-86Q269 -102 286 -123L276 -200H25L15 -123Q28 -105 70 -89V389Q35
401 15 423L25 500ZM278 94Q328 94 357 138T386 261T370 369T312 398Q248 398 210 368V102Q241 94 278 94Z" />
<glyph unicode="q" glyph-name="q" horiz-adv-x="534" d="M484 500V-94Q513 -107 526 -123L516 -200H284L274 -123Q293 -99 344 -84V29Q288 -8 235 -8Q124 -8 75 50T26 242Q26 393 100 454Q165 508 260 508Q315 508 366 485Q388 500 408 500H484ZM170 164T190
129T257 94T344 132V389Q304 406 258 406T191 366T170 245Z" />
<glyph unicode="r" glyph-name="r" horiz-adv-x="388" d="M326 377Q250 377 221 348V119Q302 104 332 77L322 0H36L26 77Q40 96 81 111V389Q46 401 26 423L36 500Q91 512 135 512T208 510V447Q231 474 267 491T332 509T373 504L370 374Q350 377 326 377Z" />
<glyph unicode="s" glyph-name="s" horiz-adv-x="451" d="M226 418Q160 418 160 379Q160 342 229 324L308 303Q430 271 430 162Q430 87 378 40T211 -8T32 24Q31 35 31 46Q31 101 53 145H136Q149 121 153 95Q173 89 210 89Q298 89 298 139Q298 155 286 165T239
186L160 209Q99 226 65 259T31 358T84 466T235 508T402 479Q403 469 403 459Q403 407 381 363H299Q286 386 282 411Q254 418 226 418Z" />
<glyph unicode="t" glyph-name="t" horiz-adv-x="372" d="M208 626V500H351V416H208V163Q208 131 217 117T260 102T333 117L363 39Q286 0 206 0T97 34T68 135V416H23L12 477Q28 496 78 515Q90 597 135 626H208Z" />
<glyph unicode="u" glyph-name="u" horiz-adv-x="588" d="M395 42Q326 -8 233 -8T102 31T65 158V389Q30 401 10 423L20 500Q76 513 124 513T205 510V191Q205 137 221 120T287 102T378 134V389Q343 401 323 423L333 500Q389 513 437 513T518 510V120Q553 113 573
103V24Q513 -8 422 -8Q397 10 395 42Z" />
<glyph unicode="v" glyph-name="v" horiz-adv-x="586" d="M348 -6H238L74 384Q24 400 7 423L17 500H247L257 423Q244 407 214 394L268 243Q286 196 294 150L296 136H310Q318 186 338 241L391 389Q354 403 339 423L349 500H569L579 423Q561 400 513 384L348 -6Z" />
<glyph unicode="w" glyph-name="w" horiz-adv-x="814" d="M498 -6L447 152Q431 200 422 272L419 296H405Q395 218 375 153L328 -6H186L60 387Q17 402 1 423L11 500H245L255 423Q237 402 194 387L252 132H266Q277 185 292 241L360 498H472L539 243L564 132H578Q615
301 628 359L634 387Q589 403 574 423L584 500H806L816 423Q799 400 753 385L628 -6H498Z" />
<glyph unicode="x" glyph-name="x" horiz-adv-x="554" d="M294 304Q301 331 323 366L341 394Q312 407 300 423L310 500H530L540 423Q520 396 459 380L371 257L465 118Q520 103 541 77L531 0H301L291 77Q301 90 328 103L303 144Q286 172 277 203L274 213H260Q251
178 231 146L207 108Q241 93 253 77L243 0H23L13 77Q32 102 88 118L183 257L95 380Q35 396 14 423L24 500H254L264 423Q250 407 230 398L251 368Q271 338 280 304H294Z" />
<glyph unicode="y" glyph-name="y" horiz-adv-x="568" d="M161 -116Q179 -116 199 -83T228 -3L64 385Q15 401 -2 423L8 500H238L248 423Q235 407 204 394L259 243Q277 196 284 150L287 136H301Q309 186 329 241L382 389Q345 403 330 423L340 500H560L570 423Q552
400 504 384L339 -6Q292 -117 267 -149Q223 -208 145 -208T25 -167Q24 -157 24 -147Q24 -92 47 -43H130Q145 -70 147 -116H161Z" />
<glyph unicode="z" glyph-name="z" horiz-adv-x="479" d="M42 358Q31 408 31 444T32 500H437L447 416L252 167Q225 131 193 105L198 94Q227 103 279 103H334Q349 139 367 156L444 146Q455 96 455 58T454 0H31L21 82L217 334Q244 370 276 396L271 407Q242 398 190
398H151Q136 364 119 348L42 358Z" />
<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="430" d="M2 211V308Q76 308 118 334T160 414Q160 438 151 492T142 572Q142 647 183 687T283 728Q370 728 414 700L404 620Q375 608 325 608Q287 608 287 532Q287 505 294 464T301 402Q301 342 268 307T189
264V256Q234 249 267 213T301 117Q301 97 294 56T287 -13Q287 -89 325 -89Q375 -89 404 -101L414 -181Q370 -209 283 -209Q224 -209 183 -169T142 -53Q142 -28 151 26T160 105Q160 158 118 184T2 211Z" />
<glyph unicode="|" glyph-name="bar" horiz-adv-x="231" d="M166 626V-190L100 -200Q65 -165 65 -106V710L131 720Q166 686 166 626Z" />
<glyph unicode="}" glyph-name="braceright" horiz-adv-x="430" d="M428 308V211Q354 211 312 185T270 105Q270 81 279 27T288 -53Q288 -128 247 -168T147 -209Q60 -209 16 -181L26 -101Q55 -89 105 -89Q143 -89 143 -13Q143 14 136 55T129 117Q129 177 162 213T241
256V264Q196 271 163 306T129 402Q129 422 136 463T143 532Q143 608 105 608Q55 608 26 620L16 700Q60 728 147 728Q206 728 247 688T288 572Q288 547 279 493T270 414Q270 361 312 335T428 308Z" />
<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="602" d="M105 338T132 346T194 354T288 332T386 309T458 318T509 338L526 348L573 281Q565 272 550 259T487 224T396 202T291 224T198 247Q138 247 90 222L74 213L30 279Q36 288 54 303T88 328Z" />
<glyph unicode="&#xa0;" glyph-name="uni00A0" horiz-adv-x="225" />
<glyph unicode="&#xa1;" glyph-name="exclamdown" horiz-adv-x="278" d="M61 168Q61 355 94 488H184Q216 358 216 180Q216 96 209 0H67Q61 89 61 168ZM218 700T218 626T139 552T59 626T138 700Z" />
<glyph unicode="&#xa2;" glyph-name="cent" horiz-adv-x="459" d="M320 -160Q320 -168 320 -177H200Q199 -164 199 -152Q199 -81 223 -7Q116 -3 71 54T26 239T77 428T211 504Q186 584 186 657Q186 668 187 678H307Q307 670 307 661Q307 584 283 507Q365 504 424
472Q425 462 425 453Q425 396 399 345H311Q297 370 294 405Q282 406 262 406Q211 406 191 366T170 246T195 133T268 99Q339 99 401 119L433 42Q381 9 296 -4Q320 -82 320 -160Z" />
<glyph unicode="&#xa3;" glyph-name="sterling" horiz-adv-x="538" d="M277 327H235V109H393Q406 161 430 183L504 174V0H46L36 83Q49 100 91 116V327H47L37 391Q56 412 91 421V462Q91 608 166 656Q203 680 240 689T327 698Q425 698 489 662Q490 652 490 643Q490
586 464 535H376Q362 560 359 595Q347 596 327 596Q276 596 256 568T235 468V426H357L367 362Q337 327 277 327Z" />
<glyph unicode="&#xa4;" glyph-name="currency" horiz-adv-x="630" d="M107 200Q79 255 79 340T110 481L38 553L73 603Q76 603 79 603Q119 603 155 567L174 548Q232 583 318 583T457 554L527 624L578 589Q578 586 578 583Q578 543 542 507L524 489Q554 435 554
348T521 203L594 131L559 80Q558 80 557 80Q515 80 477 117L458 135Q400 99 313 99T171 132L103 64L52 99Q50 143 88 181L107 200ZM174 345Q174 259 214 220T316 181Q460 181 460 341T315 502Q174 502 174 345Z" />
<glyph unicode="&#xa5;" glyph-name="yen" horiz-adv-x="623" d="M451 155H385V116Q425 100 440 83L430 0H196L186 83Q199 100 241 116V155H95L85 207Q116 242 175 242H241V290H95L85 342Q116 377 175 377H195L95 568Q44 583 25 607L35 690H188L264 528Q299 449
309 412L313 397H328Q338 452 376 528L452 690H588L598 607Q580 583 526 567L429 377H531L541 325Q511 290 451 290H385V242H531L541 190Q511 155 451 155Z" />
<glyph unicode="&#xa6;" glyph-name="brokenbar" horiz-adv-x="231" d="M65 -106V157H166V-190L100 -200Q65 -165 65 -106ZM166 626V380H65V710L131 720Q166 686 166 626Z" />
<glyph unicode="&#xa7;" glyph-name="section" horiz-adv-x="486" d="M240 614Q174 614 174 577Q174 543 243 526L322 506Q444 476 444 374Q444 300 388 257Q445 222 445 152T393 37T225 -8T47 22Q46 32 46 42Q46 94 68 135H151Q165 108 168 88Q189 83 225 83Q313
83 313 130Q313 145 301 155T254 174L175 195Q114 211 80 242T46 339T109 442Q45 481 45 550T98 659T250 698T416 671Q417 661 417 652Q417 603 395 562H313Q300 583 296 607Q268 614 240 614ZM312 352Q312 365 284 376Q257 387 201 406Q175 387 175 354Q175 342
184 336T199 327T216 319T235 312Q267 302 279 298Q312 318 312 352Z" />
<glyph unicode="&#xa8;" glyph-name="dieresis" horiz-adv-x="548" d="M79 699Q79 775 160 775T242 700T160 624Q120 624 100 641T79 699ZM319 699Q319 775 400 775T482 700T400 624Q360 624 340 641T319 699Z" />
<glyph unicode="&#xa9;" glyph-name="copyright" horiz-adv-x="766" d="M532 499Q532 454 514 418H442Q430 435 428 465Q411 473 387 473Q314 473 314 348Q314 278 332 249T387 220Q450 220 509 240L534 185Q466 146 376 146T245 191T204 340T253 493T383 542T532
505Q532 502 532 499ZM37 345Q37 522 127 610T389 698T645 614T729 354T638 85T375 -8Q37 -8 37 345ZM141 208T208 144T382 80Q625 80 625 345T381 610Q277 610 212 558Q141 502 141 355Z" />
<glyph unicode="&#xaa;" glyph-name="ordfeminine" horiz-adv-x="421" d="M50 646Q50 655 51 664Q79 680 124 691T210 702Q283 702 317 675T351 579V412Q379 406 392 400V339Q349 315 278 315Q263 320 251 338Q209 315 153 315T64 341T31 420Q31 486 76 509T228
532Q237 532 246 532V566Q246 600 234 613T193 626T145 620Q142 591 132 573H66Q50 604 50 646ZM140 427Q140 392 176 392T246 409V463Q177 463 159 457T140 427Z" />
<glyph unicode="&#xab;" glyph-name="guillemotleft" horiz-adv-x="538" d="M457 457L504 422Q495 390 467 341T403 247Q482 149 504 73L457 38Q416 55 352 121T254 247Q288 306 352 372T457 457ZM227 457L274 422Q265 390 237 341T173 247Q252 149 274 73L227
38Q186 55 122 121T24 247Q58 306 122 372T227 457Z" />
<glyph unicode="&#xac;" glyph-name="logicalnot" horiz-adv-x="635" d="M468 401H113Q86 401 64 409T32 427L23 436L33 500H567V233Q567 207 559 185T541 152L532 143L468 153V401Z" />
<glyph unicode="&#xad;" glyph-name="uni00AD" horiz-adv-x="421" d="M286 220H56L46 284Q77 319 136 319H366L376 255Q346 220 286 220Z" />
<glyph unicode="&#xae;" glyph-name="registered" horiz-adv-x="766" d="M371 537Q452 537 492 513T533 427T459 332V327Q481 316 491 298L527 230Q549 225 564 210L559 164H453L387 296Q378 313 369 313H344V234Q380 227 394 211L389 164H220L214 212Q224 222
245 230V470Q222 480 214 489L220 537H371ZM367 472H344V379H366Q399 379 415 389T431 423Q431 472 367 472ZM37 345Q37 522 127 610T389 698T645 614T729 354T638 85T375 -8Q37 -8 37 345ZM141 208T208 144T382 80Q625 80 625 345T381 610Q277 610 212 558Q141
502 141 355Z" />
<glyph unicode="&#xaf;" glyph-name="overscore" horiz-adv-x="420" d="M292 585H50L40 645Q71 680 130 680H372L382 620Q352 585 292 585Z" />
<glyph unicode="&#xb0;" glyph-name="degree" horiz-adv-x="375" d="M30 560Q30 705 186 705Q259 705 302 670T345 561T302 452T187 417T72 451T30 560ZM260 637T187 637T114 562T187 487T260 562Z" />
<glyph unicode="&#xb1;" glyph-name="plusminus" horiz-adv-x="531" d="M316 425V374H484L494 312Q464 277 404 277H316V148L246 138Q211 169 211 228V277H45L35 339Q66 374 125 374H211V505L281 515Q316 485 316 425ZM404 0H45L35 62Q66 97 125 97H484L494 35Q464
0 404 0Z" />
<glyph unicode="&#xb2;" glyph-name="twosuperior" horiz-adv-x="402" d="M236 601Q236 628 197 628T142 622Q138 591 123 572L66 576Q47 607 47 652Q47 660 48 668Q74 684 121 694T208 705Q351 705 351 604Q351 560 300 516L205 432Q189 418 163 407L166 401Q196
407 221 407H267Q278 438 287 451L351 446Q362 408 362 379T357 327H54L34 408L195 549Q200 554 210 563T226 578Q236 588 236 601Z" />
<glyph unicode="&#xb3;" glyph-name="threesuperior" horiz-adv-x="379" d="M223 593Q223 631 177 631L139 626Q137 603 126 582L65 583Q42 627 42 667Q42 675 43 683Q106 705 191 705Q332 705 332 613Q332 588 318 566T279 532V527Q308 520 328 497T348 434Q348
375 298 345T165 315T34 340L56 408Q107 394 157 394Q239 394 239 440Q239 483 163 483L88 480L80 542L150 547Q181 549 202 560T223 593Z" />
<glyph unicode="&#xb4;" glyph-name="acute" horiz-adv-x="485" d="M238 569L184 600Q190 644 218 705T275 796L379 732Q365 692 322 644T238 569Z" />
<glyph unicode="&#xb5;" glyph-name="mu" horiz-adv-x="615" d="M88 -179Q88 -64 111 42Q79 85 79 198V389Q44 401 24 423L34 500Q90 513 138 513T219 510V185Q219 131 236 113T293 94Q353 94 396 132V389Q361 401 341 423L351 500Q407 513 455 513T536 510V122Q571
115 591 105V24Q531 -8 439 -8Q414 10 412 42Q389 22 348 7T270 -8T205 -4Q221 -103 221 -145T220 -200Q194 -214 151 -214T88 -200Q88 -190 88 -179Z" />
<glyph unicode="&#xb6;" glyph-name="paragraph" horiz-adv-x="579" d="M184 -101Q221 -114 270 -114T339 -86T359 -7V690H544L554 607Q538 588 499 573V7Q499 -110 435 -159T270 -208Q210 -208 149 -195T55 -161Q55 -154 55 -147Q55 -97 80 -45H168Q179 -66 184
-101ZM267 690H308V271H241Q134 271 81 318T27 477Q27 607 96 651Q131 673 171 681T267 690Z" />
<glyph unicode="&#xb7;" glyph-name="middot" horiz-adv-x="248" d="M41 200T41 275T124 351T208 276T125 200Z" />
<glyph unicode="&#xb8;" glyph-name="cedilla" horiz-adv-x="225" d="M46 -54Q46 -22 63 7H142Q130 -14 130 -35Q195 -42 195 -111Q195 -206 46 -217L30 -163Q63 -151 76 -141T89 -112T77 -83T47 -72Q46 -63 46 -54Z" />
<glyph unicode="&#xb9;" glyph-name="onesuperior" horiz-adv-x="252" d="M158 701Q172 701 187 700V412Q210 402 217 389L212 327H49L41 389Q55 405 82 416V603Q55 608 42 615V678Q98 701 158 701Z" />
<glyph unicode="&#xba;" glyph-name="ordmasculine" horiz-adv-x="422" d="M117 315T74 362T31 505T79 651T216 702T349 657T392 516T344 368T206 315ZM140 511Q140 391 212 391T284 508T210 625Q174 625 157 599T140 511Z" />
<glyph unicode="&#xbb;" glyph-name="guillemotright" horiz-adv-x="538" d="M34 422L81 457Q122 439 186 373T284 247Q250 188 186 122T81 38L34 73Q56 149 135 247Q100 291 72 340T34 422ZM264 422L311 457Q352 439 416 373T514 247Q480 188 416 122T311 38L264
73Q286 149 365 247Q330 291 302 340T264 422Z" />
<glyph unicode="&#xbc;" glyph-name="onequarter" horiz-adv-x="718" d="M130 -1Q125 14 125 38T144 98L474 720L537 698Q542 682 542 658T523 598L193 -23L130 -1ZM500 173H553V226Q553 284 586 333L662 326V173H690V99H662V84Q682 76 692 62L684 0H519L510 60Q524
78 553 84V99H351L332 146L402 282Q435 346 486 374L538 340L477 210Q469 190 451 172L454 166Q476 173 500 173ZM27 678Q81 702 161 702Q177 702 191 700V416Q218 405 232 389L224 327H53L45 389Q59 405 86 416V603Q52 607 27 615V678Z" />
<glyph unicode="&#xbd;" glyph-name="onehalf" horiz-adv-x="765" d="M520 295Q516 264 501 245L444 249Q425 280 425 325Q425 333 426 341Q452 357 499 367T586 378Q729 378 729 277Q729 233 678 189L583 105Q567 91 541 80L544 74L599 80H645Q656 111 665 124L729
119Q740 81 740 52T735 0H432L412 81L573 222Q578 227 596 242Q614 258 614 274Q614 301 575 301T520 295ZM131 -1Q126 14 126 38T145 98L475 720L538 698Q543 682 543 658T524 598L194 -23L131 -1ZM26 678Q80 702 160 702Q176 702 190 700V416Q217 405 231 389L223
327H52L44 389Q58 405 85 416V603Q51 607 26 615V678Z" />
<glyph unicode="&#xbe;" glyph-name="threequarters" horiz-adv-x="786" d="M202 -1Q197 14 197 38T216 98L546 720L609 698Q614 682 614 658T595 598L265 -23L202 -1ZM568 173H621V226Q621 284 654 333L730 326V173H758V99H730V84Q750 76 760 62L752 0H587L578
60Q592 78 621 84V99H419L400 146L470 282Q503 346 554 374L606 340L545 210Q537 190 519 172L522 166Q544 173 568 173ZM155 483Q134 483 80 480L72 542L142 547Q173 549 194 560T215 593Q215 631 169 631Q149 631 131 626Q129 603 118 582L57 583Q34 627 34 667Q34
675 35 683Q98 705 183 705Q324 705 324 613Q324 588 310 566T271 532V527Q300 520 320 497T340 434V433Q340 396 321 371T269 334Q214 315 158 315Q73 315 26 340L48 408Q99 394 149 394Q231 394 231 440Q231 483 155 483Z" />
<glyph unicode="&#xbf;" glyph-name="questiondown" horiz-adv-x="530" d="M363 497Q373 464 373 443T365 399T327 346T264 294T206 242T181 176Q181 101 283 101Q325 101 363 117Q366 169 382 200H477Q490 174 497 134T504 76T504 53Q461 24 399 8T278 -8Q167
-8 96 42T25 187Q25 228 42 262T85 318T140 362T195 402Q248 438 248 488Q248 492 247 497H363ZM391 698T391 623T308 547T224 622T307 698Z" />
<glyph unicode="&#xc0;" glyph-name="Agrave" horiz-adv-x="645" d="M379 787L325 756Q283 782 244 825T191 908L295 972Q324 943 348 887T379 787ZM390 695L589 118Q631 103 648 83L638 0H404L394 83Q406 99 442 113L415 197H215L190 116Q225 102 242 83L232
0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc1;" glyph-name="Aacute" horiz-adv-x="645" d="M263 787Q269 831 293 887T347 972L451 908Q437 869 398 826T317 756Q263 785 263 787ZM390 695L589 118Q631 103 648 83L638 0H404L394 83Q406 99 442 113L415 197H215L190 116Q225 102 242
83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc2;" glyph-name="Acircumflex" horiz-adv-x="645" d="M486 797L450 756Q404 769 326 836Q248 769 202 756L166 797Q179 832 230 886T326 971Q371 941 422 887T486 797ZM390 695L589 118Q631 103 648 83L638 0H404L394 83Q406 99 442 113L415
197H215L190 116Q225 102 242 83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc3;" glyph-name="Atilde" horiz-adv-x="645" d="M139 865T170 883T235 901T314 887T390 873Q446 873 482 894L494 901L534 838Q530 832 513 817T480 793Q438 769 401 769T317 783T244 797Q197 797 164 777L153 770L115 836Q120 843 129 854ZM390
695L589 118Q631 103 648 83L638 0H404L394 83Q406 99 442 113L415 197H215L190 116Q225 102 242 83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc4;" glyph-name="Adieresis" horiz-adv-x="645" d="M126 818Q126 894 207 894T289 819T207 743Q167 743 147 760T126 818ZM366 818Q366 894 447 894T529 819T447 743Q407 743 387 760T366 818ZM390 695L589 118Q631 103 648 83L638 0H404L394
83Q406 99 442 113L415 197H215L190 116Q225 102 242 83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc5;" glyph-name="Aring" horiz-adv-x="645" d="M262 736T231 760T199 843T231 926T321 951Q446 951 446 842Q446 736 321 736Q262 736 231 760ZM264 843Q264 792 322 792T381 843Q381 896 323 896T264 843ZM390 695L589 118Q631 103 648 83L638
0H404L394 83Q406 99 442 113L415 197H215L190 116Q225 102 242 83L232 0H4L-6 83Q12 106 61 121L253 695H390ZM307 555Q307 494 282 413L243 289H386L348 411Q325 481 322 538L321 555H307Z" />
<glyph unicode="&#xc6;" glyph-name="AE" horiz-adv-x="906" d="M865 690V516L791 507Q768 527 754 581H598V405H737Q746 433 762 447L825 440V264L762 256Q747 268 737 298H598V109H762Q775 161 799 183L873 174V0H409L399 83Q412 100 454 116V220H248L185 112Q217
98 230 83L220 0H-8L-18 83Q-2 103 43 119L398 690H865ZM454 319V584H445Q427 525 384 452L306 319H454Z" />
<glyph unicode="&#xc7;" glyph-name="Ccedilla" horiz-adv-x="570" d="M261 -72Q260 -64 260 -48T269 -7Q144 0 87 81T30 342T108 610T329 698Q443 698 546 635Q546 629 546 612T539 554T519 487H424Q410 514 404 572Q374 585 314 585T217 533T180 351T215 167T321
112Q428 112 513 144L549 55Q462 3 350 -5Q344 -20 344 -35Q409 -42 409 -111Q409 -206 260 -217L244 -163Q277 -151 290 -141T303 -112T291 -83T261 -72Z" />
<glyph unicode="&#xc8;" glyph-name="Egrave" horiz-adv-x="539" d="M340 787L286 756Q244 782 205 825T152 908L256 972Q285 943 309 887T340 787ZM506 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H498V516L424 507Q401 527 387 581H231V409H370Q382
439 395 451L458 444V266L395 258Q382 268 370 300H231V109H395Q408 161 432 183L506 174V0Z" />
<glyph unicode="&#xc9;" glyph-name="Eacute" horiz-adv-x="539" d="M266 756L212 787Q218 831 242 887T296 972L400 908Q386 869 347 826T266 756ZM506 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H498V516L424 507Q401 527 387 581H231V409H370Q382
439 395 451L458 444V266L395 258Q382 268 370 300H231V109H395Q408 161 432 183L506 174V0Z" />
<glyph unicode="&#xca;" glyph-name="Ecircumflex" horiz-adv-x="539" d="M440 797L404 756Q358 769 280 836Q202 769 156 756L120 797Q133 832 184 886T280 971Q325 941 376 887T440 797ZM506 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H498V516L424
507Q401 527 387 581H231V409H370Q382 439 395 451L458 444V266L395 258Q382 268 370 300H231V109H395Q408 161 432 183L506 174V0Z" />
<glyph unicode="&#xcb;" glyph-name="Edieresis" horiz-adv-x="539" d="M74 818Q74 894 155 894T237 819T155 743Q115 743 95 760T74 818ZM314 818Q314 894 395 894T477 819T395 743Q355 743 335 760T314 818ZM506 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42
690H498V516L424 507Q401 527 387 581H231V409H370Q382 439 395 451L458 444V266L395 258Q382 268 370 300H231V109H395Q408 161 432 183L506 174V0Z" />
<glyph unicode="&#xcc;" glyph-name="Igrave" horiz-adv-x="318" d="M235 787L181 756Q139 782 100 825T47 908L151 972Q180 943 204 887T235 787ZM276 690L286 607Q270 588 231 573V116Q271 100 286 83L276 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="&#xcd;" glyph-name="Iacute" horiz-adv-x="318" d="M158 756L104 787Q110 831 134 887T188 972L292 908Q278 869 239 826T158 756ZM276 690L286 607Q270 588 231 573V116Q271 100 286 83L276 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="&#xce;" glyph-name="Icircumflex" horiz-adv-x="318" d="M321 797L285 756Q239 769 161 836Q83 769 37 756L1 797Q14 832 65 886T161 971Q206 941 257 887T321 797ZM276 690L286 607Q270 588 231 573V116Q271 100 286 83L276 0H42L32 83Q45 100
87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="&#xcf;" glyph-name="Idieresis" horiz-adv-x="318" d="M-27 818Q-27 894 54 894T136 819T54 743Q14 743 -6 760T-27 818ZM193 818Q193 894 274 894T356 819T274 743Q234 743 214 760T193 818ZM276 690L286 607Q270 588 231 573V116Q271 100 286
83L276 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H276Z" />
<glyph unicode="&#xd0;" glyph-name="Eth" horiz-adv-x="659" d="M313 0H58L48 83Q61 100 103 116V316H23L13 380Q44 415 103 415V573Q62 588 48 607L58 690H281Q442 690 536 600T631 336T546 81T313 0ZM247 109H319Q394 109 437 154T481 331Q481 581 292 581H247V415H397L407
351Q377 316 317 316H247V109Z" />
<glyph unicode="&#xd1;" glyph-name="Ntilde" horiz-adv-x="676" d="M155 865T186 883T251 901T330 887T406 873Q462 873 498 894L510 901L550 838Q546 832 529 817T496 793Q454 769 417 769T333 783T260 797Q213 797 180 777L169 770L131 836Q136 843 145 854ZM193
377V114Q230 100 248 77L238 0H42L32 77Q50 100 87 114V576Q46 591 30 613L40 690H246L445 302Q467 260 488 190L495 166L506 170Q492 257 492 316V575Q456 589 437 613L447 690H643L653 613Q634 589 598 575V0H441L240 391Q218 433 197 504L190 527L179 523Q193
436 193 377Z" />
<glyph unicode="&#xd2;" glyph-name="Ograve" horiz-adv-x="643" d="M390 787L336 756Q294 782 255 825T202 908L306 972Q335 943 359 887T390 787ZM171 -8T101 74T30 339T107 610T328 698T542 620T613 359T534 84T313 -8ZM180 481T180 352T218 164T322 105T426
160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="&#xd3;" glyph-name="Oacute" horiz-adv-x="643" d="M300 756L246 787Q252 831 276 887T330 972L434 908Q420 869 381 826T300 756ZM171 -8T101 74T30 339T107 610T328 698T542 620T613 359T534 84T313 -8ZM180 481T180 352T218 164T322 105T426
160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="&#xd4;" glyph-name="Ocircumflex" horiz-adv-x="643" d="M482 797L446 756Q400 769 322 836Q244 769 198 756L162 797Q175 832 226 886T322 971Q367 941 418 887T482 797ZM171 -8T101 74T30 339T107 610T328 698T542 620T613 359T534 84T313 -8ZM180
481T180 352T218 164T322 105T426 160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="&#xd5;" glyph-name="Otilde" horiz-adv-x="643" d="M138 865T169 883T234 901T313 887T388 873Q445 873 481 894L493 901L533 838Q529 832 512 817T478 793Q437 769 400 769T316 783T243 797Q196 797 164 777L152 770L114 836Q119 843 128 854ZM171
-8T101 74T30 339T107 610T328 698T542 620T613 359T534 84T313 -8ZM180 481T180 352T218 164T322 105T426 160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="&#xd6;" glyph-name="Odieresis" horiz-adv-x="643" d="M128 818Q128 894 209 894T291 819T209 743Q169 743 149 760T128 818ZM368 818Q368 894 449 894T531 819T449 743Q409 743 389 760T368 818ZM171 -8T101 74T30 339T107 610T328 698T542 620T613
359T534 84T313 -8ZM180 481T180 352T218 164T322 105T426 160T463 345Q463 585 319 585Q252 585 216 533Z" />
<glyph unicode="&#xd7;" glyph-name="multiply" horiz-adv-x="543" d="M477 55Q432 55 393 94L271 215L96 39L42 76Q40 123 81 164L201 285L26 460L63 514Q66 514 69 514Q112 514 151 475L271 355L447 531L501 494Q501 491 501 488Q501 445 462 406L341 285L518
109L481 55Q479 55 477 55Z" />
<glyph unicode="&#xd8;" glyph-name="Oslash" horiz-adv-x="663" d="M54 343Q54 698 337 698Q487 698 548 616L631 696L666 672Q666 623 623 581L584 544Q609 467 609 356Q609 174 536 83T319 -8T111 83L32 6L-4 30Q-3 80 39 121L76 157Q54 229 54 343ZM459 345Q459
385 456 418L223 192Q252 105 331 105Q397 105 428 159T459 345ZM204 352Q204 325 206 283L437 508Q408 585 329 585Q264 585 234 535T204 352Z" />
<glyph unicode="&#xd9;" glyph-name="Ugrave" horiz-adv-x="634" d="M384 787L330 756Q288 782 249 825T196 908L300 972Q329 943 353 887T384 787ZM563 119T504 56T311 -8T125 54T71 250V573Q33 587 16 607L26 690H260L270 607Q254 588 215 573V246Q215 174 238
140T323 105T409 140T434 246V573Q393 588 379 607L389 690H608L618 607Q602 588 563 573V250Q563 119 504 56Z" />
<glyph unicode="&#xda;" glyph-name="Uacute" horiz-adv-x="634" d="M254 787Q260 831 284 887T338 972L442 908Q428 869 389 826T308 756Q254 785 254 787ZM563 119T504 56T311 -8T125 54T71 250V573Q33 587 16 607L26 690H260L270 607Q254 588 215 573V246Q215
174 238 140T323 105T409 140T434 246V573Q393 588 379 607L389 690H608L618 607Q602 588 563 573V250Q563 119 504 56Z" />
<glyph unicode="&#xdb;" glyph-name="Ucircumflex" horiz-adv-x="634" d="M482 797L446 756Q400 769 322 836Q244 769 198 756L162 797Q175 832 226 886T322 971Q367 941 418 887T482 797ZM563 119T504 56T311 -8T125 54T71 250V573Q33 587 16 607L26 690H260L270
607Q254 588 215 573V246Q215 174 238 140T323 105T409 140T434 246V573Q393 588 379 607L389 690H608L618 607Q602 588 563 573V250Q563 119 504 56Z" />
<glyph unicode="&#xdc;" glyph-name="Udieresis" horiz-adv-x="634" d="M123 818Q123 894 204 894T286 819T204 743Q164 743 144 760T123 818ZM363 818Q363 894 444 894T526 819T444 743Q404 743 384 760T363 818ZM563 119T504 56T311 -8T125 54T71 250V573Q33
587 16 607L26 690H260L270 607Q254 588 215 573V246Q215 174 238 140T323 105T409 140T434 246V573Q393 588 379 607L389 690H608L618 607Q602 588 563 573V250Q563 119 504 56Z" />
<glyph unicode="&#xdd;" glyph-name="Yacute" horiz-adv-x="588" d="M288 756L234 787Q240 831 264 887T318 972L422 908Q408 869 369 826T288 756ZM412 0H178L168 83Q181 100 223 116V231L60 570Q13 586 -4 607L5 685V686L6 690H240L250 607Q238 590 204 577L238
500Q267 434 288 369L295 349H310Q331 422 365 500L397 573Q357 589 343 607L353 690H581L591 607Q571 584 525 569L367 231V116Q407 100 422 83L412 0Z" />
<glyph unicode="&#xde;" glyph-name="Thorn" horiz-adv-x="611" d="M231 536H331Q460 536 521 494T583 349Q583 158 321 158H231V122Q304 106 322 83L312 0H42L32 83Q45 100 87 116V573Q46 588 32 607L42 690H312L322 607Q303 583 231 567V536ZM291 435H231V259H298Q367
259 400 278T433 351Q433 406 390 422Q356 435 291 435Z" />
<glyph unicode="&#xdf;" glyph-name="germandbls" horiz-adv-x="575" d="M209 0H24L14 77Q28 96 69 111V519Q69 623 114 675T256 728T416 685T478 570Q478 511 412 424Q389 394 389 378T417 338T478 289T539 225T567 143Q567 71 516 32T377 -8Q315 -8 261 0L276
98Q307 89 349 89T413 101T435 137T408 186T348 232T288 285T260 350T275 407T309 453T342 502T358 560T336 607T277 626T225 605T209 529V0Z" />
<glyph unicode="&#xe0;" glyph-name="agrave" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224 407Q193
407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM313 600L259 569Q218 595 175 643T118 732L222 796Q251 767 279 706T313 600Z" />
<glyph unicode="&#xe1;" glyph-name="aacute" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224 407Q193
407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM223 569L169 600Q175 644 203 705T260 796L364 732Q350 692 307 644T223 569Z" />
<glyph unicode="&#xe2;" glyph-name="acircumflex" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224
407Q193 407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM427 610L391 569Q345 582 267 649Q189 582 143 569L107 610Q120 645 171 699T267 784Q312 754 363 700T427 610Z" />
<glyph unicode="&#xe3;" glyph-name="atilde" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224 407Q193
407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM68 678T99 696T164 714T243 700T318 686Q375 686 411 707L423 714L463 651Q459 645 442 630T408 606Q367 582 330 582T246 596T173 610Q130
610 94 590L82 583L44 649Q49 656 58 667Z" />
<glyph unicode="&#xe4;" glyph-name="adieresis" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224
407Q193 407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM47 699Q47 775 128 775T210 700T128 624Q88 624 68 641T47 699ZM287 699Q287 775 368 775T450 700T368 624Q328 624 308 641T287
699Z" />
<glyph unicode="&#xe5;" glyph-name="aring" horiz-adv-x="512" d="M46 426Q46 441 47 458Q140 508 247 508T400 468T447 333V120Q482 113 502 103V16Q451 -8 356 -8Q346 18 339 55Q296 -8 183 -8Q116 -8 69 31T21 137T65 242T198 281H307V329Q307 407 224 407Q193
407 173 401Q171 359 161 336H63Q46 371 46 426ZM226 94Q277 94 307 124V206H237Q165 206 165 151Q165 126 180 110T226 94ZM192 581T161 605T129 688T161 771T251 796Q376 796 376 687Q376 581 251 581Q192 581 161 605ZM194 688Q194 637 252 637T311 688Q311
741 253 741T194 688Z" />
<glyph unicode="&#xe6;" glyph-name="ae" horiz-adv-x="767" d="M47 435Q47 446 48 458Q87 479 147 493T260 508Q357 508 403 466Q463 508 554 508T692 463T739 290V266Q739 245 728 233T697 220H453Q462 99 558 99Q635 99 701 125L735 52Q654 -8 541 -8T369 50Q293
-8 175 -8Q110 -8 66 27T22 132Q22 219 82 246T287 274Q297 274 308 274V296Q308 361 289 384T225 407Q200 407 173 399Q170 362 156 336H68Q47 378 47 435ZM166 142Q166 95 216 95T308 118V192Q300 192 292 192Q216 192 191 183T166 142ZM548 406Q468 406 456
303L601 312Q601 406 548 406Z" />
<glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="451" d="M262 406Q170 406 170 248Q170 168 195 137T269 105Q345 105 403 119L433 42Q372 4 275 -6Q270 -23 270 -35Q335 -42 335 -111Q335 -206 186 -217L170 -163Q203 -151 216 -141T229 -112T217
-83T187 -72Q185 -63 185 -46T197 -4Q26 20 26 242Q26 388 101 452Q168 508 264 508T424 472Q425 462 425 453Q425 396 399 345H311Q297 370 294 405Q282 406 262 406Z" />
<glyph unicode="&#xe8;" glyph-name="egrave" horiz-adv-x="483" d="M266 -8Q146 -8 86 56T25 242Q25 316 46 369T103 452Q173 508 266 508T408 461T458 290Q458 218 387 218H170Q174 155 202 129T293 103Q327 103 358 111T403 127L417 135L447 55Q441 48 430
38T372 10T266 -8ZM329 307Q331 321 331 341T315 383T260 406T199 382T171 301L329 307ZM322 600L268 569Q227 595 184 643T127 732L231 796Q260 767 288 706T322 600Z" />
<glyph unicode="&#xe9;" glyph-name="eacute" horiz-adv-x="483" d="M266 -8Q146 -8 86 56T25 242Q25 316 46 369T103 452Q173 508 266 508T408 461T458 290Q458 218 387 218H170Q174 155 202 129T293 103Q327 103 358 111T403 127L417 135L447 55Q441 48 430
38T372 10T266 -8ZM329 307Q331 321 331 341T315 383T260 406T199 382T171 301L329 307ZM267 569L213 600Q219 644 247 705T304 796L408 732Q394 692 351 644T267 569Z" />
<glyph unicode="&#xea;" glyph-name="ecircumflex" horiz-adv-x="483" d="M266 -8Q146 -8 86 56T25 242Q25 316 46 369T103 452Q173 508 266 508T408 461T458 290Q458 218 387 218H170Q174 155 202 129T293 103Q327 103 358 111T403 127L417 135L447 55Q441 48
430 38T372 10T266 -8ZM329 307Q331 321 331 341T315 383T260 406T199 382T171 301L329 307ZM412 610L376 569Q330 582 252 649Q174 582 128 569L92 610Q105 645 156 699T252 784Q297 754 348 700T412 610Z" />
<glyph unicode="&#xeb;" glyph-name="edieresis" horiz-adv-x="483" d="M266 -8Q146 -8 86 56T25 242Q25 316 46 369T103 452Q173 508 266 508T408 461T458 290Q458 218 387 218H170Q174 155 202 129T293 103Q327 103 358 111T403 127L417 135L447 55Q441 48 430
38T372 10T266 -8ZM329 307Q331 321 331 341T315 383T260 406T199 382T171 301L329 307ZM48 699Q48 775 129 775T211 700T129 624Q89 624 69 641T48 699ZM258 699Q258 775 339 775T421 700T339 624Q299 624 279 641T258 699Z" />
<glyph unicode="&#xec;" glyph-name="igrave" horiz-adv-x="292" d="M38 500Q94 513 142 513T223 510V111Q262 96 278 77L268 0H38L28 77Q42 96 83 111V389Q48 401 28 423L38 500ZM217 600L163 569Q122 595 79 643T22 732L126 796Q155 767 183 706T217 600Z" />
<glyph unicode="&#xed;" glyph-name="iacute" horiz-adv-x="292" d="M115 569L61 600Q67 644 95 705T152 796L256 732Q242 692 199 644T115 569ZM38 500Q94 513 142 513T223 510V111Q262 96 278 77L268 0H38L28 77Q42 96 83 111V389Q48 401 28 423L38 500Z" />
<glyph unicode="&#xee;" glyph-name="icircumflex" horiz-adv-x="292" d="M38 500Q94 513 142 513T223 510V111Q262 96 278 77L268 0H38L28 77Q42 96 83 111V389Q48 401 28 423L38 500ZM307 610L271 569Q225 582 147 649Q69 582 23 569L-13 610Q0 645 51 699T147
784Q192 754 243 700T307 610Z" />
<glyph unicode="&#xef;" glyph-name="idieresis" horiz-adv-x="292" d="M-27 699Q-27 771 50 771T128 700T50 628Q12 628 -7 644T-27 699ZM163 628T163 699T240 771T318 700T241 628ZM38 500Q94 513 142 513T223 510V111Q262 96 278 77L268 0H38L28 77Q42 96 83
111V389Q48 401 28 423L38 500Z" />
<glyph unicode="&#xf0;" glyph-name="eth" horiz-adv-x="525" d="M497 286Q497 156 437 74T271 -8Q145 -8 86 45T27 214T85 394T237 458Q291 458 337 441Q324 492 299 533L255 494L201 530Q203 562 232 587L247 600Q241 607 198 644L265 728Q298 708 335 678L384
722L438 686Q437 655 407 629L394 617Q497 487 497 286ZM353 292Q353 311 351 343Q314 360 255 360Q171 360 171 231Q171 162 192 125T264 88T334 138T353 292Z" />
<glyph unicode="&#xf1;" glyph-name="ntilde" horiz-adv-x="595" d="M36 500Q91 512 135 512T208 510V460Q233 481 274 494T354 508Q452 508 491 462T531 303V111Q570 96 586 77L576 0H346L336 77Q350 96 391 111V309Q391 363 374 381T311 400T221 368V111Q260
96 276 77L266 0H36L26 77Q40 96 81 111V389Q46 401 26 423L36 500ZM105 678T136 696T201 714T280 700T356 686Q412 686 448 707L460 714L500 651Q496 645 479 630T446 606Q404 582 367 582T283 596T210 610Q167 610 130 590L119 583L81 649Q86 656 95 667Z" />
<glyph unicode="&#xf2;" glyph-name="ograve" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254ZM325 600L271 569Q230 595
187 643T130 732L234 796Q263 767 291 706T325 600Z" />
<glyph unicode="&#xf3;" glyph-name="oacute" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254ZM216 600Q222 644 250 705T307
796L411 732Q397 692 354 644T270 569Q216 598 216 600Z" />
<glyph unicode="&#xf4;" glyph-name="ocircumflex" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254ZM425 610L389 569Q343
582 265 649Q187 582 141 569L105 610Q118 645 169 699T265 784Q310 754 361 700T425 610Z" />
<glyph unicode="&#xf5;" glyph-name="otilde" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254ZM78 678T109 696T174 714T253
700T328 686Q385 686 421 707L433 714L473 651Q469 645 452 630T418 606Q377 582 340 582T256 596T183 610Q140 610 104 590L92 583L54 649Q59 656 68 667Z" />
<glyph unicode="&#xf6;" glyph-name="odieresis" horiz-adv-x="530" d="M139 -8T82 55T25 245T88 440T271 508T447 448T505 261T441 63T258 -8ZM169 254Q169 94 265 94Q314 94 337 130T361 250Q361 406 263 406Q215 406 192 372T169 254ZM65 699Q65 775 146 775T228
700T146 624Q106 624 86 641T65 699ZM305 699Q305 775 386 775T468 700T386 624Q346 624 326 641T305 699Z" />
<glyph unicode="&#xf7;" glyph-name="divide" horiz-adv-x="509" d="M394 208H35L25 266Q56 301 115 301H474L484 243Q454 208 394 208ZM177 86Q177 158 254 158T332 86Q332 47 312 31T254 14T197 30T177 86ZM177 422Q177 495 254 495T332 422Q332 351 254 351Q216
351 197 367T177 422Z" />
<glyph unicode="&#xf8;" glyph-name="oslash" horiz-adv-x="563" d="M42 248Q42 373 105 440T280 508T447 464L534 549L569 525Q569 476 526 434L495 404Q522 347 522 258Q522 133 458 63T284 -8T117 37L31 -47L-5 -23Q-4 27 38 68L70 99Q42 155 42 248ZM378 250Q378
265 376 289L213 130Q236 94 283 94T354 130T378 250ZM186 254Q186 225 187 213L351 372Q327 406 280 406T209 372T186 254Z" />
<glyph unicode="&#xf9;" glyph-name="ugrave" horiz-adv-x="588" d="M395 42Q326 -8 233 -8T102 31T65 158V389Q30 401 10 423L20 500Q76 513 124 513T205 510V191Q205 137 221 120T287 102T378 134V389Q343 401 323 423L333 500Q389 513 437 513T518 510V120Q553
113 573 103V24Q513 -8 422 -8Q397 10 395 42ZM347 600L293 569Q252 595 209 643T152 732L256 796Q285 767 313 706T347 600Z" />
<glyph unicode="&#xfa;" glyph-name="uacute" horiz-adv-x="588" d="M395 42Q326 -8 233 -8T102 31T65 158V389Q30 401 10 423L20 500Q76 513 124 513T205 510V191Q205 137 221 120T287 102T378 134V389Q343 401 323 423L333 500Q389 513 437 513T518 510V120Q553
113 573 103V24Q513 -8 422 -8Q397 10 395 42ZM263 569L209 600Q215 644 243 705T300 796L404 732Q390 692 347 644T263 569Z" />
<glyph unicode="&#xfb;" glyph-name="ucircumflex" horiz-adv-x="588" d="M395 42Q326 -8 233 -8T102 31T65 158V389Q30 401 10 423L20 500Q76 513 124 513T205 510V191Q205 137 221 120T287 102T378 134V389Q343 401 323 423L333 500Q389 513 437 513T518 510V120Q553
113 573 103V24Q513 -8 422 -8Q397 10 395 42ZM454 610L418 569Q372 582 294 649Q216 582 170 569L134 610Q147 645 198 699T294 784Q339 754 390 700T454 610Z" />
<glyph unicode="&#xfc;" glyph-name="udieresis" horiz-adv-x="588" d="M395 42Q326 -8 233 -8T102 31T65 158V389Q30 401 10 423L20 500Q76 513 124 513T205 510V191Q205 137 221 120T287 102T378 134V389Q343 401 323 423L333 500Q389 513 437 513T518 510V120Q553
113 573 103V24Q513 -8 422 -8Q397 10 395 42ZM73 699Q73 775 154 775T236 700T154 624Q114 624 94 641T73 699ZM313 699Q313 775 394 775T476 700T394 624Q354 624 334 641T313 699Z" />
<glyph unicode="&#xfd;" glyph-name="yacute" horiz-adv-x="568" d="M161 -116Q179 -116 199 -83T228 -3L64 385Q15 401 -2 423L8 500H238L248 423Q235 407 204 394L259 243Q277 196 284 150L287 136H301Q309 186 329 241L382 389Q345 403 330 423L340 500H560L570
423Q552 400 504 384L339 -6Q292 -117 267 -149Q223 -208 145 -208T25 -167Q24 -157 24 -147Q24 -92 47 -43H130Q145 -70 147 -116H161ZM275 569L221 600Q227 644 255 705T312 796L416 732Q402 692 359 644T275 569Z" />
<glyph unicode="&#xfe;" glyph-name="thorn" horiz-adv-x="536" d="M5 710Q61 723 109 723T190 720V470Q213 486 247 497T309 508Q419 508 464 452T510 257T442 55T272 -8Q224 -8 190 1V-86Q249 -102 266 -123L256 -200H5L-5 -123Q8 -105 50 -89V599Q15 611 -5
633L5 710ZM270 94Q366 94 366 255Q366 341 350 373T292 406Q233 406 190 368V103Q226 94 270 94Z" />
<glyph unicode="&#xff;" glyph-name="ydieresis" horiz-adv-x="568" d="M161 -116Q179 -116 199 -83T228 -3L64 385Q15 401 -2 423L8 500H238L248 423Q235 407 204 394L259 243Q277 196 284 150L287 136H301Q309 186 329 241L382 389Q345 403 330 423L340 500H560L570
423Q552 400 504 384L339 -6Q292 -117 267 -149Q223 -208 145 -208T25 -167Q24 -157 24 -147Q24 -92 47 -43H130Q145 -70 147 -116H161ZM92 699Q92 775 173 775T255 700T173 624Q133 624 113 641T92 699ZM332 699Q332 775 413 775T495 700T413 624Q373 624 353
641T332 699Z" />
<glyph unicode="&#x2013;" glyph-name="endash" horiz-adv-x="528" d="M393 220H56L46 284Q77 319 136 319H473L483 255Q453 220 393 220Z" />
<glyph unicode="&#x2014;" glyph-name="emdash" horiz-adv-x="754" d="M619 220H56L46 284Q77 319 136 319H699L709 255Q679 220 619 220Z" />
<glyph unicode="&#x2018;" glyph-name="quoteleft" horiz-adv-x="233" d="M200 483Q200 407 115 407T30 483Q30 550 64 607T146 699L188 673Q155 618 155 565Q155 557 156 550Q175 544 187 526T200 483Z" />
<glyph unicode="&#x2019;" glyph-name="quoteright" horiz-adv-x="231" d="M34 623Q34 699 119 699T204 623Q204 556 170 499T88 407L46 433Q79 488 79 541Q79 549 78 556Q59 562 47 580T34 623Z" />
<glyph unicode="&#x201a;" glyph-name="quotesinglbase" horiz-adv-x="244" d="M36 65Q36 141 121 141T206 65Q206 -2 172 -59T90 -151L48 -125Q81 -70 81 -17Q81 -9 80 -2Q61 4 49 22T36 65Z" />
<glyph unicode="&#x201c;" glyph-name="quotedblleft" horiz-adv-x="450" d="M200 483Q200 407 115 407T30 483Q30 550 64 607T146 699L188 673Q155 618 155 565Q155 557 156 550Q175 544 187 526T200 483ZM417 483Q417 407 332 407T247 483Q247 550 281 607T363
699L405 673Q372 618 372 565Q372 557 373 550Q392 544 404 526T417 483Z" />
<glyph unicode="&#x201d;" glyph-name="quotedblright" horiz-adv-x="448" d="M251 623Q251 699 336 699T421 623Q421 556 387 499T305 407L263 433Q296 488 296 541Q296 549 295 556Q276 562 264 580T251 623ZM34 623Q34 699 119 699T204 623Q204 556 170 499T88
407L46 433Q79 488 79 541Q79 549 78 556Q59 562 47 580T34 623Z" />
<glyph unicode="&#x201e;" glyph-name="quotedblbase" horiz-adv-x="478" d="M270 65Q270 141 355 141T440 65Q440 -2 406 -59T324 -151L282 -125Q315 -70 315 -17Q315 -9 314 -2Q295 4 283 22T270 65ZM36 65Q36 141 121 141T206 65Q206 -2 172 -59T90 -151L48
-125Q81 -70 81 -17Q81 -9 80 -2Q61 4 49 22T36 65Z" />
<glyph unicode="&#x2022;" glyph-name="bullet" horiz-adv-x="361" d="M122 157T92 181T62 263T92 346T180 371Q299 371 299 263Q299 157 180 157Q122 157 92 181Z" />
<glyph unicode="&#x2039;" glyph-name="guilsinglleft" horiz-adv-x="308" d="M227 457L274 422Q265 390 237 341T173 247Q252 149 274 73L227 38Q186 55 122 121T24 247Q58 306 122 372T227 457Z" />
<glyph unicode="&#x203a;" glyph-name="guilsinglright" horiz-adv-x="308" d="M34 422L81 457Q122 439 186 373T284 247Q250 188 186 122T81 38L34 73Q56 149 135 247Q100 291 72 340T34 422Z" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
img/doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
img/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
img/loadingb.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

837
include/functions.php Normal file
View File

@ -0,0 +1,837 @@
<?php
/* this file stores all of the functions that are used
over all of the other files. */
ini_set("log_errors", 1);
$srv = $user_settings['instance'];
//$token = ($token != false ? msc($token,'d') : false);
$token = ($token != false ? $token : false);
/* the purpose of this function is to encode the auth token
it is not used for now */
function msc($string, $action = 'e') {
// you may change these values to your own
$secret_key = 'yAmfVhZwm0749FSY24dC';
$secret_iv = 'm37uvAeKjYLKdI1lPkcJ';
$output = false;
$encrypt_method = "AES-256-CBC";
$key = hash('sha256', $secret_key);
$iv = substr(hash('sha256', $secret_iv) , 0, 16);
if ($action == 'e') {
$output = base64_encode(openssl_encrypt($string, $encrypt_method, $key, 0, $iv));
}
else if ($action == 'd') {
$output = openssl_decrypt(base64_decode($string) , $encrypt_method, $key, 0, $iv);
}
return $output;
}
/* this function extracts the urls from a text and return them in an array */
function get_urls($input) {
$pattern = '$(https?://[a-z0-9_./?=&-~]+)(?![^<>]*>)$i';
if (preg_match_all($pattern, $input, $matches)) {
list($dummy, $links) = ($matches);
return $links;
}
return false;
}
/* this function replaces the emoji codes in a text with the correspondent emojis
of the specified instance, returns the html code with the emojis in the specified size*/
function emoji($text, $size = 30, $srv) {
$data = json_decode(file_get_contents("https://$srv/api/v1/custom_emojis") , true) [0]['url'];
$u = explode("/", $data);
array_pop($u);
$url = implode("/", $u);
$text = str_replace("http:", "http;", $text);
$text = str_replace("https:", "https;", $text);
$text = preg_replace('~:([a-z0-9_]+):~', "<img src='$url/$1.png' height=$size style='vertical-align: middle;'>", $text);
$text = str_replace("http;", "http:", $text);
$text = str_replace("https;", "https:", $text);
return $text;
}
/* this is the same as above but is used on other places, like user bios and places where the
shortcodes and the emoji url is defined in the same place */
function emojify($string, $emojis, $size = 40) {
foreach ($emojis as $emoji) {
$string = str_replace(":" . $emoji['shortcode'] . ":", "<img alt='" . $emoji['shortcode'] . "' title='" . $emoji['shortcode'] . "' src='" . $emoji['static_url'] . "' height=$size style='vertical-align: middle;'>", $string);
}
return $string;
}
/* this function fetches the context (the previous posts and replies) of a specified post
$post = ID of the post.
*/
function context($post) {
global $srv;
global $token;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$post/context");
if (!is_null($token)) {
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
/* this function just reduces an image to a 1x1 pixel image to get the overall color.
*/
function averageColor($url) {
@$image = imagecreatefromstring(file_get_contents($url));
if (!$image) {
$mainColor = "CCCCCC";
}
else {
$thumb = imagecreatetruecolor(1, 1);
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 1, 1, imagesx($image) , imagesy($image));
$mainColor = strtoupper(dechex(imagecolorat($thumb, 0, 0)));
}
return $mainColor;
}
/* this function fetches all the data from a profile (bio, username, relationships, etc) */
function user_info($user) {
global $user_settings;
$info = api_get("accounts/" . $user);
$rel = api_get("accounts/relationships?id=" . $user);
return array(
$info,
$rel
);
}
/* a function to make an authenticated general GET api call to the logged-in instance */
function api_get($url) {
global $srv;
global $token;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/" . $url);
if (!is_null($token)) {
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result, true);
}
/* a function to make an authenticated general POST api call to the logged-in instance */
function api_post($url, $array) {
global $srv;
global $token;
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_HEADER, false);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
if (!is_null($token)) {
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
}
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($cSession);
curl_close($cSession);
return json_decode($result, true);
}
/* a function to make general DELETE api calls to the logged-in instance*/
function api_delete($url, $array) {
global $srv;
global $token;
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_HEADER, false);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
curl_setopt($cSession, CURLOPT_CUSTOMREQUEST, "DELETE");
if (!is_null($token)) {
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
}
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($cSession);
curl_close($cSession);
return json_decode($result, true);
}
/* this function is used to generate the html code of a reply */
function render_reply($item) {
global $user_settings;
global $logedin;
global $srv;
$reply['mode'] = "";
if (isset($item['type']) && $item['type'] == 'ancestor') {
$reply['mode'] = "ancestor";
}
$reply['id'] = $item['id'];
$reply['uid'] = $item['account']['id'];
$reply['name'] = emojify($item['account']['display_name'], $item['account']['emojis'], 15);
$reply['acct'] = $item['account']['acct'];
$reply['avatar'] = $item['account']['avatar'];
$reply['menu'] = "<ul>";
if ($logedin) {
$reply['menu'] .= ($item['account']['id'] == $user_settings['uid'] ? "<li><a href='?action=delete&thread=" . $item['id'] . "' onClick='return false;' class='delete fontello' id='" . $item['id'] . "'>&#xe80e; Delete Post</a></li>" : "");
$reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&user=" . $item['account']['id'] . "' onClick='return false;' class='mute fontello' id='" . $item['account']['id'] . "' style='background-color:transparent;'>&#xe81b; Mute User</a></li>" : "");
$reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=nsfw&user=" . $item['account']['id'] . "' onClick='return false;' class='nsfw fontello' id='" . $item['account']['id'] . "' style='background-color:transparent;'>&#xe829; User is NSFW</a></li>" : "");
}
$reply['menu'] .= "<li><a target='_blank' href='" . $item['url'] . "' class='link fontello' style='background-color:transparent;'>&#xf14c; Original Note</a></li>";
$reply['menu'] .= "</ul>";
$json['id'] = $item['id'];
$json['scope'] = $item['visibility'];
if ($logedin) {
$json['mentions'] = "";
$array = $item["mentions"];
$json['mentions'] = ($user_settings['acct'] == $item["account"]['acct'] ? "" : "@" . $item["account"]['acct']) . " ";
if (!empty($array)) {
foreach ($array as $mnt) {
if ($mnt['acct'] != $user_settings['acct']) {
$json['mentions'] .= "@" . $mnt['acct'] . " ";
}
}
}
}
$reply['json'] = json_encode($json);
$reply['replyto'] = ($item['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $item['in_reply_to_id'] . "' href='?thread=" . $item['in_reply_to_id'] . "'>&#xf112;</a> " : "");
$reply['text'] = processText($item);
$public = "&#xe83c;";
$private = "&#xe819;";
$unlisted = "&#xe816;";
$direct = "&#xf0e0;";
$reply['date'] = "<a style='text-decoration:none;color:darkgray;' target='_blank' href='" . $item['url'] . "'><span class='fontello'>&#xe817;</span></a> - <a class='ldr' style='text-decoration:none;color:darkgray;' target='_blank' href='?thread=" . $item['id'] . "&instance=$srv" . "'>" . date("d/m/y H:i", strtotime($item['created_at'])) . "</a> - <span class='fontello' style='color:darkgray;'>" . $$item['visibility'] . "</span>";
$reply['media'] = "";
if (!empty($item['media_attachments'])) {
$reply['media'] = "<div style='width:170px; display:inline-block; float:left; margin-right:15px; '>";
$images = count($item['media_attachments']);
$class = ($images > 1 ? "class='icon'" : "");
foreach ($item['media_attachments'] as $file) {
$ext = explode(".", $file['url']);
$ext = end($ext);
$ext = explode("?", $ext) [0];
if ($ext == 'mp4' || $ext == 'webm') {
$reply['media'] .= "<div style='text-align:center; width:100%;'><video preload='metadata' width='100%' controls ".($user_settings['videoloop'] == "on" ? "loop" : "").">
<source src='" . $file['url'] . "' type='video/$ext'>
</video></div>
";
}
elseif ($ext == 'mp3' || $ext == 'ogg') {
$reply['media'] .= "<div style='text-align:center; width:100%;'><audio controls>
<source src='" . $file['url'] . "' type='audio/$ext'>
Your browser does not support the audio tag.
</audio> </div>";
}
else {
if ($item['sensitive'] == true && $user_settings['explicit'] != 'off') {
$reply['media'] .= "<div style='overflow:hidden; float:left; margin:2px;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='blur'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript><img " . "data-src='" . $file['url'] . "'" . " class='' style='max-width:100%; max-height:100% vertical-align:middle;'></a><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox' style='display:none;'><img src='" . $file['url'] . "' class='' style='width:100%;'></a></div>";
}
else {
$reply['media'] .= "<div style='margin:0px;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox'><img src='" . $file['url'] . "'" . " class='' style='max-width:100%; max-height:100%; vertical-align:middle;'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript></a></div>";
}
}
}
$reply['media'] .= "</div>";
}
$reply['buttons'] = "
" . ($logedin ? "<div class='felem'><a onClick='return false' class='replyform' href='?thread=" . $item['id'] . "' style='font-family:fontello'>&#xf112;</a></div>" : "") . "
<div class='felem'><a onClick='return false' " . ($logedin ? "class='" . ($item['favourited'] == true ? "unfav" : "fav") . "' href='?action=fav&thread=" . $item['id'] . "'" : "") . " style='font-family:fontello'>&#xe802; <span>" . $item['favourites_count'] . "</span></a></div>
<div class='felem'><a onClick='return false' " . ($logedin && $item['visibility'] == "public" ? "class='" . ($item['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=reblog&thread=" . $item['id'] . "'" : "") . " style='font-family:fontello'>&#xe83a; <span>" . $item['reblogs_count'] . "</span></a></div>
";
$result = themes("get","templates/reply.txt");
foreach ($reply as $key => $elem) {
$result = str_replace(":$key:", $elem, $result);
}
return $result;
}
/* a function to fav or unfav a specified post */
function favourite($post, $mode) {
$result = api_post(($mode == true ? "statuses/$post/favourite" : "statuses/$post/unfavourite"),array());
if (isset($result['favourites_count'])) {
return $result['favourites_count'];
}
else {
return "error";
}
}
/* a function to reblog or unreblog a specified post */
function reblog($post, $mode) {
$result = api_post(($mode == true ? "statuses/$post/reblog" : "statuses/$post/unreblog"),array());
if (isset($result['reblog']['reblogs_count'])) {
return $result['reblog']['reblogs_count'];
}
elseif (isset($result['reblogs_count'])) {
return $result['reblogs_count'];
}
else {
return "error";
}
}
/* function to delete a post */
function delpost($id) {
global $srv;
global $token;
if (!is_null($token)) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$id");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, true);
if (empty($result)) {
return "1";
}
else {
return "0";
}
}
}
/* function to send a new post to the logged in instance
it takes the media ids as an array */
function sendpost($text, $media, $reply, $markdown = false, $scope, $sensitive, $spoiler = false) {
global $srv;
global $token;
if (!is_null($token)) {
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/statuses");
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
$query = "";
$query .= "status=" . urlencode(html_entity_decode($text, ENT_QUOTES)) . "&visibility=" . $scope;;
if (!is_null($reply) && $reply != "null") {
$query .= "&in_reply_to_id=" . $reply;
}
if ($markdown == true) {
$query .= "&content_type=text/markdown";
}
if ($sensitive == 'true') {
$query .= "&sensitive=true";
}
if ($spoiler == true) {
$query .= "&spoiler_text=" . $spoiler;
}
if (!is_null($media)) {
foreach ($media as $mid) {
$query .= "&media_ids[]=" . $mid;
}
}
curl_setopt($cSession, CURLOPT_POSTFIELDS, $query);
$result = curl_exec($cSession);
curl_close($cSession);
return $result;
}
else {
return false;
}
}
/* uploads a file to the logged in instance.
the function takes the file from the local storage */
function uploadpic($file) {
global $srv;
global $token;
if (!is_null($token)) {
$mime = get_mime($file);
$info = pathinfo($file);
$name = $info['basename'];
$output = new CURLFile($file, $mime, $name);
do {
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/media");
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $token
));
curl_setopt($cSession, CURLOPT_POSTFIELDS, array(
'file' => $output
));
$result = curl_exec($cSession);
} while (empty($result));
curl_close($cSession);
$array = json_decode($result, true);
$ext = explode(".", $array['url']);
$ext = end($ext);
$ext = explode("?", $ext) [0];
if (in_array($ext, array(
'jpg',
'jpeg',
'gif',
'png',
'svg'
))) {
$file = $array['url'];
}
else {
$file = "img/doc.png";
}
return json_encode(array(
$array['id'],
$file
));
}
else {
return false;
}
}
/* this is used to register DashFE as an application on an instance
mostly used when logging in
*/
function register_app($instance) {
global $setting;
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, "https://$instance/api/v1/apps");
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_HEADER, false);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query(array(
'client_name' => $setting['appname'],
'redirect_uris' => $setting['url'],
'scopes' => 'read write follow'
)));
$result = curl_exec($cSession);
curl_close($cSession);
return json_decode($result, true);
}
/* This function will fetch and render all the notifications since an $id
or get a list of all past notification ($max notifications specified)
*/
function getnotif($id = false, $max = false) {
global $srv;
global $token;
global $user_settings;
$n = "";
$notif = api_get("notifications?" . ($id == false ? "limit=9&" : "") . ($id != false ? ($max == true ? "max_id=$id" : "since_id=$id") : ""));
if (!empty($notif)) {
foreach ($notif as $post) {
if (!isset($post["type"])){
break;
}
$user = "<a class='link ldr uname' style='font-size:12px;' href='?user=" . $post['account']['id'] . "'>" . emojify($post['account']['display_name'], $post['account']['emojis'], 10) . "</a>";
$preview = "";
$buttons = "";
$media = "";
if ($post["type"] == "pleroma:emoji_reaction"){
continue;
}
switch ($post["type"]) {
case "mention":
if ($post['status']['in_reply_to_id'] == null) {
$type = "<span class='fontello' style='color:#62C2CC; font-size:10px;'>&#xf10d;</span>";
$string = "mentioned you in a post";
$preview = "<a style='text-decoration:none;' class='ldr text' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; line-height:12px;'>" . emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) . "</span></a>";
$media = (!empty($post['status']['media_attachments']) ? "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div></a>" : "");
}
else {
$type = "<span class='fontello' style='color:#62C2CC; font-size:10px;'>&#xf112;</span>";
$string = "replied to your post";
$preview = "<a style='text-decoration:none;' class='ldr text' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; line-height:12px;'>" . emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) . "</span></a>";
$media = (!empty($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
}
$array = $post['status']["mentions"];
$mentions = ($user_settings['acct'] == $post['status']['account']['acct'] ? "" : "@" . $post['status']['account']['acct']) . " ";
if (!empty($array)) {
foreach ($array as $mnt) {
if ($mnt['acct'] != $user_settings['acct']) {
$mentions .= "@" . $mnt['acct'] . " ";
}
}
}
$buttons = "<div class='post_buttons' id='" . $post['status']['id'] . "' style='position:absolute; right:10px; bottom:10px; border-radius:60px; padding:5px;'>
<div class='felem'><a onClick='return false' class='quickreply' id='" . $post['status']['id'] . "' data-mentions='" . $mentions . "' href='?thread=" . $post['status']['id'] . "' style='font-family:fontello'>&#xe824;</a></div>
<div class='felem'><a onClick='return false' class='" . ($post['status']['favourited'] == true ? "unfav" : "fav") . "' href='?action=fav&thread=" . $post['status']['id'] . "'" . " style='font-family:fontello'>&#xe802;</a></div>
<div class='felem'><a onClick='return false' " . ($post['status']['visibility'] == "public" || $post['status']['visibility'] == "unlisted" ? "class='" . ($post['status']['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=reblog&thread=" . $post['status']['id'] . "'" : "") . " style='font-family:fontello'>&#xe83a;</a></div></div>";
break;
case "favourite":
$type = "<span class='fontello' style='color:#F17022; font-size:10px;'>&#xe802;</span>";
$string = "favourited your post";
$preview = "<a style='text-decoration:none;' class='ldr text' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; line-height:12px;'>" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) : "Favourited your image") . "</span></a>";
$media = (!empty($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
break;
case "reblog":
$type = "<span class='fontello' style='color:#D1DC29; font-size:10px;'>&#xe826;</span>";
$string = "reblogged your post";
$preview = "<a style='text-decoration:none;' class='ldr text' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; line-height:12px;'>" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) : "Reblogged your image") . "</span></a>";
@$media = (!is_null($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
break;
case "follow":
list($info, $rel) = user_info($post["account"]["id"]);
$type = "<span class='fontello' style='color:#FDB813; font-size;10px;'>&#xf234;</span>";
$preview = "started following you";
if ($rel[0]['following']) {
$label = "&#xe80c; Following";
$class = "unfollow";
}
else {
if ($info['locked']) {
if ($rel[0]['requested']) {
$label = "&#xe806; Follow Requested";
$class = "unfollow";
}
else {
$label = "&#xe806; Request Follow";
$class = "follow";
}
}
else {
$label = "&#xf234; Follow";
$class = "follow";
}
}
$buttons .= "<div class='post_buttons' style='position:absolute; right:10px; bottom:10px; border-radius:60px; padding:5px;'><span id='" . $info['id'] . "' class='profileButton $class' style='background-color:white; font-family:sans,fontello ;font-size:13px;'>$label</span></div>";
break;
}
$n .= "
<div class='notif " . ($id == false ? "" : "new") . "' id='" . $post['id'] . "'>
<div class='notifContents'>
<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['account']['avatar'] . "); border-radius:5px;'></div>
<div style='flex: 1; padding-left:5px; padding-right:5px; word-break: break-word; overflow:hidden;'>
<span>$type <span style='font-size:12px; font-weight:bold;'>$user</span></span>
" . trim($preview) . "
$buttons
</div>
$media
</div>
</div>
";
}
return $n;
}
}
/* this function will get all the notes (reblogs and favs) that has an specified post */
function getnotes($thread) {
global $user_settings;
global $token;
global $srv;
global $setting;
global $logedin;
@$reb = array(
json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/reblogged_by") , true)
);
@$fab = array(
json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/favourited_by") , true)
);
$limit = (count($reb[0]) > count($fab[0]) ? count($reb[0]) - 1 : count($fab[0]) - 1);
$notes = array();
$index = 0;
for ($i = 0;$i <= $limit;$i++) {
if (isset($reb[0][$i])) {
$notes[$index][0] = "reb";
$notes[$index][1] = $reb[0][$i];
$index++;
}
if (isset($fab[0][$i])) {
$notes[$index][0] = "fav";
$notes[$index][1] = $fab[0][$i];
$index++;
}
}
return $notes;
}
/* this function will fetch all the replies that a post have
or will fetch only the ones after a specified ($since) post id
*/
function getreplies($thread, $since = false) {
global $user_settings;
global $token;
global $srv;
global $setting;
global $logedin;
$context = json_decode(context($thread) , true);
$array = array();
if (!empty($context['ancestors'])) {
if ($since == false) {
foreach ($context['ancestors'] as $elem) {
$elem['type'] = 'ancestor';
$array[] = $elem;
}
}
}
$flag = 0;
if (!empty($context['descendants'])) {
foreach ($context['descendants'] as $elem) {
if (($since != false && $flag == 1) || $since == false) {
$elem['type'] = 'descendant';
$array[] = $elem;
}
if ($since != false && $elem['id'] == $since) {
$flag = 1;
}
}
}
$replies = array();
foreach ($array as $item) {
$reply['mode'] = "";
if ($item['type'] == 'ancestor') {
$reply['mode'] = "ancestor";
}
$replies[] = array(
'mode' => $reply['mode'],
'content' => $item
);
}
return $replies;
}
/* this function takes some options from the init.php file and the user_settings cookie
and fetches all the posts of the appropiate timeline */
function timeline($query) {
global $token;
global $srv;
$notes = "";
$media = ($query['text'] == "on" ? "" : "&only_media=true");
$next = ($query['next'] ? "&max_id=" . $query['next'] : ($query['since'] ? "&since_id=" . $query['since'] : ""));
switch ($query['mode']) {
case "home":
$array = api_get("timelines/home?limit=25{$media}{$next}");
break;
case "federated":
$array = api_get("timelines/public?limit=25{$media}{$next}");
break;
case "tag":
$array = api_get("timelines/tag/" . $query['tag'] . "?limit=25{$media}{$next}");
break;
case "local":
$array = api_get("timelines/public?limit=25&local=true{$media}{$next}");
break;
case "user":
$array = api_get("accounts/" . $query['user'] . "/statuses?limit=25{$media}{$next}");
break;
case "thread":
$array = array(
api_get("statuses/" . $query['thread'])
);
break;
case "favourites":
$array = api_get("favourites?limit=25{$media}{$next}");
break;
case "direct":
$array = api_get("timelines/direct?limit=25{$next}");
break;
case "list":
$array = api_get("timelines/list/" . $query['list'] . "?limit=25{$next}");
break;
case "bookmarks":
$array = api_get("bookmarks?limit=25{$next}");
break;
case "account":
$info = api_get("accounts/verify_credentials");
$array = api_get("accounts/" . $info['id'] . "/statuses?limit=25{$media}{$next}");
break;
default:
$array = api_get("timelines/public?limit=25{$media}{$next}");
break;
}
if (!is_array($array)) {
return false;
}
$next = end($array) ['id'];
$thread = array();
foreach ($array as $elem) {
if ($query['replies'] == "on" || $query['mode'] == "thread") {
$thread[] = $elem;
}
else {
if ($elem['in_reply_to_id'] == null) {
$thread[] = $elem;
}
}
}
return array(
$thread,
$next
);
}
/* this function takes in a whole post entity and spits out the HTMLfied text of the post
with the urls and @handles linkified and all the emojis replaced */
function processText($elem) {
global $user_settings;
require_once "vendor/simple_html_dom.php";
$content = trim(html_entity_decode($elem['content'],ENT_QUOTES));
if (!empty($content)) {
$html = str_get_html($content);
foreach ($html->find('a') as $lnk) {
foreach ($elem['media_attachments'] as $f) {
if (is_numeric(strpos($f['description'],explode("",$lnk->innertext)[0]))) {
$content = str_replace($lnk->outertext . "<br/>", null, $content);
$content = str_replace("<br/>" . $lnk->outertext, null, $content);
$content = str_replace($lnk->outertext, null, $content);
}
}
if (is_numeric(strpos($lnk->href, $user_settings['instance'])) || in_array($lnk->class, array(
"u-url mention",
"hashtag"
)) || $lnk->rel == "tag") {
$content = str_replace($lnk->outertext, $lnk->innertext, $content);
}
else {
$prv = $lnk->outertext;
$lnk->target = '_blank';
$lnk->class = 'link external';
$content = str_replace($prv, $lnk->outertext, $content);
}
}
}
$result = strip_tags($content, '<br><p><strong><a><em><strike>');
$result = str_replace('<br />', ' <br>', $result);
//$result = str_replace('&#39;', "'", $result);
foreach ($elem['mentions'] as $mention) {
$result = str_replace("@" . $mention['username'], "<span class='user' id='" . $mention['id'] . "'><a href='?user=" . $mention['id'] . "' class='link ldr' onClick='return false;'>@" . $mention['username'] . "</a></span>", $result);
}
//$result = preg_replace("/(?<!=\")(\b[\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/", "<a target=\"_blank\" class='external' style='color:navy;' href=\"$1\">$1</a>", $result);
$result = emojify($result, $elem['emojis']);
$result = preg_replace("/#([A-Za-z0-9\/\.]*)/", "<a class='ldr' href=\"./?tag=$1\"><b>#$1</b></a>", $result);
return $result;
}
/* function used in the process of uploading a file */
function get_mime($filename) {
$result = new finfo();
if (is_resource($result) === true) {
return $result->file($filename, FILEINFO_MIME_TYPE);
}
return false;
}
function sanitize($text){
return preg_replace("/[^a-zA-Z0-9]+/", "", $text);
}
function themes($mode,$name = false){
global $user_settings;
switch ($mode){
case "list":
$themes = scandir("themes/");
$themelist = array();
foreach ($themes as $elem){
if ($elem != ".." && $elem != "." && $elem != "custom"){
$themelist[] = $elem;
}
}
return $themelist;
case "file":
$theme = sanitize($user_settings['theme']);
//if (file_exists("themes/$theme/$name")){
return "themes/$theme/$name";
//}
case "get":
$theme = sanitize($user_settings['theme']);
//if (file_exists("themes/$theme/$name")){
return file_get_contents("themes/$theme/$name");
//}
}
}

66
include/init.php Normal file
View File

@ -0,0 +1,66 @@
<?php
/* this file initializes some stuff when the user loads a page */
/* fetch the user token from the cookie */
$token = (isset($_COOKIE['token']) ? $_COOKIE['token'] : false);
/* fetch the FE user setings from the cookie or set them if the cookie does not exists */
if (isset($_COOKIE['user_settings'])){
$user_settings = json_decode(base64_decode($_COOKIE['user_settings']),true);
} else {
$user_settings['replies'] = "off";
$user_settings['attach'] = "on";
$user_settings['instance'] = "mastodon.social";
$user_settings['text'] = "off";
$user_settings['reblog'] = "off";
$user_settings['videoloop'] = "off";
$user_settings['theme'] = "default";
$user_settings['nsfw'] = array();
if (isset($_COOKIE['token'])) {
$user_settings['explicit'] = "blur";
} else {
$user_settings['explicit'] = "hide";
}
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
}
if (isset($_COOKIE['theme'])){
$theme = json_decode(base64_decode($_COOKIE['theme']),true);
} else {
$theme = array();
}
/* a lazy way to check if we are logded in, to fix */
$logedin = (isset($_COOKIE['token']) ? true : false);
/* by default the timeline to fetch will be the federated one
but we will infer the timeline to load from the presence of
some common url variables.
*/
$tl['mode'] = "federated";
if(isset($_GET['mode'])){
$tl['mode'] = $_GET['mode'];
} else {
foreach ($_GET as $key => $value){
if(in_array($key,array("user","thread","local","tag","list","federated"))){
$tl['mode'] = $key;
$tl[$key] = $value;
}
}
}
/* same as above but these are mostly used for AJAX requests */
$tl['next'] = (isset($_GET['next']) ? htmlentities($_GET['next']) : false);
$tl['since'] = (isset($_GET['since']) ? htmlentities($_GET['since']) : false);
$tl['sincen'] = (isset($_GET['sincen']) ? htmlentities($_GET['sincen']) : false);
$srv = $user_settings['instance'];
/* no longer used */
$nocookies = (isset($_COOKIE['user_settings']) ? false : true);
/* these variables will hold the data of the page that will be generated */
$replies = "";
$notes = "";
?>

85
index.php Normal file
View File

@ -0,0 +1,85 @@
<?php
header("Content-Type: text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
/*
Welcome to the code of #DashboardFE (or #DashFE if you like it better)
If you are reading this, you are in for a big adventure where all your
patience will be tested.
I will try to add comments to all pieces of code that may seem confusing
or hard to understand how they work.
While the frontend is coded in a procedural style, i think i coded it to
be simple enough to be easy to understand. I suggest you to check first
the code of this file, then the code of the included files ("include/init.php" and
include/functions.php") which will give a better understanding on how the FE
operates.
The frontend also does most of the processing of the posts on the server side. Why?
I wanted this frontend to be available to people that does not like to use javascript
or where javascript is not an option (old phones/computers). This makes the
frontend very fast to navigate on older devices. Javascript is used mostly to make the
FE more dynamic in "normal" situations, but it is not required.
This was mostly coded in a non-serious way and i lack many of the training
that most people may have, you could say that i just put things together
until they work, so if you want to help me to make it better, i will be
so grateful
@daisuke@stereophonic.space
*/
ini_set('display_errors', 1);
ini_set("log_errors", 1);
error_reporting(1);
ini_set("error_log", "php-error.log");
include "settings.php"; # the general settings of the FE
include "include/init.php"; # initializes the page load with some variables and cookies
include "include/functions.php"; # the functions that are used on all the FE files.
/* if part of the url query is an ajax action, this file will handle it */
if(isset($_GET['action'])){
include "action.php";
}
/* if part of the url query is the return of a login attempt, this file will handle it */
if(isset($_GET['code'])){
include "login/activate.php";
}
/* the header and other layout elements will be included only if the
call is not an AJAX request */
if(!isset($_GET['ajax'])){
include "layout/header.php";
}
/* Basically the FE looks at the "page" url variable and then checks if the file exist either in the "pages" folder
or in the "modules" folder. If it does, it includes them
Even if the user does not provide a "page" variable, the init.php file can assume one based on other variables, so you should check that file too.
The url query is sanitized so it only allows alphanumeric characters
*/
if(isset($_GET['page']) && file_exists("pages/". preg_replace("/[^a-zA-Z0-9]+/", "", $_GET['page']).".php")){
include ("pages/". preg_replace("/[^a-zA-Z0-9]+/", "", $_GET['page']).".php");
} else {
$page = (isset($_GET['page']) ? preg_replace("/[^a-zA-Z0-9]+/", "", $_GET['page']) : "timeline");
if(file_exists("modules/$page.php")){
include ("modules/$page.php");
} else {
$content .= "The page you were looking for was not found";
}
}
/* same as a bit above */
if(!isset($_GET['ajax'])){
include "layout/footer.php";
}
?>

439
js/scripts.js Normal file
View File

@ -0,0 +1,439 @@
$('body').on('click', '.spoiler', function() {
$(this).toggle();
$(this).next('div').toggle();
});
$('body').on('click', '.blur', function(e) {
e.stopPropagation();
$(this).prev().toggle();
$(this).toggle();
$(this).next('a').toggle();
});
$('body').on('click', '.toggleblur', function(e) {
e.stopPropagation();
$(this).toggle();
$(this).next('a').next('a').toggle();
$(this).next('a').toggle();
});
// Open Lightbox
$('body').on('click', '.open-lightbox', function(e) {
e.preventDefault();
e.stopPropagation();
var image = $(this).attr('href');
$('html').addClass('no-scroll');
$('body').append('<div class="lightbox-opened"><img style="max-height:100%; max-width:100%;" src="' + image + '"></div>');
});
// Close Lightbox
$('body').on('click', '.lightbox-opened', function() {
$('html').removeClass('no-scroll');
$('.lightbox-opened').remove();
});
window.addEventListener("scroll", function() {
onScrollDiv()
});
window.addEventListener("DOMContentLoaded", function() {
onScrollDiv()
});
function onScrollDiv() {
var images = document.querySelectorAll('.lazyload');
for (var i = 0, nb = images.length; i < nb; i++) {
var img = images[i]
var rect = img.getBoundingClientRect();
var isVisible = ((rect.top - window.innerHeight) < 500 && (rect.bottom) > -50) ? true : false;
if (isVisible) {
if (!img.src) {
img.src = img.dataset.src;
}
}
}
}
$('body').on('click', '.replies', function(e) {
e.preventDefault;
$(".reply").remove();
$(".element").removeClass("element_pad");
$(this).closest(".element").addClass("element_pad");
/*$('.replies_container').html('');*/
var id = $(this).parent().parent().attr('id');
if($('#' + id+'.replies_container').find('.reply').length < 1){
$('#' + id+'.replies_container').html("<p><img src='img/loading.gif'></p>");
}
$.get("action.php?a=true&replies=" + id, function(data) {
$('#' + id+'.replies_container').html(data);
$('#' + id+'.replies_container').delay(800).fadeIn(400);
$('#a' + id).html('');
$('#' + id+".replies_container .ancestor").appendTo('#a' + id);
});
});
$('body').on('click', '.ldr:not(.topicon)', function(e) {
$('.topicon').each(function(a){
$( this ).removeClass('tiselected')
});
});
$('body').on('click', '.ldr', function(e) {
e.preventDefault();
$('#loader').html('');
$('#loaded').remove();
var url = $(this).attr('href');
localStorage.setItem("content", $('#content .element').detach());
$('#content').html('<center><img src="img/loadingb.gif"></center>');
$.get(url + "&ajax=1", function(data) {
$('#content').html(data);
history.pushState({}, "Dashboard FE", url);
var thread = getUrlParameter('thread');
});
});
$('body').on('click', '.gotop a', function(e) {
e.preventDefault();
$('html, body').animate({
scrollTop: 0
}, 800);
return false;
});
$('body').on('click', '#loader', function() {
var cnt = $("#loaded").contents();
// $("#content").prepend(cnt);
$('#content').find('.element').first().after(cnt);
$("#loaded").remove();
$("#loader").html('');
});
$('body').on('click', '.nsfw', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&nsfw=" + id, function(data) {
if (data == '1') {
$('#' + id + '.nsfw').toggleClass('nsfw unnsfw');
$('#' + id + '.unnsfw').html('NSFW <span class="fontello">&#xf205;</span>');
}
});
});
$('body').on('click', '.unnsfw', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&nsfw=" + id, function(data) {
if (data == '1') {
$('#' + id + '.unnsfw').toggleClass('unnsfw nsfw');
$('#' + id + '.nsfw').html('NSFW <span class="fontello">&#xf204;</span>');
}
});
});
$('body').on('click', '.block', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&block=" + id, function(data) {
$('#' + id + '.block').removeClass('block').addClass('unblock');
$('#' + id + '.unblock').html('Unblock');
});
});
$('body').on('click', '.unblock', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&block=" + id, function(data) {
$('#' + id + '.unblock').removeClass('unblock').addClass('block');
$('#' + id + '.block').html('Block');
});
});
$('body').on('click', '.autl', function() {
var id = $(this).attr('id');
var list = $(this).attr('list');
$.get("action.php?a=true&mode=true&user=" + id + "&list=" + list, function(data) {
$('#' + id + '.autl').removeClass('autl').addClass('rutl');
/* $('#' + id + '.rutl li').html('Added'); */
});
});
$('body').on('click', '.rutl', function() {
var elem = $(this);
var id = $(this).attr('id');
var list = $(this).attr('list');
$.get("action.php?a=true&mode=off&user=" + id + "&list=" + list, function(data) {
$('#' + id + '.rutl').removeClass('rutl').addClass('autl');
/* $(elem).find('li').html('Removed');*/
});
});
$('body').on('click', '.hide', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&hide=" + id, function(data) {
$('#' + id + '.hide').removeClass('hide').addClass('unhide');
$('#' + id + '.unhide').html('Unhide Thread');
console.log(data);
});
});
$('body').on('click', '.unhide', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&hide=" + id, function(data) {
$('#' + id + '.unhide').removeClass('unhide').addClass('hide');
$('#' + id + '.hide').html('Hide Thread');
console.log(data);
});
});
$('body').on('click', '.bookmark', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&bookmark=" + id, function(data) {
$('#' + id + '.bookmark').removeClass('bookmark').addClass('unbookmark');
$('#' + id + '.unbookmark').html('Unbookmark');
console.log(data);
});
});
$('body').on('click', '.unbookmark', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&bookmark=" + id, function(data) {
$('#' + id + '.unbookmark').removeClass('unbookmark').addClass('bookmark');
$('#' + id + '.bookmark').html('Bookmark');
console.log(data);
});
});
$('body').on('click', '.follow', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&follow=" + id, function(data) {
console.log(data);
if (data == '1') {
$('#' + id + '.follow').removeClass('follow').addClass('unfollow');
$('#' + id + '.unfollow').html('<span class=\'fontello\'></span> Following');
}
});
});
$('body').on('click', '.unfollow', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&unfollow=" + id, function(data) {
if (data == '1') {
$('#' + id + '.unfollow').removeClass('unfollow').addClass('follow');
$('#' + id + '.follow').html('Follow');
}
});
});
$('.container').on('mouseenter', '.user', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
var id = $(this).attr('id');
console.log(id);
$(this).append("<div class='userinfo' id='" + id + "'><img src='loading.gif'></div>");
$.when($.get("action.php?a=true&userinfo=" + id, function(data) {
$('#' + id + '.userinfo').html(data);
})).then(function(){
$('#' + id + '.userinfo').fadeIn();
});
});
$('.container').on('mouseleave', '.user', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
$(this).find('.userinfo').fadeOut(300, function() { $(this).remove(); });
});
$('.container').on('mouseenter', '.preview', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
var id = $(this).attr('id');
console.log(id);
$(this).before("<div class='notif previewpost' id='" + id + "'></div>");
$.when($.get("action.php?a=true&previewpost=" + id, function(data) {
$('#' + id + '.previewpost').html(data);
})).then(function(){
$('#' + id + '.previewpost').fadeIn();
});
});
$('.container').on('mouseleave', '.preview', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
$('.container').find('.previewpost').fadeOut(300, function() { $(this).remove(); });
});
/*
$('body').on('mouseleave', '.userinfo', function() {
var id = $(this).attr('id');
$.when($('#' + id + '.userinfo').fadeOut()).then(function() {
$('#' + id + '.userinfo').remove();
});
});
* */
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
function getMode() {
if (typeof getUrlParameter('user') !== 'undefined') {
console.log('list');
return "&user=" + getUrlParameter('user');
}
if (typeof getUrlParameter('list') !== 'undefined') {
console.log('list');
return "&list=" + getUrlParameter('list');
}
if (typeof getUrlParameter('mode') !== 'undefined') {
console.log('mode');
return "&mode=" + getUrlParameter('mode');
}
if (typeof getUrlParameter('tag') !== 'undefined') {
console.log('tag');
return "&tag=" + getUrlParameter('tag');
}
return "&mode=federated";
};
function loadmore(){
var thread = getUrlParameter('thread');
if (typeof thread !== 'undefined') {
return false;
}
var thread = getUrlParameter('thread');
if (typeof thread === 'undefined') {
var error = $(".error").length;
if (error < 1) {
pageMode = getMode();
var id = $('.post').last().attr('pid');
$('.loadmore').html("<img src='img/loading.gif'>")
$.get("index.php?ajax=1&next=" + id + "" + pageMode, function(data) {
$('.loadmore').parent().before(data);
$('.loadmore').html("Load More Posts")
/*$('.loadmore').parent().detach();
$('#content').append(data);
$('.loadmore').parent().appendTo('#content');
*/
});
}
}
}
$(window).scroll(function() {
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
loadmore();
}
});
$('body').on('click', '.loadmore', function() {
loadmore();
});
function newPosts() {
var thread = getUrlParameter('thread');
if (typeof thread !== 'undefined') {
return false;
}
var error = $(".error").length;
if (error >= 1) {
return false;
}
var id = $(".post").first().attr('pid');
pageMode = getMode();
if (getUrlParameter('mode') == 'bookmarks') {
return false;
}
$.get("index.php?ajax=1&since=" + id + "" + pageMode, function(data) {
if (data) {
var scroll = $(window).scrollTop();
if (scroll > 1000) {
$('#loader').html("<div class='avatar' style='height:0px;'></div><div class='loader' style='display:table-cell; height:50px; line-height:50px;'><a class='link' style='margin:5px;' href='#'>Load Newer Posts</a></div>");
if ($('#loaded').length) {
$('#loaded').prepend(data);
} else {
$('#loader').after("<div id='loaded' style='display:none'></div>");
$('#loaded').prepend(data);
}
} else {
if ($('#loaded').length) {
$('#loaded').prepend(data);
} else {
$('#content').find('.element').first().after(data);
}
}
}
});
};
window.setInterval(function() {
newPosts();
}, 25000);
$('body').on('click', '#settings #send', function() {
$('#settings #send').after('<img id="loading" src="img/loading.gif">');
var attach = $('#settings input[name=attach]:checked').val();
var explicit = $('#settings input[name=explicit]:checked').val();
var replies = $('#settings input[name=replies]:checked').val();
var reblog = $('#settings input[name=reblog]:checked').val();
var text = $('#settings input[name=text]:checked').val();
var videoloop = $('#settings input[name=videoloop]:checked').val();
var theme = $('#settings').find('select[name=theme]').val();
var fg = $('#settings').find('input[name=fg]').val();
var bg = $('#settings').find('input[name=bg]').val();
var tx = $('#settings').find('input[name=tx]').val();
var lc = $('#settings').find('input[name=lc]').val();
var bc = $('#settings').find('input[name=bc]').val();
var br = $('#settings').find('input[name=br]').val();
var bw = $('#settings').find('input[name=bw]').val();
var params = {
attach: attach,
explicit: explicit,
replies: replies,
reblog: reblog,
videoloop: videoloop,
text: text,
theme: theme,
fg: fg,
bg: bg,
tx: tx,
lc: lc,
bc: bc,
bw: bw,
br: br
};
$.get("?action=settings&ajax=1&" + $.param(params), function(data) {
$('#settings #loading').remove();
$('#settings #send').after('<b id="saved">Settings Saved</b>');
$('#settings #saved').delay(1000).fadeOut("slow");
});
});
function themecheck(name){
if(name.value == "custom"){
$('#customtheme').css("display","block");
}
else{
$('#customtheme').css("display","none");
}
};

492
layout/footer.php Normal file
View File

@ -0,0 +1,492 @@
</div>
</div>
<?php include "layout/sidebar.php"; ?>
</div>
</div>
<?php
$query = http_build_query(array_filter(array(
//'instance' => ($instance == true ? $instance : false) ,
'user' => (isset($tl['user']) == true ? $tl['user'] : false) ,
'mode' => $tl['mode'],
//'explicit' => ($nocookies == true ? $user_settings['explicit'] : false) ,
)));
?>
<script src="vendor/jquery.min.js"></script>
<script src="vendor/jqueryui.js"></script>
<script src="js/scripts.js"></script>
<script type="text/javascript">
window.setInterval(function() {
$( ".post > .replies_container" ).each(function() {
var len = $(this).find('.reply').length;
if(len > 0){
var id = $(this).attr('id');
var last = $(this).find('.reply').last().attr('id');
$.get("action.php?a=true&replies=" + id + "&since="+last, function(data) {
if (data !== ''){
$( ".post > #"+id+".replies_container" ).append(data);
}
});
}
});
}, 15000);
window.setInterval(function() {
var thread = getUrlParameter('thread');
if (typeof thread == 'undefined') {
return false;
}
$.get("action.php?a=true&notes=" + thread, function(data) {
$( ".post_notes" ).html(data);
});
}, 15000);
<?php if ($logedin): ?>
$('body').on('click', '.replyform', function(e) {
e.preventDefault;
$(".element").removeClass("element_pad");
$(this).closest(".element").addClass("element_pad");
var id = $(this).parents().eq(1).attr('id');
var type = $(this).parents().eq(3).attr('class').trim().replace(" ",".");
console.log(type);
$('#replyform').remove();
var data = JSON.parse(document.getElementById('data-' + id).innerHTML);
$.get("action.php?a=true&themefile=templates/replyform.txt", function(result) {
result = result.replace(":content:", data.mentions)
result = result.replace(":id:", data.id)
$('.'+type).find('#' + id+'.replies_container').prepend(result);
$('#replyform #' + data.scope).prop('selected', true);
$('#' + id).fadeIn(400);
});
});
$('body').on('click', '.compose', function(e) {
$('#postform').toggle();
});
$("body").on("keydown", "form", function (e) {
if (e.ctrlKey && e.keyCode === 13) {
$(this).find('input[type="submit"]').click();
}
});
$('.topicon').click(function(){
$('.topicon').each(function(a){
$( this ).removeClass('tiselected')
});
$( this ).addClass('tiselected');
});
$('body').on('click', '#send', function() {
var form = $(this).closest('.form');
$(form).find(".status").html('<span id="loading" class="animate-spin fontello">&#xe838;</span>');
var status = $(form).find('textarea').val()
var sensitive = $(form).find('input[name=sensitive]').prop('checked');
var spoiler = $(form).find('input[name=spoiler]').val();
var scope = $(form).find('select[name=scope]').val();
var thread = $(form).find('input[name=thread]').val();
var IDs = [];
$(form).find(".uploadedImage").each(function(){ IDs.push(this.id); });
var uploaded = IDs.join("|");
$.post("action.php", {
status: status,
scope: scope,
thread: thread,
uploaded: uploaded,
spoiler: spoiler,
sensitive: sensitive
},
function(data) {
if($(form).closest('.element').attr('id') == 'postform'){
$(form).find('textarea').val('');
$(form).find('.uploadBox').remove();
$(form).find('input[name=sensitive]').prop('checked', false);
$(form).find(".status").html('');
$(form).find('input[name=spoiler]').val('');
newPosts();
} else {
var parent = $(form).closest('.element').find('.post').first().attr('id');
$('#replyform').remove();
$('#'+parent+'.replies_container').append(data);
}
});
});
$('body').on('click', '.quickreply', function(e) {
$(".notif.form").remove();
$(this).closest('.notif').after('<div class="notif form"><div class="notifContents"><input type="hidden" name="thread" value="'+$(this).attr('id')+'"><input type="hidden" name="mentions" value="'+$(this).attr('data-mentions')+'"><textarea style="width:100%; height100%; border: 1px solid #ddd;"></textarea><input type="submit" id="quicksend" value="Send"></div></div>');
});
$('body').on('click', '#quicksend', function() {
var form = $('#quicksend').closest('.form');
var thread = $(form).find('input[name=thread]').val();
var mentions = $(form).find('input[name=mentions]').val();
var status = mentions + $(form).find('textarea').val();
$(".notif.form").html('<span id="loading" class="animate-spin fontello">&#xe838;</span>');
$.post("action.php", {
status: status,
thread: thread,
},
function(data) {
$(".notif.form").remove();
notificaton('Reply Sent!');
});
});
$('body').on('click', '.badge', function() {
$('#notifications').toggle();
var notif = $('#hiddenside').children().first().attr('id');
localStorage.setItem("notif", notif);
$('#notifications').find('.container').children().removeClass('new');
$('.alert').css('display','none');
var title = document.title;
document.title = title.replace("(*)", "");
});
$('body').on('click', '.notif .ldr', function(e) {
$('#notifications').find('.container').children().removeClass('new');
$('#notifications').css('display','none');
$('.alert').css('display','none');
var title = document.title;
document.title = title.replace("(*)", "");
});
$('body').on('click', '.nloadmore', function() {
var n = $('#notifications').find('.container').children().last().attr('id');
$('#notifications').find('.container').children().last().after('<span id="loading" class="animate-spin fontello" style="color:black;">&#xe838;</span>');
$.get("action.php?a=true&max=true&notif=" + n, function(data) {
$('#loading').remove();
$('#notifications').find('.container').append(data);
});
});
window.setInterval(function() {
var n = localStorage.getItem("notif");
var f = $("#notifications").find('.container').children().first().attr('id');
var nf;
if (n < f) {
nf = n;
//$("#notifications").html('');
} else {
nf = f;
}
$.get("action.php?a=true&notif=" + f, function(data) {
if (data) {
var title = document.getElementsByTagName("title")[0].innerHTML;
if (title.indexOf("(*)") < 0) {
document.getElementsByTagName("title")[0].innerHTML = "(*) " + title;
}
$('#notifications').find('.container').prepend(data);
var cnt = $('#notifications .container div.new').length;
var notif = $('#hiddenside').children().first().attr('id');
localStorage.setItem("notif", notif);
$.when($('#hiddenside').html('')).then(function() {
$('.alert').css('display','block');
$('#hiddenside').append(data);
$('#hiddenside').children().each(function(index) {
$(this).delay(4000 + (1000 * index)).fadeOut("slow");
});
});
}
});
}, 15000);
function notificaton(message){
var notif = "<div class='notif error' style='border-left:3px solid red; background-color:pink;'> <div class='notifContents'> <div style='flex: 0 0 60px; background-size:cover; border-radius:5px;'></div> <div style='flex: 1; padding-left:5px; padding-right:5px; word-break: break-all; overflow:hidden;'> <span>"+message+"</span> </div> </div> </div>";
$('#hiddenside').append(notif);
$('#hiddenside').children().each(function(index) {
$(this).delay(4000 + (1000 * index)).fadeOut("slow");
});
return false;
};
$('body').on('click', '.fav', function(e) {
e.preventDefault;
var id = $(this).parents().eq(1).attr('id');
$("#"+id+".post_buttons .fav").switchClass("fav","unfav",200);
$.get("action.php?a=true&mode=on&fav=" + id, function(data) {
if (data == 'error') {
$("#"+id+".post_buttons .unfav").switchClass("unfav","fav",200);
} else {
$("#"+id+".post_buttons .unfav").children().html(data);
}
});
});
$('body').on('click', '.unfav', function(e) {
e.preventDefault;
var id = $(this).parents().eq(1).attr('id');
$("#"+id+".post_buttons .unfav").switchClass("unfav","fav",200);
$.get("action.php?a=true&mode=off&fav=" + id, function(data) {
if (data == 'error') {
$("#"+id+".post_buttons .fav").switchClass("fav","unfav",200);
} else {
$("#"+id+".post_buttons .fav").children().html(data);
}
});
});
$('body').on('click', '.reblog', function(e) {
e.preventDefault;
var id = $(this).parents().eq(1).attr('id');
$("#"+id+".post_buttons .reblog").switchClass("reblog","unreblog",200);
$.get("action.php?a=true&mode=on&reblog=" + id, function(data) {
if (data == 'error') {
$("#"+id+".post_buttons .unreblog").switchClass("unreblog","reblog",200);
} else {
$("#"+id+".post_buttons .unreblog").children().html(data);
}
});
});
$('body').on('click', '.unreblog', function(e) {
e.preventDefault;
var id = $(this).parents().eq(1).attr('id');
$("#"+id+".post_buttons .unreblog").switchClass("unreblog","reblog",200);
$.get("action.php?a=true&mode=off&reblog=" + id, function(data) {
if (data == 'error') {
$("#"+id+".post_buttons .reblog").switchClass("reblog","unreblog",200);
} else {
$("#"+id+".post_buttons .reblog").children().html(data);
}
});
});
$('body').on('click', '.mute', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&mute=" + id, function(data) {
$('#' + id + '.mute').switchClass("mute","unmute",200);
$('#' + id + '.unmute').html('Unmute');
});
});
$('body').on('click', '.unmute', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&mute=" + id, function(data) {
$('#' + id + '.unmute').switchClass("unmute","mute",200);
$('#' + id + '.mute').html('Mute');
});
});
$('body').on('click', '.muteconv', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=true&thread=true&mute=" + id, function(data) {
$('#' + id + '.muteconv').switchClass("muteconv","unmuteconv",200);
$('#' + id + '.unmuteconv').html('Unmute Thread');
console.log(data);
});
});
$('body').on('click', '.unmuteconv', function() {
var id = $(this).attr('id');
$.get("action.php?a=true&mode=off&thread=true&mute=" + id, function(data) {
$('#' + id + '.muteconv').switchClass("unmuteconv","muteconv",200);
$('#' + id + '.muteconv').html('Mute Thread');
console.log(data);
});
});
$('body').on('click', '.menu', function(e) {
$(this).next('span').slideToggle('left');
});
$('body').on('click', '.delete', function(e) {
e.preventDefault;
var id = $(this).attr('id');
var post = $('#'+id+'.post').parent();
var reply = $('#'+id+'.reply');
$.get("action.php?a=true&delete=" + id, function(data) {
if (data == '0') {
post.css('opacity','0.5');
reply.css('opacity','0.5');
} else {
$.when(post.fadeOut('slow')).then(function(){
post.remove();
reply.remove();
});
}
});
});
$('body').on('click', '.delete', function(e) {
e.preventDefault;
var id = $(this).attr('id');
$.get("action.php?a=true&bookmark=" + id, function(data) {
notificaton('Post bookmarked!');
});
});
$('body').on('click', '.quote', function(e) {
e.preventDefault;
var id = $(this).closest('.post').attr('id');
console.log(id);
var url = $("#"+id+".post .original").attr("href");
console.log(url);
$("#postform").find('textarea').val("> "+url+"\n\n");
if ($("#postform").is(':visible')) {
location.hash = "#top";
} else {
$('#postform').toggle();
}
});
$('body').on('click', '.delpic', function(e) {
var count = $(this).closest('#files').children().length;
if (count == 1){
$(this).closest('.uploadBox').remove();
} else {
count = count - 1;
$(this).parent().fadeOut();
$(this).parent().remove();
}
});
document.onpaste = function (event) {
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
/*Make Sure Only One File is Copied*/
if (items.length != 1) {
return;
}
var item = items[0];
/*Verify If The Copied Item is File*/
if (item.kind === 'file') {
var file = item.getAsFile();
var filename = file.name;
/*Get File Extension*/
var ext = filename.split('.').reverse()[0].toLowerCase();
/*Check Image File Extensions*/
if (jQuery.inArray(ext, ['jpg', 'png']) > -1) {
/*Create FormData Instance*/
var data = new FormData();
data.append('file', file);
/*Request Ajax With File*/
request_ajax_file('upload.php', data, file_uploaded);
} else {
alert('Invalid File');
}
}
};
function file_uploaded(data) {
if ($("#postform .uploadBox").length < 1){
$("#postform #status").before('<div class="uploadBox"><ul id="files" style="margin:0px;"></ul></div>');
$( function() {
$( "#files" ).sortable();
$( "#files" ).disableSelection();
} );
}
var files = JSON.parse(data);
$.each(files, function( index, elem ) {
$("#files").append('<li class="uploadedImage" id="'+elem[0]+'" style="position:relative; background-image:url('+elem[1]+')"><div class="fontello delpic">&#xe813;</div></li>');
});
var nfiles = $("#postform .uploadBox").children().length;
$("#postform .status").html('');
}
/*Function to Make AJAX Request With File*/
function request_ajax_file(ajax_url, ajax_data, ajax_callback) {
$("#postform .status").html('<span id="loading" class="animate-spin fontello">&#xe838;</span>');
jQuery.ajax({
url: ajax_url,
data: ajax_data,
type: 'POST',
processData: false,
contentType: false,
success: function (response) {
if (typeof ajax_callback == 'function') {
ajax_callback(response);
} else if (typeof ajax_callback == 'string') {
if (ajax_callback != '') {
eval(ajax_callback + '(response)');
}
}
}
});
}
function upload_files() {
$("#postform .status").html('<span id="loading" class="animate-spin fontello">&#xe838;</span>');
var fileUpload = $("#files_input_field").get(0);
var files = fileUpload.files;
if (files.length == 0) return;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
$.ajax({
type: "POST",
url: "upload.php",
contentType: false, //default: 'application/x-www-form-urlencoded; charset=UTF-8'
processData: false, //default: data, other DOMDocument
data: data, //Type: PlainObject or String or Array
success: function(data) {
if ($("#postform .uploadBox").length < 1){
$("#postform #status").before('<div class="uploadBox"><ul id="files" style="margin:0px;"></ul></div>');
$( function() {
$( "#files" ).sortable();
$( "#files" ).disableSelection();
} );
}
var files = JSON.parse(data);
$.each(files, function( index, elem ) {
$("ul[id=files]").append('<li class="uploadedImage" id="'+elem[0]+'" style="position:relative; background-image:url('+elem[1]+')"><div class="fontello delpic">&#xe813;</div></li>');
});
var nfiles = $("#postform .uploadBox").children().length;
$("#postform .status").html('');
},
error: function(jqXHR,e) {
console.log(jqXHR);
alert("There was error uploading files! "+e);
}
});
}
function upload_files_reply() {
$("#replyform .status").html('<span id="loading" class="animate-spin fontello">&#xe838;</span>');
var fileUpload = $("#replyform #files_input_field").get(0);
var files = fileUpload.files;
if (files.length == 0) return;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
$.ajax({
type: "POST",
url: "upload.php",
contentType: false, //default: 'application/x-www-form-urlencoded; charset=UTF-8'
processData: false, //default: data, other DOMDocument
data: data, //Type: PlainObject or String or Array
success: function(data) {
if ($("#replyform .uploadBox").length < 1){
$("#replyform #status").before('<div class="uploadBox"><ul id="files" style="margin:0px;"></ul></div>');
$( function() {
$( "#files" ).sortable();
$( "#files" ).disableSelection();
} );
}
var files = JSON.parse(data);
$.each(files, function( index, elem ) {
$("#replyform #files").append('<li class="uploadedImage" id="'+elem[0]+'" style="position:relative; background-image:url('+elem[1]+')"><div class="fontello delpic">&#xe813;</div></li>');
});
var nfiles = $("#replyform .uploadBox").children().length;
$("#replyform .status").html('');
},
error: function() {
alert("There was error uploading files!");
}
});
}
<?php endif; ?>
</script>
</body>

224
layout/header.php Normal file
View File

@ -0,0 +1,224 @@
<!DOCTYPE html>
<head>
<title>Dashboard FE</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" media='screen and (min-width: 801px)' href='<?php echo themes("file","css/style.css")?>?id=<?php echo mt_rand(1000, 2500); ?>' />
<link rel="stylesheet" media='screen and (max-width: 800px)' href='<?php echo themes("file","css/mobile.css")?>?id=<?php echo mt_rand(1000, 2500); ?>' />
<link rel="stylesheet" href='<?php echo ($user_settings['theme'] == "custom" ? themes("file","css/color.php") : themes("file","css/color.css"))?>?id=<?php echo mt_rand(1000, 2500); ?>' />
<link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/" + font.fontname + "-ie7.css"><![endif]-->
<link rel="stylesheet" href="css/animate.css">
<style type="text/css">
@font-face {
font-family: 'fontello';
src: url('./font/fontello.eot?43704775');
src: url('./font/fontello.eot?43704775#iefix') format('embedded-opentype'),
url('./font/fontello.woff?43704775') format('woff'),
url('./font/fontello.ttf?43704775') format('truetype'),
url('./font/fontello.svg?43704775#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'patua';
src: url('./font/patua-one-v10-latin-regular.eot');
src: url('./font/patua-one-v10-latin-regular.woff') format('woff'),
url('./font/patua-one-v10-latin-regular.ttf') format('truetype'),
url('./font/patua-one-v10-latin-regular.svg') format('svg');
font-weight: normal;
font-style: normal;
}
.nte{
width:35px;
height:35px;
float:left;
margin:2px;
background-size:cover;
position:relative;
}
.nte_type{
position:absolute;
right:0px;
bottom:0px;
width:15px;
height:15px;
border-radius:15px;
font-family:fontello;
font-size:8px;
color:white;
}
.nte_type span{
font-family:fontello;
font-size:8px;
color:white;
margin-top:4px;
display:block;
}
</style>
</head>
<body>
<?php
if ($logedin) {
$notif = getnotif();
}
?>
<div id='hiddenside'></div>
<div class='gotop'><a href='#top'></a></div>
<div class="topbar" style='text-align:center; background-color:none;'>
<div class="topbar" style='position:fixed; top:0px; left:0px; height:45px; z-index:99;'>
<span style='float:left; line-height:45px;margin-left:10px;'>
<a href="./<?php echo ($logedin ? "?mode=home" : ""); ?>" style="font-family: 'patua', serif; font-weight:bold; color:white; font-size:20px; text-decoration:none">Dashboard FE</a>
</span>
<?php if ($logedin): ?>
<span class='mid' style='margin:0 auto; height:100%;'>
<span class="topbutton" style='position:relative;'>
<a href='?mode=federated' class='fontello topicon ldr <?php echo ($tl['mode'] == "federated" ? "tiselected" : "");?>'>&#xe83c;</a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?mode=home' class='fontello topicon ldr <?php echo ($tl['mode'] == "home" ? "tiselected" : "");?>'>&#xe816;</a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?mode=local' class='fontello topicon ldr <?php echo ($tl['mode'] == "local" ? "tiselected" : "");?>'>&#xf1e0;</a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?mode=favourites' class='fontello topicon ldr <?php echo ($tl['mode'] == "favourites" ? "tiselected" : "");?>'>&#xe804;</a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?mode=direct' class='fontello topicon ldr <?php echo ($tl['mode'] == "direct" ? "tiselected" : "");?>'>&#xf0e0;</a>
</span>
<?php if (isset($user_settings['pleroma'])): ?>
<span class="topbutton" style='position:relative;'>
<a href='?mode=bookmarks' class='fontello topicon ldr <?php echo ($tl['mode'] == "bookmarks" ? "tiselected" : "");?>'>&#xe81e;</a>
</span>
<?php
endif; ?>
</span>
<?php
endif; ?>
<span style='float:right; margin-right:20px; height:100%;'>
<?php if ($logedin): ?>
<span class="topbutton mobile compose" style='position:relative;'>
<a href='' onClick='return false;' class='fontello topicon' style='color:white; text-decoration:none; display:inline; font-size:20px;'>&#xe824;</a>
</span>
<span class="topbutton ntbutton">
<a href='?page=notifications' onClick='return false;' class='badge fontello topicon' style='text-decoration:none; display:inline; font-size:20px;'>&#xf0f3; <span class='alert' style=''></span> </a>
<div id='notifications'><div class='container'><?php echo $notif ?></div><span class='nloadmore'>Load More</span></div>
</span>
<span class="topbutton" id="usermenu">
<span class='fontello topicon' style='display:inline; font-size:20px;'>&#xe80b;</span>
<div class='menu postMenu'>
<ul>
<?php if ($logedin): ?>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=federated' onClick='return false'>&#xe83c; Federated</a></li>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=home' onClick='return false'>&#xe816; Home</a></li>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=local' onClick='return false'>&#xf1e0; Local</a></li>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=favourites' onClick='return false'>&#xe804; Favourited</a></li>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=direct' onClick='return false'>&#xf0e0; Direct</a></li>
<?php if (isset($user_settings['pleroma'])): ?>
<li class='mobile' style=''><a class='fontello ldr link' href='?mode=bookmarks' onClick='return false'>&#xe81e; Bookmarks</a></li>
<?php
endif; ?>
<li class='mobile' style=''></li>
<?php
endif; ?>
<li style=''><a class='fontello ldr link' href='?page=settings' onClick='return false'>&#xe82d; Settings</a></li>
<li style=''><a class='fontello link' href='./logout'>&#xe832; Log Out</a></li>
</ul>
</div>
</span>
<?php
else: ?>
<span class="topbutton" style='position:relative;'>
<a href='?page=about' class='fontello' style='color:white; text-decoration:none; display:inline; font-size:20px;'>&#xe814; </a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?page=fediverse' class='fontello' style='color:white; text-decoration:none; display:inline; font-size:20px;'>&#xf1e0; </a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?page=privacy' class='fontello' style='color:white; text-decoration:none; display:inline; font-size:20px;'>&#xe819; </a>
</span>
<span class="topbutton" style='position:relative;'>
<a href='?page=settings' class='fontello' style='color:white; text-decoration:none; display:inline; font-size:20px;'>&#xe82d; </a>
</span>
<span class="topbutton" style='position:relative; width:auto; margin-left:10px;'>
<a href='./login' style='display:inline:block; padding:3px; background-color: #3F71BC; border: 1px solid white; font-weight:bold; border-radius:3px; color:white; text-decoration:none; display:inline; font-size:20px;'><span class='fontello' >&#xe832;</span> Login </a>
</span>
<?php
endif; ?>
<!--
<a href='?page=notifications' onClick='return false;'><span class="badge disabled">&#128276;</span></a>
<a href="./logout" style='color:lightgray; font-weight:bold; font-size:18px;'>Logout</a>
-->
</span>
</div>
</div>
<br>
<div class='wrapper'>
<div class='container'>
<div id='posts'>
<?php
if ($logedin) {
?>
<div class='element' id='postform' style=''>
<div class='avatar' style='background-image:url(<?php echo $user_settings['avatar']; ?>)'></div>
<div class='postform form' style='display:block;'>
<div style='text-align:right; width:95%; margin: 13px auto; display:block;'>
<form action='status.php' method='post' enctype='multipart/form-data'>
<input type='hidden' name='mode' value='<?php echo $tl['mode']; ?>'>
<input type='hidden' name='uploaded' id="uploaded" value=''>
<input type='hidden' name='thread' id="thread" value='null'>
<div style='width:100%; text-align:left;'>
<div style='width:100% height:27px; border-bottom: 1px solid transparent;'>
<input type='text' name='spoiler' placeholder='Title (optional)' value='' style='border:none; width:612px;'>
</div>
<textarea name='status' id="status" style='width:612px; height:100px; border:none;'></textarea>
</div>
<span style='float:left;'>
<input type='submit' value='Send' id='send' onClick='return false'>
<div class='formbtn fontello' style='position:relative;'>
&#xe818;
<input style='opacity:0; position:absolute; left:0px; top:5px; background-color:yellow;' type='file' id="files_input_field" name='file[]' multiple onchange="upload_files();">
</div>
<div class='formbtn fontello' style='position:relative;'>
<input type='checkbox' name='sensitive' id='sensitive' style='display:none;'>
<label for='sensitive' class='fontello'>&#xe81b;</label>
</div>
</span>
<span style='float:left;' class='status'>
</span>
<span style='float:right;'>
<select name='scope' id='scope'>
<option value="1">&#xe83c; Public</option>
<option value="2">&#xe816; Unlisted</option>
<option value="3">&#xe819; Private</option>
<option value="4">&#xf0e0; Direct</option>
</select>
</span>
</form>
<div style="clear: both;"></div>
</div>
</div>
</div>
<?php
}
?><div id="loader" class='element'></div>
<div id="content">

47
layout/sidebar.php Normal file
View File

@ -0,0 +1,47 @@
<aside>
<?php
$info = api_get("accounts/verify_credentials");
if ($logedin || $tl['mode'] == 'user') {
echo "
<div class='side_element' style='margin:0px; width:100%;'>
<div style='width:100%; height:120px; display:block; background-color:#" . averageColor($info['avatar']) . "; background-size:cover; background-image:url(" . $info['header_static'] . "); '></div>
<div class='avatar' style='background-color:white; background-image:url(" . $info['avatar'] . "); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:90px;'></div>
<div style='clear:both; margin-top:-15px; padding-bottom:10px;'>" . ($logedin ? "<a href='?mode=account' class='ldr'>" : "") . "<span style='font-weight:bold; font-size:22px;'>
" . $info['display_name'] . "</span>" . ($logedin ? "</a>" : "") . "
<br><span>(@" . $info['acct'] . ")</span>
</div>
</div>
<div class='side_element' style='margin-top:20px; margin-left:0px; width:100%;'>
<ul>
<a href='?mode=federated' class='ldr'><li>&#xe83c; Federated</li></a>
<a href='?mode=home' class='ldr'><li>&#xe816; Home</li></a>
<a href='?mode=local' class='ldr'><li>&#xf1e0; Local</li></a>
<a href='?mode=favourites' class='ldr'><li>&#xe804; Favourites</li></a>
<a href='?mode=direct' class='ldr'><li>&#xf0e0; Direct Messages</li></a>
<a href='?page=settings' class='ldr'><li>&#xe82d; Settings</li></a>
</ul>
</div>
<div class='side_element' style='margin-top:20px; margin-left:0px; width:100%;'>
<ul>";
$lists = api_get("/lists");
foreach ($lists as $list) {
echo "<a href='?list=" . $list['id'] . "' class='ldr'><li>&#xe832; " . $list['title'] . "</li></a>";
}
echo "</ul>
</div>
";
}
if ($logedin) {
echo "";
}
else {
echo "<div class='side_element'>
<span style='font-weight:bold; font-size:20px; clear:both;'>" . $setting['appname'] . "</span><br>
<span>" . $setting['description'] . "</span>
</div>";
}
?>
</aside>

41
login/activate.php Normal file
View File

@ -0,0 +1,41 @@
<?php
$cdata = parse_url($setting['url']);
include "data/" . $user_settings['instance'] . ".php";
$cSession = curl_init();
curl_setopt($cSession, CURLOPT_URL, "https://" . $user_settings['instance'] . "/oauth/token");
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cSession, CURLOPT_HEADER, false);
curl_setopt($cSession, CURLOPT_POST, 1);
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query(array(
'client_id' => $client['client_id'],
'client_secret' => $client['client_secret'],
'grant_type' => 'authorization_code',
'grant_type' => 'authorization_code',
'code' => $_GET['code'],
'redirect_uri' => $client['redirect_uri']
)));
$result = curl_exec($cSession);
curl_close($cSession);
$data = json_decode($result, true);
//$atoken = msc($data['access_token'],'e');
$atoken = $data['access_token'];
setcookie('token', $atoken, time() + 60 * 60 * 24 * 30, $cdata['path'], $cdata['host'], false, true);
$token = $data['access_token'];
$info = api_get("accounts/verify_credentials");
$user_settings['acct'] = $info['acct'];
$user_settings['username'] = $info['display_name'];
$user_settings['avatar'] = $info['avatar'];
$user_settings['uid'] = $info['id'];
$info = api_get("instance");
if (is_numeric(strpos($info['version'], 'Pleroma'))) {
$user_settings['pleroma'] = 'true';
}
setrawcookie("user_settings", base64_encode(json_encode($user_settings)) , time() + 60 * 60 * 24 * 30, '/');
header('Location: ' . $setting['url']);

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

85
login/index.php Normal file
View File

@ -0,0 +1,85 @@
<?php
error_reporting ( E_ALL ) ;
ini_set ( 'display_errors' , 1 ) ;
include "../settings.php";
include "../include/init.php";
include "../include/functions.php";
$message = "";
if (isset($_POST['user'])){
$instance = htmlentities($_POST['user']);
$check = json_decode(file_get_contents("https://$instance/api/v1/instance"),true);
if(is_null($check['title'])){
$message = "<p>There was a problem when fetching info from the instance, make sure you wrote the url correctly and without trailing slashes.</p>";
} else {
$instance_list = scandir("../data/");
$cdata = parse_url($setting['url']);
if(!in_array("$instance.php",$instance_list)){
$client = register_app($instance);
file_put_contents("../data/$instance.php",'<?php $client = '.var_export($client,true).';');
if (!file_exists("../data/$instance.php")){
echo "<p style='color:red; font-weight:bold;'>Unable to save instance details, please verify that the 'data' folder has writrable permissions.</p>";
die();
}
} else {
include "../data/$instance.php";
}
$user_settings['replies'] = "on";
$user_settings['instance'] = "$instance";
$user_settings['text'] = "on";
$user_settings['reblog'] = "on";
$user_settings['explicit'] = "blur";
$user_settings['videoloop'] = "off";
setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/');
header('Location: '."https://$instance/oauth/authorize?response_type=code&client_id=".$client['client_id']."&redirect_uri=".$client['redirect_uri']."&scope=read+write+follow");
}
}
$bg = scandir("./bg/");
?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css?family=Patua+One&display=swap" rel="stylesheet">
<style type="text/css">
@font-face {
font-family: 'fontello';
src: url('../font/fontello.eot?43704775');
src: url('../font/fontello.eot?43704775#iefix') format('embedded-opentype'),
url('../font/fontello.woff?43704775') format('woff'),
url('../font/fontello.ttf?43704775') format('truetype'),
url('../font/fontello.svg?43704775#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
html {
background: url(bg/<?php echo $bg[mt_rand(2,count($bg)-1)]?>) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
</style>
</head>
<body >
<div style='width:100vw; height:100%; display:inline-block; vertical-align:middle; text-align:center;'>
<div style='width:300px; height:200px; margin-top:20%; background-color:rgba(0, 0, 0, 0.5); display:inline-block; padding:30px; border-radius:3px;'>
<span style="font-family: 'Patua One', serif; font-weight:bold; color:white; font-size:45px; text-shadow: 2px 2px #000; ">Dashboard FE</span>
<?php echo $message; ?>
<form method="post">
<input type="text" name="user" placeholder="your.instance.url" style='width:200px height:30px; font-size:20px; border: 2px solid darkgray; padding:5px;'>
<input type="submit" style='background-color:#203960; padding:10px; border: 2px solid white; margin: 10px; font-family: fontello, sans serif; color:white; font-weight:bold; font-size:20px; border-radius:3px;' value="Login &#xe832;">
</form>
</div>
</div>
</body>

4
logout/index.php Normal file
View File

@ -0,0 +1,4 @@
<?php ini_set('display_errors', 1); ini_set("log_errors", 1);
include "../settings.php"; include "../include/init.php"; include "../include/functions.php";
$cdata = parse_url($setting['url']);
unset($_COOKIE['token']); setcookie('token','',-1,$cdata['path'],$cdata['host']); unset ($user_settings['pleroma']); unset ($user_settings['acct']); unset ($user_settings['username']); unset ($user_settings['avatar']); unset ($user_settings['uid']); setrawcookie("user_settings",base64_encode(json_encode($user_settings)),time()+60*60*24*30,'/'); header('Location: '.$setting['url']);

10
modules/lists.php Normal file
View File

@ -0,0 +1,10 @@
<div class='element'>
<div class='avatar' style='height:0px;'></div>
<div class='post notimeline' style='text-align:left;'>
<div style='padding:15px; text-align:left; display:inline-block;' id="settings">
<h1>List Management</h1>
Coming Soon
</div>
</div>
</div>

View File

@ -0,0 +1,9 @@
<div class="element"><div class="avatar" style="height:0px;"></div><div style="display:table-cell; height:50px;">
<div style="width:300px; line-height:inherit;">
<?php
echo getnotif();
?>
</div>
</div></div>

103
modules/settings.php Normal file
View File

@ -0,0 +1,103 @@
<div class='element'>
<div class='avatar' style='height:0px;'></div>
<div class='post' style='text-align:left;'>
<div style='padding:15px; width:90%; text-align:left; display:inline-block;' id="settings">
<h1><span class='fontello' style='font-size:inherit;'>&#xe82e;</span> Settings</h1>
<form method='GET'>
<input type='hidden' name='action' value='settings'>
<br>
<fieldset style='width:100%'>
<legend>Timeline</legend>
<h2>Show replies</h2>
<div class='setting'>
<input type='radio' name='replies' id='repliesOn' value='on' style='display:none;' <?php echo ($user_settings['replies'] == 'on' ? "checked" : ""); ?>>
<label for='repliesOn'>Yes</label>
<input type='radio' name='replies' id='repliesOff' value='off' style='display:none;' <?php echo ($user_settings['replies'] == 'off' ? "checked" : ""); ?>>
<label for='repliesOff'>No</label>
</div>
<br><br>
<h2>Show text-only posts</h2>
<div class='setting'>
<input type='radio' name='text' id='textOn' value='on' style='display:none;' <?php echo ($user_settings['text'] == 'on' ? "checked" : ""); ?>>
<label for='textOn'>Yes</label>
<input type='radio' name='text' id='textOff' value='off' style='display:none;' <?php echo ($user_settings['text'] == 'off' ? "checked" : ""); ?>>
<label for='textOff'>No</label>
</div>
<br><br>
<h2>Show reblogs</h2>
<div class='setting'>
<input type='radio' name='setreblog' id='reblogOn' value='on' style='display:none;' <?php echo ($user_settings['reblog'] == 'on' ? "checked" : ""); ?>>
<label for='reblogOn'>Yes</label>
<input type='radio' name='setreblog' id='reblogOff' value='off' style='display:none;' <?php echo ($user_settings['reblog'] == 'off' ? "checked" : ""); ?>>
<label for='reblogOff'>No</label>
</div>
</fieldset>
<fieldset style='width:100%'>
<legend>Attachments</legend>
<h2>Hide Attachments, show a link instead.</h2>
<div class='setting'>
<input type='radio' name='attach' id='a_hide' value='off' style='display:none;' <?php echo ($user_settings['attach'] == 'off' ? "checked" : ""); ?>>
<label for='a_hide'>Yes</label>
<input type='radio' name='attach' id='a_show' value='on' style='display:none;' <?php echo ($user_settings['attach'] == 'on' ? "checked" : ""); ?>>
<label for='a_show'>No</label>
</div>
<br><br>
<h2>Sensitive Media</h2>
<div class='setting'>
<input type='radio' name='explicit' id='hide' value='hide' style='display:none;' <?php echo ($user_settings['explicit'] == 'hide' ? "checked" : ""); ?>>
<label for='hide'>Hide</label>
<input type='radio' name='explicit' id='blur' value='blur' style='display:none;' <?php echo ($user_settings['explicit'] == 'blur' ? "checked" : ""); ?>>
<label for='blur'>Blur</label>
<input type='radio' name='explicit' id='show' value='off' style='display:none;' <?php echo ($user_settings['explicit'] == 'off' ? "checked" : ""); ?>>
<label for='show'>Show</label>
</div>
<br><br>
<h2>Loop videos</h2>
<div class='setting'>
<input type='radio' name='videoloop' id='loopOn' value='on' style='display:none;' <?php echo ($user_settings['videoloop'] == 'on' ? "checked" : ""); ?>>
<label for='loopOn'>Yes</label>
<input type='radio' name='videoloop' id='loopOff' value='off' style='display:none;' <?php echo ($user_settings['videoloop'] == 'off' ? "checked" : ""); ?>>
<label for='loopOff'>No</label>
</div>
</fieldset>
<fieldset style='width:100%'>
<legend>User Interface</legend>
<h2>Theme.</h2>
<select name='theme' onChange='themecheck(this)'>
<?php
foreach(themes("list") as $name){
echo "<option value='$name' ".($user_settings['theme'] == $name ? "selected" : "").">$name</option>";
}
echo "<option value='custom' ".($user_settings['theme'] == "custom" ? "selected" : "").">custom</option>";
?>
</select>
<div id="customtheme"<?php echo ($user_settings['theme'] == "custom" ? "" : "style='display:none;'");?>>
<fieldset>
<legend>Custom Colors</legend>
Foreground:<br>
<input type="color" name="fg" value="#<?php echo (!empty($theme) ? $theme['fg'] : "#ffffff");?>"><br><br>
Background:<br>
<input type="color" name="bg" value="#<?php echo (!empty($theme) ? $theme['bg'] : "#2b475d");?>"><br><br>
Text Color:<br>
<input type="color" name="tx" value="#<?php echo (!empty($theme) ? $theme['tx'] : "#000000");?>"><br><br>
Link Color:<br>
<input type="color" name="lc" value="#<?php echo (!empty($theme) ? $theme['lc'] : "#4682b4");?>"><br><br>
Border Color:<br>
<input type="color" name="bc" value="#<?php echo (!empty($theme) ? $theme['bc'] : "#ffffff");?>"><br><br>
Border Width:<br>
<input type="text" name="bw" value="<?php echo (!empty($theme) ? $theme['bw'] : "0");?>"><br><br>
Border Radius:<br>
<input type="text" name="br" value="<?php echo (!empty($theme) ? $theme['br'] : "3");?>"><br><br>
</fieldset>
</div>
</fieldset>
<br><br>
<br><br>
<input type="submit" value="Save" id="send" onClick='return false;'>
</form>
</div>
</div>
</div>

347
modules/timeline.php Normal file
View File

@ -0,0 +1,347 @@
<?php
/* this file will fetch and render the posts of a timeline based
on the options of the user_settings cookie and the url query.
a "timeline" may be something like TWKN or just a single post
*/
list($thread, $next) = timeline(array_merge($tl, $user_settings));
/*
if the timeline requested is the first part of an user profile it will render first
the user profile header, i may move this to it's own place in the future but
for now it's here.
*/
if (isset($_GET['user']) && (!isset($_GET['next']) && !isset($_GET['since']))) {
list($info, $rel) = user_info($_GET['user']);
$template = themes("get","templates/profileheader.txt");
$profile['mainColor'] = averageColor($info['avatar']);
$profile['header'] = $info['header_static'];
/* display user buttons (block, mute, list, etc) for loged in users only */
$profile['top'] = ($logedin ? "<span id='" . $info['id'] . "' class='profileButton profileMenu' style='position:relative;'>&#xe811;
<div class='menu' style='width:80px; position:absolute; background-color:yellow; top:25px; display:none;'>
<div id='" . $info['id'] . "' class='profileButton " . ($rel[0]['muting'] ? "un" : "") . "mute' style='width:100%; border-radius:0px;'>" . ($rel[0]['muting'] ? "&#xe81a; Unmute" : "&#xe81b; Mute") . "</div>
<div id='" . $info['id'] . "' class='profileButton " . ($rel[0]['blocking'] ? "un" : "") . "block' style='width:100%; border-radius:0px;'>" . ($rel[0]['blocking'] ? "&#xe80d Unblock" : "&#xe813; Block") . "</div>
</div>
</span>" : "");
if ($logedin && $rel[0]['following']) {
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton listmenu' style='position:relative;'>Lists &#xe80b;
<div class='menu' style='width:120px; position:absolute; background-color:yellow; top:25px; left:00px; display:none;'><ul>";
$userlist = api_get("accounts/" . $info['id'] . "/lists");
$listids = array();
foreach ($userlist as $lst) {
$listids[] = $lst['id'];
}
$lists = api_get("/lists");
foreach ($lists as $list) {
$profile['top'] .= "<a href='?action=addtolist&user=" . $info['id'] . "&list=" . $list['id'] . "' id='" . $info['id'] . "' list='" . $list['id'] . "' class='" . (in_array($list['id'], $listids) ? 'rutl' : 'autl') . "' onClick='return false;'><li>" . $list['title'] . "</li></a>";
}
$profile['top'] .= "<a href='?page=lists' class='ldr' onClick='return false;'><li>Manage Lists</li></a>";
$profile['top'] .= "
</ul></div>
</span>";
}
if ($logedin) {
if ($rel[0]['following']) {
$label = "&#xe80c; Following";
$class = "unfollow";
}
else {
if ($info['locked']) {
if ($rel[0]['requested']) {
$label = "&#xe806; Follow Requested";
$class = "unfollow";
}
else {
$label = "&#xe806; Request Follow";
$class = "follow";
}
}
else {
$label = "&#xf234; Follow";
$class = "follow";
}
}
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton $class'>$label</span>";
}
/* The NSFW button is available even to non logged in users, the value is stored in a cookie */
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton " . (in_array($info['id'], $user_settings['nsfw']) ? "unnsfw" : "nsfw") . "'>" . (in_array($info['id'], $user_settings['nsfw']) ? "NSFW <span class='fontello'>&#xf205;</span>" : "NSFW <span class='fontello'>&#xf204;</span>") . "</span>";
/* display some indicators (blocked, muting, etc) for loged in users only */
if ($logedin) {
$profile['bottom'] = "
" . ($info['locked'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'>&#xe819; Locked</span>" : "") . "
" . ($rel[0]['followed_by'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'>&#xe80c; Follows You</span>" : "") . "
" . ($rel[0]['blocking'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'>&#xe82c; Blocked</span>" : "") . "
" . ($rel[0]['muting'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'>&#xe813; Muted</span>" : "") . "
";
}
else {
$profile['bottom'] = "";
}
/* some values are processed from the profile and stored in the $profile array*/
$profile['avatar'] = $info['avatar'];
$profile['name'] = emojify($info['display_name'], $info['emojis'], 40);
$profile['acct'] = $info['acct'];
$profile['url'] = $info['url'];
$profile['note'] = emojify(trim($info['note']) , $info['emojis']);
$profile['statuses'] = $info['statuses_count'];
$profile['following'] = $info['following_count'];
$profile['followers'] = $info['followers_count'];
/* now we replace the text of the index of $profile array with the contents of the index
in the fetched template */
foreach ($profile as $key => $value) {
$template = str_replace(":$key:", $value, $template);
}
echo $template;
}
elseif (!isset($_GET['next']) && !isset($_GET['since'])) {
echo "<div class='element'></div>";
}
/*
if the timeline array is empty or the content is not a post, we just display an error message.
*/
if ((!isset($thread[0]['id']) && !empty($thread)) || !is_array($thread)) {
//echo "<div class='element'><div class='avatar'></div><span class='button error'> Error loading the timeline. " . json_encode($thread) . "</span></div>";
} else {
$e = 0;
/* process all the posts on the timeline */
foreach ($thread as $elem) {
$post = array();
/* pid is the ABSOLUTE id of a post, not linked to the relative id,
a retweet has a different absolute id than the post that was retweeted */
$post['pid'] = $elem['id'];
$post['replyto'] = "";
$post['rt'] = "";
/* if the post is a retweet, we'll flag it as such and fetch the data of the post entity
from the "reblog" key
*/
if ($elem['reblog'] != null) {
$post['name'] = "<b><span id='" . $elem['reblog']['account']['id'] . "' class='user'><a class='link ldr' href='?user=" . $elem['reblog']['account']['id'] . "'>" . emojify($elem['reblog']['account']['display_name'], $elem['reblog']['account']['emojis'], 15) . "</a></span></b>";
$post['replyto'] = "<span>" . ($elem['reblog']['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $elem['reblog']['in_reply_to_id'] . "' href='?thread=" . $elem['reblog']['in_reply_to_id'] . "'>&#xf112;</a>" : "") . "</span>";
$post['rt'] = "<span>[ <span style='font-family:fontello'> &#xe826; </span> by <img src='" . $elem['account']['avatar'] . "' width=30 style='vertical-align:middle; border-radius:30px;'> <a class='link ldr user' id='" . $elem['account']['id'] . "' href='?user=" . $elem['account']['id'] . "'><span class='desktop'>" . emojify($elem['account']['display_name'], $elem['account']['emojis'], 15) . "</span><span class='mobile'>@" . explode("@", $elem['account']['acct']) [0] . "</span></a> ]</span>";
$elem = $elem['reblog'];
}
else {
$post['name'] = "<span style='position:relative;'><b><span id='" . $elem['account']['id'] . "' class='user'><a class='link ldr' href='?user=" . $elem['account']['id'] . "'>" . emojify($elem['account']['display_name'], $elem['account']['emojis'], 20) . "</a></span></span></b><span class='desktop' style='font.size:10px;'> (" . $elem['account']['acct'] . ")</span> ";
$post['replyto'] = "<span>" . ($elem['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $elem['in_reply_to_id'] . "' href='?thread=" . $elem['in_reply_to_id'] . "'>&#xf112;</a>" : "") . "</span>";
}
/* if the poster ID was flagged as NSFW by the user, the post is flagged
as sensitive by default */
if (in_array($elem["account"]['id'], $user_settings['nsfw'])) {
$elem['sensitive'] = true;
}
/* if the settings say to avoid showing posts with NSFW content, we skip to the next post */
if ($user_settings['explicit'] == "hide" && $elem['sensitive'] == true && $tl['mode'] != "thread") {
continue;
}
/* if this thread has been hidden by the user, we skip to the next one
note that the "conversation_id" post key is only available with pleroma servers
*/
if (@in_array($elem["pleroma"]['conversation_id'], $user_settings['hide'])) {
continue;
}
/* the $json array stores some data about the thread that is embedded inside the
html of the post and is mostly used by the javascript portion of the FE. It stores
the id of the post, the visibility and who was mentioned in the post.
*/
$json['id'] = $elem['id'];
$json['scope'] = $elem['visibility'];
if ($logedin) {
$pos['mentions'] = "";
$array = $elem["mentions"];
$json['mentions'] = ($user_settings['acct'] == $elem["account"]['acct'] ? "" : "@" . $elem["account"]['acct']) . " ";
if (!empty($array)) {
foreach ($array as $mnt) {
if ($mnt['acct'] != $user_settings['acct']) {
$json['mentions'] .= "@" . $mnt['acct'] . " ";
}
}
}
}
$post['json'] = json_encode($json);
/* the options menu of the post */
$post['menu'] = "<ul>";
if ($logedin) {
$post['menu'] .= ($elem['account']['id'] == $user_settings['uid'] ? "<li><a href='?action=delete&thread=" . $elem['id'] . "' onClick='return false;' class='delete fontello' id=':id:'>&#xe80e; Delete Post</a></li>" : "");
$post['menu'] .= "<li><a href='?action=compose&quote=" . $elem['id'] . "' onClick='return false;' class='quote fontello' id='" . $elem['id'] . "' style='background-color:transparent;'>&#xf10e; Quote Post</a></li>";
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&user=" . $elem['account']['id'] . "' onClick='return false;' class='mute fontello' id='" . $elem['account']['id'] . "' style='background-color:transparent;'>&#xe81b; Mute User</a></li>" : "");
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&thread=" . $elem['account']['id'] . "' onClick='return false;' class='muteconv fontello' id='" . $elem['id'] . "' style='background-color:transparent;'>&#xf1f7; Drop Thread</a></li>" : "");
$post['menu'] .= (isset($user_settings['pleroma']) ? "<li><a href='?action=hide&thread=" . $elem['pleroma']['conversation_id'] . "' onClick='return false;' class='hide fontello' id='" . $elem['pleroma']['conversation_id'] . "' style='background-color:transparent;'>&#xf1f8; Hide Thread</a></li>" : "");
$post['menu'] .= (isset($user_settings['pleroma']) ? "<li><a href='?action=bookmark&thread=" . $elem['account']['id'] . "' onClick='return false;' class='" . ($elem['bookmarked'] == true ? "un" : "") . "bookmark fontello' id='" . $elem['id'] . "' style='background-color:transparent;'>&#xe81e; " . ($elem['bookmarked'] == true ? "Unb" : "B") . "ookmark</a></li>" : "");
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=nsfw&user=" . $elem['account']['id'] . "' onClick='return false;' class='nsfw fontello' id='" . $elem['account']['id'] . "' style='background-color:transparent;'>&#xe829; User is NSFW</a></li>" : "");
}
$post['menu'] .= "<li><a target='_blank' href='" . $elem['url'] . "' class='original link fontello' style='background-color:transparent;'>&#xf14c; Original Note</a></li>";
$post['menu'] .= "</ul>";
$post['style'] = "";
$post['id'] = $elem['id'];
$post['avatar'] = $elem['account']['avatar'];
$post['text'] = processText($elem);
$post['spoiler'] = (empty($elem['spoiler_text']) ? "" : "<span style='font-weight:bold;font-size:20px;'>" . $elem['spoiler_text'] . "</span><br>");
$post['media'] = "";
$urls = get_urls(strip_tags($elem['content'], '<br><br \>'));
/* embed videos in the post via invidio.us if there are youtube links */
if (!empty($urls)) {
foreach ($urls as $url) {
parse_str(parse_url($url, PHP_URL_QUERY) , $my_array_of_vars);
if (isset($my_array_of_vars['v'])) {
$post['media'] = "<embed class='desktop' width='620' height='415' src='https://invidio.us/embed/" . $my_array_of_vars['v'] . "'>";
}
}
}
/* embed the media attachments to the post... */
if (!empty($elem['media_attachments'])) {
/* ...only if there are attachments and the user hasn't turned off the attachments in the settings */
if ($user_settings['attach'] != "off"){
$images = count($elem['media_attachments']);
$class = ($images === 1 ? "" : ($images > 4 ? "class='smaller'" : "class='small'"));
foreach ($elem['media_attachments'] as $file) {
$ext = explode(".", $file['url']);
$ext = end($ext);
$ext = explode("?", $ext) [0];
if (in_array($ext,array('webm','mp4'))) {
$post['media'] .= "<div style='overflow:hidden; float:left; margin:2px;' $class><video preload='metadata' style='text-align:center; max-width:100%; max-height:100%;' controls ".($user_settings['videoloop'] == "on" ? "loop" : "").">
<source src='" . $file['url'] . "' type='video/$ext'>
</video></div>
";
}
elseif (in_array($ext,array('mp3','ogg','oga','opus'))) {
$post['media'] .= "<div style='text-align:center; width:100%;'><audio controls>
<source src='" . $file['url'] . "' type='audio/$ext'>
Your browser does not support the audio tag.
</audio> </div>";
}
else {
/* we'll either hide the attachment or assign a css class depending on the user's settings */
if ($elem['sensitive'] == true && $user_settings['explicit'] != 'off') {
$post['media'] .= " <div style='overflow:hidden; float:left; margin:2px;' $class>
<div class='toggleblur' style='height:25px;'>&#xe81b; Blur</div>
<a target='_blank' href='" . $file['url'] . "' onClick='return false;' style='width:100%;' class='blur'>
<noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript>
<img " . ($e < 2 ? "src='" . $file['url'] . "'" : "data-src='" . $file['url'] . "'") . " class='lazyload' style='max-width:100%; max-height:100% vertical-align:middle;'>
</a>
<a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox' style='display:none;'>
<img src='" . $file['url'] . "' class='lazyload' style='width:100%;'>
</a>
</div>";
}
else {
$post['media'] .= "<div style='margin:0px; background-color:#000;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox'><img " . ($e < 2 ? "src='" . $file['url'] . "'" : "data-src='" . $file['url'] . "'") . " class='lazyload' style='" . ($images === 1 ? "width:100%;" : "max-width:100%; max-height:100%;") . " vertical-align:middle;'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript></a></div>";
}
}
}
} else {
/* if the user turned off attachments we'll only show a link to it */
$post['text'] .= "<br><br>\n";
foreach ($elem['media_attachments'] as $file) {
$post['text'] .= "<span class='fontello'>&#xe818;</span><a href='".$file['url']."' target='_blank' onClick='return false;' class='open-lightbox'>See attachment ".($elem['sensitive'] == true ? "(NSFW)" : "")."</a><br>\n";
}
}
}
$public = "&#xe83c;";
$private = "&#xe819;";
$unlisted = "&#xe816;";
$direct = "&#xf0e0;";
/* the code of the post footer (date, visibility and like/reblog buttons */
$post['footer'] = "<div style='float:left; color:darkgray;'>
<a style='text-decoration:none;color:darkgray;' class='ldr' target='_blank' href='?thread=" . $elem['id'] . "&instance=$srv" . "'>" . date("d/m/y H:i", strtotime($elem['created_at'])) . "</a> - <span class='fontello'>" . $$elem['visibility'] . " </span>
</div>
<div class='post_buttons' id='" . $elem['id'] . "'>
" . ($logedin ? "<div class='felem'><a onClick='return false' class='replyform' href='?thread=" . $elem['id'] . "' style='font-family:fontello; vertical-align:middle;' alt='reply'>&#xf112;</a></div>" : "") . "
<div class='felem'><a onClick='return false' " . ($logedin ? "class='" . ($elem['favourited'] == true ? "unfav" : "fav") . "' href='?action=true&mode=".($elem['favourited'] == true ? "off" : "true")."&fav=" . $elem['id'] . "'" : "class='notAllowed'") . " style='font-family:fontello; vertical-align:middle;'>&#xe802; <span>" . $elem['favourites_count'] . "</span></a></div>
<div class='felem'><a onClick='return false' " . ($logedin && ($elem['visibility'] == "public" || $elem['visibility'] == "unlisted") ? "class='" . ($elem['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=true&mode=".($elem['reblogged'] == true ? "off" : "on")."&reblog=" . $elem['id'] . "'" : "class='notAllowed'") . " style='font-family:fontello; vertical-align:middle;'>&#xe83a; <span>" . $elem['reblogs_count'] . "</span></a></div>
<div class='felem'><a class='replies' onClick='return false' href='?thread=" . $elem['id'] . "' style='font-family:fontello; vertical-align:middle;'>&#xe827; <span>" . $elem['replies_count'] . "</span></a></div>
</div>";
$post['form'] = ($tl['mode'] == 'thread' && $logedin ? str_replace(array(
":id:",
":content:"
) , array(
$elem['id'],
$json['mentions']
) , themes("get","templates/replyform.txt")) : "");
$post['ancestors'] = " ";
$post['descendants'] = " ";
$post['notes'] = "";
/* if the timeline is a single post, we'll fetch the replies and notes */
if ($tl['mode'] == 'thread') {
$replies = ($tl['mode'] == "thread" ? getreplies($tl['thread']) : false);
$notes = ($tl['mode'] == "thread" ? getnotes($tl['thread']) : false);
foreach ($replies as $e) {
if ($e['mode'] == 'ancestor') {
$post['ancestors'] .= render_reply($e['content']);
}
else {
$post['descendants'] .= render_reply($e['content']);
}
}
if ($notes) {
foreach ($notes as $note) {
$post['notes'] .= "<div id='" . $note[1]['id'] . "'>
<a href='?user=" . $note[1]['id'] . "' class='ldr' title='" . $note[1]['acct'] . "'>
<div class='nte' style='background-image:url(" . $note[1]['avatar'] . ");'>
<div class='nte_type' style='background-color:" . ($note[0] == "fav" ? "red" : "green") . "'><span>" . ($note[0] == "fav" ? "&#xe802;" : "&#xe826;") . "</span></div>
</div>
</a>
</div>";
}
}
}
if ((empty($elem['media_attachments']) && $post['media'] == "") || (!(empty($elem['media_attachments']) && $post['media'] == "") && $user_settings['attach'] == "off")) {
$post['template'] = themes("get","templates/textpost.txt");
}
else {
$post['template'] = themes("get","templates/post.txt");
}
foreach ($post as $key => $value) {
$post['template'] = str_replace(":$key:", $value, $post['template']);
}
echo $post['template'];
unset($post);
$e++;
}
if ((!isset($_GET['next']) || (isset($_GET['next']) && !isset($_GET['ajax']))) && !isset($_GET['since']) && !isset($_GET['thread'])) {
$query = http_build_query(array_filter(array(
'user' => (isset($tl['user']) ? $tl['user'] : false) ,
'mode' => $tl['mode']
)));
echo "<div class='element'><div class='avatar' style='height:0px;'></div><div class='loadmore' style='display:table-cell; height:50px; line-height:50px;'><a class='link' onClick='return false;' style='margin:5px;' href='?next=$next&" . $query . "'>Load More Posts</a></div></div>";
}
}
?>

38
pages/about.php Normal file
View File

@ -0,0 +1,38 @@
<div class='element'>
<div class='avatar' style='height:0px;'></div>
<div class='post' style='text-align:left;'>
<div style='padding:15px; text-align:left; display:inline-block;' id="settings">
<h1><span class='fontello' style='font-size:inherit;'>&#xe814;</span> About Dashboard FE</h1>
<br>
<p>Dashboard FE (#DashFE for short) is a third-party client or fronted for Pleroma and Mastodon servers, writen in PHP, which design inspires on the look and feel of the Tumblr user dashboard. This frontend puts special emphasis on displaying posts with attached media, being images, video or music.</p>
<p>Currently a work in progress, #DashFE is being developed by <a href='https://stereophonic.space/daisuke' target='_blank' class='link' style='font-weight:bold;'>Daisuke</a> and it's in a constant state of change, so features present may change or improve over time.</p>
<p>The source code of the project is currently being hosted at https://notabug.org/daisuke/DashboardFE</p>
<p>DashFE Key Features:
<ul>
<li>Emphasis on posts with media attachments</li>
<li>Ability to mark all posts by an user as NSFW</li>
</ul>
</p>
<p>DashFE Project Policies:
<ul>
<li>Keep things as simple as possible</li>
<li>Keep dependencies on external libraries at a minimum</li>
<li>Allow access to nojs users</li>
<li>Keep the user in contol of their data</li>
<li>Empower the user to create a custom fediverse experience</li>
</ul>
</p>
<p>Known issues:
<ul>
<li>If after entering your user@instance on the login page you are returned to the main page of DashFE witouth having being loged in, check if you are currently logged in into your Pleroma's MastoFE GUI. Try logging out and then logging in here again.</li>
</ul>
</p>
</div>
</div>
</div>

24
pages/fediverse.php Normal file
View File

@ -0,0 +1,24 @@
<div class='element'>
<div class='avatar' style='height:0px;'></div>
<div class='post' style='text-align:left;'>
<div style='padding:15px; text-align:left; display:inline-block;' id="settings">
<h1><span class='fontello' style='font-size:inherit;'>&#xf1e0;</span> The Fediverse</h1>
<br>
<p>In the same way as Twitter or Tumblr, the Fediverse is a microblogging service that allows you to share posts, photos and video, in addition to allowing other users of the network to follow you and be able to follow them to see their updates.</p>
<p>The main difference that the fediverse have with respect to services such as Twitter is that it is not a centralized service dependent on a single entity or company, but that it is a set of interconnected nodes that form a large network and where there is no unique node or entity that is responsible for regulating or organizing the rest.</p>
<p>As it was said, the fediverse is organized into something called "Nodes", which are servers running one of several types of existing servers. It doesn't matter on which node you want to create an account, because due to the interconnection you can follow and be followed by any other user at any other point in the fediverse, regardless of whether they are running a different server system.</p>
<p style='color:red;'><strong>Note: Due to differences in political opinion, some servers decide to block their communication with other fediverse servers, so in some of them the federation may not be complete, so that other people may not be able to follow or read your posts. We recommend reading the registration terms and regulations of the instance you wish to register to be informed about this fact.</strong></p>
<p>The fediverse server software available, despite being written in different languages, can communicate with each other through a protocol called "ActivityPub". These nodes are provided by the same community of users and administrators and each has its own administrators, users and rules to follow. If you don't like one node you can choose to move to another or even install your own server with your own rules and terms of use, while still being able to communicate with the rest.</p>
<p>Unlike private services, users are free to use one of several of the currently available server software, all of them being free and open software. There are a wide variety of them, all with their own particular characteristics and built using different programming languages, but usually all require a virtual private server (VPS) or dedicated server to run. Some of the most commonly used servers are <a href='https://pleroma.social/' target='_blank' style='font-weight:bold;' class='link'>Pleroma</a>, <a href='https://joinmastodon.org/' target='_blank' style='font-weight:bold;' class='link'>Mastodon</a> and <a href='https://github.com/syuilo/Misskey' target='_blank' style='font-weight:bold;' class='link'>Misskey</a>.</p>
<p>Dashboard FE is <strong>NOT</strong> a fediverse server, but it is a Frontend that interacts with Pleroma or Mastodon servers. To make use of Dashboard FE you need to have an account on a server running one of these software. When not logged in, the DashboardFE homepage uses the view of the fediverse from the point of view of the server <a href='https://mastodon.social' target='_blank' style='font-weight:bold;' class='link'>mastodon.social</a> but once you log in it will display the main timeline of your account's node.</p>
<p>To learn more about the fediverse and its servers you can visit the page of <a href='https://fediverse.party/' target='_blank' style='font-weight:bold;' class='link'>fediverse.party</a>, as well as the page of <a href='https://fediverse.network' target='_blank' style='font-weight:bold;' class='link'>fediverse.network</a> to see a real-time list of the instances that currently make up the fediverse, most of them open and where you You can create a user account to interact with the rest of the community.</p>
</div>
</div>
</div>

10
pages/privacy.php Normal file
View File

@ -0,0 +1,10 @@
<div class='element'>
<div class='avatar' style='height:0px;'></div>
<div class='post' style='text-align:left;'>
<div style='padding:15px; text-align:left; display:inline-block;' id="settings">
<h1><span class='fontello' style='font-size:inherit;'>&#xe819;</span> Privacy Policy</h1>
<br>
<p>Dashboard FE does not use any kind of database so all user data (user settings, information and auth tokens) are stored client side. When you log in you use your instance's login form so Dashboard FE has NO WAY of knowing your user and password. If you feel your Dashboard FE session has been compromised, you can always go to your instance's user settings and revoke the access to Dashboard FE.</p>
</div>
</div>
</div>

11
settings.php Normal file
View File

@ -0,0 +1,11 @@
<?php
//name of your particular DashboardFE instance, give it any name.
$setting['appname'] = "DASHBAORD FE";
//url of your DashboardFE instance without trailing slash
$setting['url'] = "https://your.url/dir";
//Short description
$setting['description'] = "<p>Dashboard FE (or DashFE if you like it) it's a third party client/frontend for Pleroma and Mastodon that tries to mimic the look and feel of the Tumblr user dashboard, putting big emphasis in a timeline filled by media of all types</p> <p>Currently a Work in Progress, DashFE can actually be used but it's very possible that there are still rough edges, missing features and stuff that needs to be corrected and/or optimized. Issues, suggestion or sugerences please contact <b>@daisuke@stereophonic.space</b> via your favorite fediverse account.</p><p>Thank You</p>";
?>

45
status.php Normal file
View File

@ -0,0 +1,45 @@
<?php
ini_set('display_errors', 1);
ini_set("log_errors", 1);
error_reporting(E_ALL);
include "settings.php";
include "include/init.php";
include "include/functions.php";
$media_id = array();
if (!is_null($token) && (isset($_FILES['file']) || isset($_POST['status']))){
if(isset($_FILES['file'])){
$cnt = count($_FILES['file']['name']);
for ($n = 0; $n <= $cnt-1; $n++){
$video = 0;
$errors= array();
$file_name = $_FILES['file']['name'][$n];
$file_size =$_FILES['file']['size'][$n];
$file_tmp =$_FILES['file']['tmp_name'][$n];
$file_type=$_FILES['file']['type'][$n];
@$file_ext=strtolower(end(explode('.',$_FILES['file']['name'][$n])));
$expensions= array("jpeg","jpg","png","gif","mp4","webm");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if(empty($errors)==true){
move_uploaded_file($file_tmp, $file_name);
$media_id[] = json_decode(uploadpic($file_name),true)[0];
unlink($file_name);
}else{
//print_r($errors);
//echo "error";
}
}
}
$result = sendpost(trim($_POST['status']),$media_id,$_POST['thread'],false,$_POST['scope'],(isset($_POST['sensitive']) ? $_POST['sensitive'] : false),(isset($_POST['spoiler']) && $_POST['spoiler'] != 'Title (optional)' ? $_POST['spoiler'] : false));
//file_put_contents("output.txt",var_export($media_id,true));
header('Location: '.$setting['url'].'?mode=home');
}
?>

View File

@ -0,0 +1,258 @@
a, .link {
color: #04a0c6;
}
body {
background-color: #7dbcda;
}
select{
color: #373737;
background-color:white;
}
label {
color: gray;
}
input[type="radio"]:checked+label {
color: black;
}
input[type="checkbox"]:checked+label {
color: red;
}
.topbar {
background-color: #373737;
}
.gotop {
background-color: rgba(255, 255, 255, 0.5);
}
.gotop a {
color: white;
}
.topicon {
color: white;
}
.tiselected {
border-bottom: 2px solid white;
}
.badge {
color: white;
}
.alert {
background-color: red;
}
#notifications {
background-color:white;
box-shadow: 1px 1px 1px black;
}
.notif{
border-bottom:1px solid lightgray;
background-color:white;
color:black;
-webkit-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);-moz-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);
}
.text {
color:black !important;
}
.notif .post_buttons{
background-color:white;
}
.toggleblur{
background-color: #04a0c6;
color: #373737;
}
.new {
background-color:white;
}
.side_element {
background-color: white;
color: #04a0c6;
}
.side_element li:hover {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element li:active {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element a {
color: #04a0c6;
}
.uploadBox {
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.delpic {
color:red;
background-color:white;
}
#quicksend,#send {
background-color:#04a0c6;
border: 1px solid #04a0c6;
color:white;
}
.formbtn {
color:#04a0c6;
}
.formbtn label{
color:#04a0c6;
}
.profile,.loader {
background-color:white;
}
.menu,.menu li {
background-color: white;
}
.postMenu div{
box-shadow: 1px 1px 2px black;
}
.postMenu li:hover {
background-color:#203960 !important;
}
.postMenu li a{
color:#203960;
}
.postMenu li:hover a{
color:white;
}
.listmenu li {
background-color:black;
color:white;
}
.listmenu li:hover {
background-color:white;
color:black;
}
.autl:hover li{
background-color:lightgreen !important;
}
.rutl:hover li{
background-color:crimson !important;
}
.unblock,.unmute,.block,.mute,.follow,
.unfollow,
.nsfw,
.unnsfw,
.profileMenu,
.listmenu {
background-color: black;
color: white;
cursor: pointer;
}
.mute:hover,.block:hover,.follow:hover,
.nsfw:hover {
background-color: lime;
}
.unmute:hover,.unblock:hover,.unfollow:hover,
.unnsfw:hover{
background-color: crimson !important;
}
.unbookmark{
color: crimson !important;
}
.unfav, .unreblog{
color: red !important;
}
.element_pad > .post {
border-left:3px solid #0b82d2;;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.post,
.rb,
.textonly,
.loadmore {
background-color: white;
border: 1px solid #8fa9b8;
}
.postform {
background-color: white;
border: 1px solid #8fa9b8
}
.previewpost {
background-color: white;
border: 1px solid darkgray;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.userinfo {
background-color: white;
border: 1px solid darkgray;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.icon {
background-color: black;
}
.post_footer {
background-color: #eee;
}
.post_buttons {
color: #0b82d2;
}
.reply {
background-color: #f5f5f5;
border-bottom: 1px solid #666;
}
.note {
background-color: #ccc;
}
.button {
background-color: white;
}
.setting label {
background-color: lightgray;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.setting input[type="radio"]:checked+label {
background-color:#04a0c6;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: white;
}

View File

@ -0,0 +1,669 @@
/* overall */
* {
font-family: arial, helvetica, sans-serif;
font-size: 12pt;
}
a {
text-decoration:none;
}
h1 {
font-size:20px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.desktop{
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100vw;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100vw;
clear: both;
display: inline-block;
text-align: center;
}
.container {
width: 100% !important;
display: inline-block;
text-align: center;
}
#posts {
width: 100% !important;
}
.content {
width: 100%;
display: inline-block;
margin:0px !important;
text-align: left;
word-break: break-all;
}
aside {
display:none !important;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
z-index:50;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
left: 0px;
bottom: 0px;
width: 100vw;
height: auto;
z-index: 99;
}
/* topbar elements */
.mid {
display:none;
}
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: fixed;
left: 0px;
top: 45px;
width: 100vw;
max-height: 400px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:100%;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
display:none;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
color: lightgray;
}
.side_element a {
color: lightgray;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 90% !important;
clear: both;
display: inline-block;
margin-top: 3px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: -4px;
}
.element_pad {
margin-top: 10px;
margin-bottom: 10px;
}
.profile {
float:left;
background-color:white;
border-radius:5px;
//width:650px;
width:100%;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu,.listmenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
display:none;
width: 50px;
background-size: cover;
height: 50px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.loader,
.loadmore,
.rb,
.textonly,
.profile {
width: 100% !important;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
display:none;
position:fixed;
width: 100vw !important;
left:0px;
top:45px;
text-align: center;
border-radius: 3px;
z-index: 99;
}
#postform {
display:none;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.postHeader *,.post_footer *{
font-size:small;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:-198px;
width: 300px;
height: 200px;
border-radius:3px;
}
.userinfo_co {
width: 280px;
margin: 10px;
}
.userinfo_he {
width: 300px;
height: 100px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 48% !important;
height: 321px;
line-height: 321px;
background-color: black;
float:left;
margin:2px !important;
}
.smaller {
width: 31% !important;
height: 212px;
line-height: 212px;
background-color: black;
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
/*
.lightbox-opened {
//background-color: #333;
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
left: 0;
overflow-y: scroll;
padding: 24px;
position: fixed;
text-align: center;
top: 0;
width: 100%;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
*/
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello, sans-serif;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1,636 @@
/* overall */
html {
scroll-behavior: smooth;
}
* {
font-family: arial, helvetica, sans-serif;
font-size: 11pt;
}
a {
text-decoration: none;
}
h1 {
font-size:30px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.mobile {
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100%;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100%;
clear: both;
display: inline-block;
text-align: center;
}
.container {
display: inline-block;
text-align: center;
}
#posts {
width: 800px;
float: left;
}
aside {
margin-top: 5px;
width: 280px;
float: left;
display: inline-block;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
right: 10px;
bottom: 115px;
width: 350px;
height: auto;
}
/* topbar elements */
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.ntbutton {
position:relative;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: absolute;
right: -20px;
top: 45px;
width: 350px;
max-height: 500px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:330px;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
border-radius: 3px;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
}
.side_element li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
float:left;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: -6px;
}
.element_pad {
margin-top: 10px;
margin-bottom: 10px;
}
.profile,.loader {
float:left;
border-radius:5px;
width:650px;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
width: 80px;
background-size: 80px;
height: 80px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.rb,
.textonly,
.loadmore {
width: 650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
width:650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
display:block !important;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:15px;
width: 300px;
height: auto;
border-radius:3px;
line-height:initial;
z-index:99;
}
.userinfo_upper{
top:-100px;
}
.userinfo_co {
width: 280px;
margin: 10px;
text-align: center;
position:relative;
}
.userinfo_he {
width: 300px;
height: 150px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 321px !important;
height: 321px;
line-height: 321px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.smaller {
width: 212px !important;
height: 212px;
line-height: 212px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.content {
width: 600px;
display: inline-block;
margin:0px !important;
text-align: left;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1 @@
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>

View File

@ -0,0 +1,21 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='post' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left; line-height:30px;'><img src=':avatar:' width=30 class='mobile' style='vertical-align:middle; border-radius:30px'> :name: :rt: </span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span>
</span>
</div>
:spoiler:
<div class='media' style='text-align:center;'>:media:</div>
<div class='postbody'><div class='content' style='margin-bottom:5px;'>
:replyto: :text:
</div></div>
<div class='post_footer'>:footer:</DIV>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'><noscript>:form:</noscript>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,26 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='profile'>
<div style='width: 100%; height:250px; background-color:#:mainColor:; background-size:cover; background-image:url(:header:); display:inline-block; position:relative;'>
<span style='width:290; height:30px; display:block; margin-top:15px; margin-right:15px; float:right;'>
:top:
</span>
<span style='position:absolute; bottom:10px; left:10px;'>
:bottom:
</span>
</div>
<div style='width: 100%; position:relative; text-align:center; padding-bottom:15px;'>
<div class='avatar' style='background-color:white; background-size: cover; background-image:url(:avatar:); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:5px; width:80px; height:80px;'></div>
<br><span style='font-weight:bold; font-size:40px;'>:name:</span>
<br><span style='font-weight:bold;'><a href=':url:' target='_blank' class='link external'> @:acct:</a></span>
<br><span>:note:</span>
</div>
<div class='post_footer' style='width: inherit; text-align:center;'>
<div style='width:33%; text-align:center; float:left;'><b>Statuses</b><br>:statuses:</div>
<div style='width:33%; text-align:center; float:left;'><b>Following</b><br>:following:</div>
<div style='width:33%; text-align:center; float:left;'><b>Followers</b><br>:followers:</div>
<span style='font-size:9px;'>Data may be inaccurate, <a href=':url:' style='font-size:9px;' target='_blank' class='link'>visit profile directly</a> to see updated data.</span>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='rb' id=':id:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='post_header'>:name:</div>
<div class='media'>:media:</div>
<div class='content' style='margin-bottom:5px;'>
:spoiler:
:text:
</div>
<div class='post_footer'>:footer:</DIV>
<div id='r:id:' class='replies_container'>:form::descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
:notes:
</div>

View File

@ -0,0 +1,25 @@
<div class='reply :mode:' id=':id:'>
<div class='postHeader'>
<span style='margin:12px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
<a class='ldr link user' href='?user=:uid:' id=':uid:'>
<b>:name:</b>
</a>
<span class='desktop'>(:acct:)</span>
</span>
<span style='margin:10px; float:right; display:block;'>
<span class='postMenu fontello'>&#xf0c9;
<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div>
</span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin:0px;'>:media: :replyto: :text:</div>
</div>
<span style='width:100%; margin-bottom:10px; display:block;'>
<span style='margin-left:10px;'>:date:</span>
<span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span>
</span>
<div id=':id:' class='replies_container'></div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,39 @@
<div class='reply form' id='replyform' style='display:inline-block; width:100%'>
<div style='width:95%; margin: 10px auto; display:block;'>
<div style='text-align:right; background-color:white;'>
<form action='status.php' method='post' enctype='multipart/form-data'>
<input type='hidden' id='thread' name='thread' value=':id:'>
<div style='width:100%; border: 1px solid #ddd; text-align:left;'>
<div style='width:100% height:27px; border-bottom: 1px solid #ddd;'>
<input type='text' name='spoiler' value='Title (optional)' onClick='this.value=""' style='border:none; width:100%;'>
</div>
<textarea name='status' id="status" style='width:100%; height:100px; border:none;'>:content:</textarea>
</div>
<span style='float:left;'>
<input type='submit' value='Send' id='send' onClick='return false'>
<div class='formbtn fontello' style='position:relative;'>
&#xe818;
<input style='opacity:0; position:absolute; left:0px; top:5px; background-color:yellow;' type='file' id="files_input_field" name='file[]' multiple onchange="upload_files_reply();">
</div>
<div class='formbtn fontello' style='position:relative;'>
<input type='checkbox' name='sensitive' id='rsensitive' style='display:none;'>
<label for='rsensitive' class='fontello'>&#xe81b;</label>
</div>
</span>
<span style='float:left; margin-left:10px;' class='status'>
</span>
<span style='float:right;'>
<select name='scope' id='scope'>
<option id="public" value="1">&#xe83c; Public</option>
<option id="unlisted" value="2">&#xe816; Unlisted</option>
<option id="private" value="3">&#xe819; Private</option>
<option id="direct" value="4">&#xf0e0; Direct</option>
</select>
</span>
</form>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='post textonly' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
:name: :rt:
</span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin-bottom:5px; margin-top:5px;'>:spoiler: :replyto: :text:</div>
</div>
<div class='post_footer'>:footer:</div>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,262 @@
a, .link {
color: #425f99;
}
body {
background-color: #eceef1;
}
select{
color:#425f99;
background-color:white;
}
label {
color: #425f99;
}
input[type="radio"]:checked+label {
color: black;
}
input[type="checkbox"]:checked+label {
color: red;
}
.topbar {
background-color: #3b5998;
border-bottom: 2px solid #14468d;
}
.gotop {
background-color: rgba(66, 95, 153, 0.5);
}
.gotop a {
color: white;
}
.topicon {
color: white;
}
.tiselected {
border-bottom: 2px solid white;
}
.badge {
color: white;
}
.alert {
background-color: red;
}
#notifications {
background-color:white;
box-shadow: 1px 1px 1px black;
}
.notif{
border-bottom:1px solid lightgray;
background-color:white;
color:black;
-webkit-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);-moz-box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);box-shadow: inset -6px 73px 100px -117px rgba(209,209,209,1);
}
.notif a:not(.uname){
color:black !important;
}
#quicksend {
background-color: #305792;
border: 1px solid darkgray;
color: white;
}
.new {
background-color:white;
}
.nloadmore{
color:black !important;
}
.side_element {
background-color: #fff;
color: #4267b2;
border:2px solid #cdcfd1;
}
.side_element li:hover {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element li:active {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element a {
color: #4267b2;
}
.uploadBox {
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.delpic {
color:red;
background-color:white;
}
#send {
background-color:#4267b2;
border: 1px solid #425f99;
color:white;
}
.formbtn {
color:#305792;
}
.formbtn label{
color:#305792;
}
.profile,.loader {
background-color:white;
border:2px solid #cdcfd1;
}
.menu,.menu li {
background-color: white;
}
.postMenu div{
box-shadow: 1px 1px 2px black;
}
.postMenu li:hover {
background-color:#203960 !important;
}
.postMenu li a{
color:#203960;
}
.postMenu li:hover a{
color:white;
}
.listmenu li {
background-color:black;
color:white;
}
.listmenu li:hover {
background-color:white;
color:black;
}
.autl:hover li{
background-color:lightgreen !important;
}
.rutl:hover li{
background-color:crimson !important;
}
.unblock,.unmute,.block,.mute,.follow,
.unfollow,
.nsfw,
.unnsfw,
.profileMenu,
.listmenu {
background-color: black;
color: white;
cursor: pointer;
}
.mute:hover,.block:hover,.follow:hover,
.nsfw:hover {
background-color: lime;
}
.unmute:hover,.unblock:hover,.unfollow:hover,
.unnsfw:hover{
background-color: crimson !important;
}
.unbookmark{
color: crimson !important;
}
.unfav, .unreblog{
color: red !important;
}
.post,
.rb,
.textonly,
.loadmore {
background-color: white;
border:2px solid #cdcfd1;
}
.postform {
background-color: white;
border:2px solid #cdcfd1;
}
.previewpost {
background-color: white;
border: 1px solid darkgray;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.userinfo {
background-color: white;
border: 1px solid darkgray;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.toggleblur{
background-color: #425f99;
color: white;
}
.icon {
background-color: black;
}
.post_footer {
border-top:2px solid #dedfe1;
}
.post_buttons {
color: #425f99;
}
.reply {
background-color: #ddd;
border-bottom: 1px solid #666;
}
.note {
background-color: #ccc;
}
.button {
background-color: white;
}
.setting label {
background-color: lightgray;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.setting input[type="radio"]:checked+label {
background-color: #305792;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: white;
}

View File

@ -0,0 +1,656 @@
/* overall */
* {
font-family: arial, helvetica, sans-serif;
font-size: 12pt;
}
a {
text-decoration:none;
}
h1 {
font-size:20px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.desktop{
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100vw;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100vw;
clear: both;
display: inline-block;
text-align: center;
}
.container {
width: 100% !important;
display: inline-block;
text-align: center;
}
#posts {
width: 100% !important;
}
.content {
width: 100%;
display: inline-block;
margin:0px !important;
text-align: left;
word-break: break-all;
}
aside {
display:none !important;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
z-index:50;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
left: 0px;
bottom: 0px;
width: 100vw;
height: auto;
z-index: 99;
}
/* topbar elements */
.mid {
display:none;
}
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: fixed;
left: 0px;
top: 45px;
width: 100vw;
max-height: 400px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:100%;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
display:none;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
color: lightgray;
}
.side_element a {
color: lightgray;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 90% !important;
clear: both;
display: inline-block;
margin-top: 3px;
}
.profile {
float:left;
background-color:white;
border-radius:5px;
//width:650px;
width:100%;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu,.listmenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
display:none;
width: 50px;
background-size: cover;
height: 50px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.loader,
.loadmore,
.rb,
.textonly,
.profile {
width: 100% !important;
float: left;
text-align: center;
position: relative;
border-radius: 10px;
}
.postform {
display:none;
position:fixed;
width: 100vw !important;
left:0px;
top:45px;
text-align: center;
border-radius: 3px;
z-index: 99;
}
#postform {
display:none;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.postHeader *,.post_footer *{
font-size:small;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:-198px;
width: 300px;
height: 200px;
border-radius:3px;
}
.userinfo_co {
width: 280px;
margin: 10px;
}
.userinfo_he {
width: 300px;
height: 100px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 48% !important;
height: 321px;
line-height: 321px;
background-color: black;
float:left;
margin:2px !important;
}
.smaller {
width: 31% !important;
height: 212px;
line-height: 212px;
background-color: black;
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
border-radius: 10px;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
/*
.lightbox-opened {
//background-color: #333;
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
left: 0;
overflow-y: scroll;
padding: 24px;
position: fixed;
text-align: center;
top: 0;
width: 100%;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
*/
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello, sans-serif;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1,631 @@
/* overall */
html {
scroll-behavior: smooth;
}
* {
font-family: arial, helvetica, sans-serif;
font-size: 11pt;
}
a {
text-decoration: none;
}
h1 {
font-size:30px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.mobile {
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100%;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100%;
clear: both;
display: inline-block;
text-align: center;
}
.container {
display: inline-block;
text-align: center;
}
#posts {
width: 800px;
float: left;
}
aside {
margin-top: 5px;
width: 280px;
float: left;
display: inline-block;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
right: 10px;
bottom: 115px;
width: 350px;
height: auto;
}
/* topbar elements */
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.ntbutton {
position:relative;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: absolute;
right: -20px;
top: 45px;
width: 350px;
max-height: 500px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:330px;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
border-radius: 10px;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
}
.side_element li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
float:left;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: 5px;
}
.profile,.loader {
float:left;
border-radius:5px;
width:650px;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
width: 80px;
background-size: 80px;
height: 80px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.rb,
.textonly,
.loadmore {
width: 650px;
float: left;
text-align: center;
position: relative;
border-radius: 10px;
}
.postform {
width:650px;
float: left;
text-align: center;
position: relative;
border-radius: 10px;
display:block !important;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:15px;
width: 300px;
height: auto;
border-radius:3px;
line-height:initial;
z-index:99;
}
.userinfo_upper{
top:-100px;
}
.userinfo_co {
width: 280px;
margin: 10px;
text-align: center;
position:relative;
}
.userinfo_he {
width: 300px;
height: 150px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 321px !important;
height: 321px;
line-height: 321px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.smaller {
width: 212px !important;
height: 212px;
line-height: 212px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.content {
width: 600px;
display: inline-block;
margin:0px !important;
text-align: left;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
border-radius: 10px;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1 @@
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>

View File

@ -0,0 +1,21 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='post' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left; line-height:30px;'><img src=':avatar:' width=30 class='mobile' style='vertical-align:middle; border-radius:30px'> :name: :rt: </span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span>
</span>
</div>
:spoiler:
<div class='media' style='text-align:center;'>:media:</div>
<div class='postbody'><div class='content' style='margin-bottom:5px;'>
:replyto: :text:
</div></div>
<div class='post_footer'>:footer:</DIV>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'><noscript>:form:</noscript>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,26 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='profile'>
<div style='width: 100%; height:250px; background-color:#:mainColor:; background-size:cover; background-image:url(:header:); display:inline-block; position:relative;'>
<span style='width:290; height:30px; display:block; margin-top:15px; margin-right:15px; float:right;'>
:top:
</span>
<span style='position:absolute; bottom:10px; left:10px;'>
:bottom:
</span>
</div>
<div style='width: 100%; position:relative; text-align:center; padding-bottom:15px;'>
<div class='avatar' style='background-color:white; background-size: cover; background-image:url(:avatar:); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:5px; width:80px; height:80px;'></div>
<br><span style='font-weight:bold; font-size:40px;'>:name:</span>
<br><span style='font-weight:bold;'><a href=':url:' target='_blank' class='link external'> @:acct:</a></span>
<br><span>:note:</span>
</div>
<div class='post_footer' style='width: inherit; text-align:center;'>
<div style='width:33%; text-align:center; float:left;'><b>Statuses</b><br>:statuses:</div>
<div style='width:33%; text-align:center; float:left;'><b>Following</b><br>:following:</div>
<div style='width:33%; text-align:center; float:left;'><b>Followers</b><br>:followers:</div>
<span style='font-size:9px;'>Data may be inaccurate, <a href=':url:' style='font-size:9px;' target='_blank' class='link'>visit profile directly</a> to see updated data.</span>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='rb' id=':id:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='post_header'>:name:</div>
<div class='media'>:media:</div>
<div class='content' style='margin-bottom:5px;'>
:spoiler:
:text:
</div>
<div class='post_footer'>:footer:</DIV>
<div id='r:id:' class='replies_container'>:form::descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
:notes:
</div>

View File

@ -0,0 +1,25 @@
<div class='reply :mode:' id=':id:'>
<div class='postHeader'>
<span style='margin:12px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
<a class='ldr link user' href='?user=:uid:' id=':uid:'>
<b>:name:</b>
</a>
<span class='desktop'>(:acct:)</span>
</span>
<span style='margin:10px; float:right; display:block;'>
<span class='postMenu fontello'>&#xf0c9;
<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div>
</span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin:0px;'>:media: :replyto: :text:</div>
</div>
<span style='width:100%; margin-bottom:10px; display:block;'>
<span style='margin-left:10px;'>:date:</span>
<span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span>
</span>
<div id=':id:' class='replies_container'></div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,39 @@
<div class='reply form' id='replyform' style='display:inline-block; width:100%'>
<div style='width:95%; margin: 10px auto; display:block;'>
<div style='text-align:right; background-color:white;'>
<form action='status.php' method='post' enctype='multipart/form-data'>
<input type='hidden' id='thread' name='thread' value=':id:'>
<div style='width:100%; border: 1px solid #ddd; text-align:left;'>
<div style='width:100% height:27px; border-bottom: 1px solid #ddd;'>
<input type='text' name='spoiler' value='Title (optional)' onClick='this.value=""' style='border:none; width:100%;'>
</div>
<textarea name='status' id="status" style='width:100%; height:100px; border:none;'>:content:</textarea>
</div>
<span style='float:left;'>
<input type='submit' value='Send' id='send' onClick='return false'>
<div class='formbtn fontello' style='position:relative;'>
&#xe818;
<input style='opacity:0; position:absolute; left:0px; top:5px; background-color:yellow;' type='file' id="files_input_field" name='file[]' multiple onchange="upload_files_reply();">
</div>
<div class='formbtn fontello' style='position:relative;'>
<input type='checkbox' name='sensitive' id='rsensitive' style='display:none;'>
<label for='rsensitive' class='fontello'>&#xe81b;</label>
</div>
</span>
<span style='float:left; margin-left:10px;' class='status'>
</span>
<span style='float:right;'>
<select name='scope' id='scope'>
<option id="public" value="1">&#xe83c; Public</option>
<option id="unlisted" value="2">&#xe816; Unlisted</option>
<option id="private" value="3">&#xe819; Private</option>
<option id="direct" value="4">&#xf0e0; Direct</option>
</select>
</span>
</form>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='post textonly' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
:name: :rt:
</span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin-bottom:5px; margin-top:5px;'>:spoiler: :replyto: :text:</div>
</div>
<div class='post_footer'>:footer:</div>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,343 @@
a, .link {
color: blue;
}
body {
background-color: #008282;
}
select{
color:black;
background-color:white;
}
label {
color: #425f99;
}
textarea,input[type="text"]{
background-color:white;
border-bottom:2px solid #ffffff !important;
border-right:2px solid #ffffff !important;
border-top:2px solid #828282 !important;
border-left:2px solid #828282 !important;
}
.media{
border-bottom:2px solid #ffffff !important;
border-top:2px solid #828282 !important;
}
input[type="radio"]:checked+label {
color: black;
}
input[type="checkbox"]:checked+label {
color: red;
}
.topbar {
background-color: #000082;
}
.gotop {
background-color: rgba(255, 255, 255, 0.5);
}
.gotop a {
color: white;
}
.topicon {
color: white;
}
.tiselected {
border-bottom: 2px solid white;
}
.badge {
color: white;
}
.alert {
background-color: red;
}
#notifications {
background-color: #c3c3c3;
color:black;
box-shadow: 1px 1px 1px black;
}
.notif{
color:black;
}
.notif a:not(.uname){
color:black !important;
}
.uname {
text-decoration:underline !important;
}
#quicksend {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
}
.new {
background-color:#c3c3c3;
}
.side_element {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
}
.side_element li:hover {
background-color: #000082;
color:white;
}
.side_element li:active {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element a, .userinfo a, .userinfo .ldr {
color: black !important;
}
.uploadBox {
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.delpic {
color:red;
background-color:white;
}
#send {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
color:black;
}
.formbtn {
color:black;
}
.formbtn label{
color:black;
}
.profile,.loader,.menu,.notif {
background-color: #c3c3c3 !important;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
}
.menu li {
background-color: #c3c3c3 !important;
}
#usermenu .menu {
background-color: #6B91B6;
}
.postMenu {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
color:black;
padding:1px;
}
.postMenu div{
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
color:black;
box-shadow: 1px 1px 2px black;
}
.postMenu li{
background-color: #c3c3c3;
color:black;
}
.menu li:hover {
background-color: #000082 !important;
color:white;
}
.postMenu li a{
color: #000082 !important;
}
.postMenu li:hover a{
color:white !important;
}
.listmenu li {
background-color:black;
color:white;
}
.listmenu li:hover {
background-color:white;
color:black;
}
.autl:hover li{
background-color:lightgreen !important;
}
.rutl:hover li{
background-color:crimson !important;
}
.unblock,.unmute,.block,.mute,.follow,
.unfollow,
.nsfw,
.unnsfw,
.profileMenu,
.listmenu {
background-color: black;
color: white;
cursor: pointer;
}
.mute:hover,.block:hover,.follow:hover,
.nsfw:hover {
background-color: lime;
}
.unmute:hover,.unblock:hover,.unfollow:hover,
.unnsfw:hover{
background-color: crimson !important;
}
.unbookmark{
color: crimson !important;
}
.unfav, .unreblog{
color: red !important;
}
.post,
.rb,
.textonly,
.loadmore {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
}
.postform {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
}
.previewpost,.userinfo {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
box-shadow: 1px 1px 1px rgba(0,0,0,0.8);
color:black;
}
.userinfo_he a{
color:white !important;
}
.icon {
background-color: black;
}
.postHeader {
background-color: #000082;
color:white;
}
.reply .postHeader{
background-color:#808080;
border-bottom:3px solid #808080;
}
.postHeader a, .postHeader .link {
color: white;
}
.toggleblur{
background-color: blue;
color:white;
}
.post_footer {
border-bottom:2px solid #ffffff;
border-right:2px solid #ffffff;
border-top:2px solid #828282;
border-left:2px solid #828282;
}
.post_buttons {
color: black;
background-color:#c3c3c3;
}
.reply {
background-color: #ddd;
border-bottom: 1px solid #666;
}
.note {
background-color: #ccc;
}
.button {
background-color: white;
}
.setting label {
background-color:#e2e2e2;
border-bottom:2px solid #ffffff;
border-right:2px solid #ffffff;
border-top:2px solid #828282;
border-left:2px solid #828282;
color:#aaaaaa;
}
.setting input[type="radio"]:checked+label {
background-color: #c3c3c3;
border-top:2px solid #ffffff;
border-left:2px solid #ffffff;
border-bottom:2px solid #828282;
border-right:2px solid #828282;
color: black;
}

View File

@ -0,0 +1,656 @@
/* overall */
* {
font-family: arial, helvetica, sans-serif;
font-size: 12pt;
}
a {
text-decoration:none;
}
h1 {
font-size:20px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.desktop{
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100vw;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100vw;
clear: both;
display: inline-block;
text-align: center;
}
.container {
width: 100% !important;
display: inline-block;
text-align: center;
}
#posts {
width: 100% !important;
}
.content {
width: 100%;
display: inline-block;
margin:0px !important;
text-align: left;
word-break: break-all;
}
aside {
display:none !important;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
z-index:50;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
left: 0px;
bottom: 0px;
width: 100vw;
height: auto;
z-index: 99;
}
/* topbar elements */
.mid {
display:none;
}
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: fixed;
left: 0px;
top: 45px;
width: 100vw;
max-height: 400px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:100%;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
display:none;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
color: lightgray;
}
.side_element a {
color: lightgray;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 90% !important;
clear: both;
display: inline-block;
margin-top: 3px;
}
.profile {
float:left;
background-color:white;
border-radius:5px;
//width:650px;
width:100%;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu,.listmenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
display:none;
width: 50px;
background-size: cover;
height: 50px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.loader,
.loadmore,
.rb,
.textonly,
.profile {
width: 100% !important;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
display:none;
position:fixed;
width: 100vw !important;
left:0px;
top:45px;
text-align: center;
border-radius: 3px;
z-index: 99;
}
#postform {
display:none;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.postHeader *,.post_footer *{
font-size:small;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:-198px;
width: 300px;
height: 200px;
border-radius:3px;
}
.userinfo_co {
width: 280px;
margin: 10px;
}
.userinfo_he {
width: 300px;
height: 100px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 48% !important;
height: 321px;
line-height: 321px;
background-color: black;
float:left;
margin:2px !important;
}
.smaller {
width: 31% !important;
height: 212px;
line-height: 212px;
background-color: black;
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
/*
.lightbox-opened {
//background-color: #333;
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
left: 0;
overflow-y: scroll;
padding: 24px;
position: fixed;
text-align: center;
top: 0;
width: 100%;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
*/
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello, sans-serif;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1,631 @@
/* overall */
html {
scroll-behavior: smooth;
}
* {
font-family: arial, helvetica, sans-serif;
font-size: 11pt;
}
a {
text-decoration: none;
}
h1 {
font-size:30px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.mobile {
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100%;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100%;
clear: both;
display: inline-block;
text-align: center;
}
.container {
display: inline-block;
text-align: center;
}
#posts {
width: 800px;
float: left;
}
aside {
margin-top: 5px;
width: 280px;
float: left;
display: inline-block;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
right: 10px;
bottom: 115px;
width: 350px;
height: auto;
}
/* topbar elements */
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.ntbutton {
position:relative;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: absolute;
right: -20px;
top: 45px;
width: 350px;
max-height: 500px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:330px;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
border-radius: 3px;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
}
.side_element li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
float:left;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: 5px;
}
.profile,.loader {
float:left;
border-radius:5px;
width:650px;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
width: 80px;
background-size: 80px;
height: 80px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.rb,
.textonly,
.loadmore {
width: 650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
width:650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
display:block !important;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:15px;
width: 300px;
height: auto;
border-radius:3px;
line-height:initial;
z-index:99;
}
.userinfo_upper{
top:-100px;
}
.userinfo_co {
width: 280px;
margin: 10px;
text-align: center;
position:relative;
}
.userinfo_he {
width: 300px;
height: 150px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 321px !important;
height: 321px;
line-height: 321px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.smaller {
width: 212px !important;
height: 212px;
line-height: 212px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.content {
width: 600px;
display: inline-block;
margin:0px !important;
text-align: left;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1 @@
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>

View File

@ -0,0 +1,21 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='post' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:5px; display:block; float:left; line-height:30px;'><img src=':avatar:' width=30 class='mobile' style='vertical-align:middle; border-radius:30px'> :name: :rt: </span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class='menu'>:menu:</div></span>
</span>
</div>
:spoiler:
<div class='media' style='text-align:center;'>:media:</div>
<div class='postbody'><div class='content' style='margin-bottom:5px;'>
:replyto: :text:
</div></div>
<div class='post_footer'>:footer:</DIV>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'><noscript>:form:</noscript>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,26 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='profile'>
<div style='width: 100%; height:250px; background-color:#:mainColor:; background-size:cover; background-image:url(:header:); display:inline-block; position:relative;'>
<span style='width:290; height:30px; display:block; margin-top:15px; margin-right:15px; float:right;'>
:top:
</span>
<span style='position:absolute; bottom:10px; left:10px;'>
:bottom:
</span>
</div>
<div style='width: 100%; position:relative; text-align:center; padding-bottom:15px;'>
<div class='avatar' style='background-color:white; background-size: cover; background-image:url(:avatar:); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:5px; width:80px; height:80px;'></div>
<br><span style='font-weight:bold; font-size:40px;'>:name:</span>
<br><span style='font-weight:bold;'><a href=':url:' target='_blank' class='link external'> @:acct:</a></span>
<br><span>:note:</span>
</div>
<div class='post_footer' style='width: inherit; text-align:center;'>
<div style='width:33%; text-align:center; float:left;'><b>Statuses</b><br>:statuses:</div>
<div style='width:33%; text-align:center; float:left;'><b>Following</b><br>:following:</div>
<div style='width:33%; text-align:center; float:left;'><b>Followers</b><br>:followers:</div>
<span style='font-size:9px;'>Data may be inaccurate, <a href=':url:' style='font-size:9px;' target='_blank' class='link'>visit profile directly</a> to see updated data.</span>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='rb' id=':id:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='post_header'>:name:</div>
<div class='media'>:media:</div>
<div class='content' style='margin-bottom:5px;'>
:spoiler:
:text:
</div>
<div class='post_footer'>:footer:</DIV>
<div id='r:id:' class='replies_container'>:form::descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
:notes:
</div>

View File

@ -0,0 +1,25 @@
<div class='reply :mode:' id=':id:'>
<div class='postHeader'>
<span style='margin:12px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
<a class='ldr link user' href='?user=:uid:' id=':uid:'>
<b>:name:</b>
</a>
<span class='desktop'>(:acct:)</span>
</span>
<span style='margin:10px; float:right; display:block;'>
<span class='postMenu fontello'>&#xf0c9;
<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class='menu'>:menu:</div>
</span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin:0px;'>:media: :replyto: :text:</div>
</div>
<span style='width:100%; margin-bottom:10px; display:block;'>
<span style='margin-left:10px;'>:date:</span>
<span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span>
</span>
<div id=':id:' class='replies_container'></div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,39 @@
<div class='reply form' id='replyform' style='display:inline-block; width:100%'>
<div style='width:95%; margin: 10px auto; display:block;'>
<div style='text-align:right; background-color:white;'>
<form action='status.php' method='post' enctype='multipart/form-data'>
<input type='hidden' id='thread' name='thread' value=':id:'>
<div style='width:100%; border: 1px solid #ddd; text-align:left;'>
<div style='width:100% height:27px; border-bottom: 1px solid #ddd;'>
<input type='text' name='spoiler' value='Title (optional)' onClick='this.value=""' style='border:none; width:100%;'>
</div>
<textarea name='status' id="status" style='width:100%; height:100px; border:none;'>:content:</textarea>
</div>
<span style='float:left;'>
<input type='submit' value='Send' id='send' onClick='return false'>
<div class='formbtn fontello' style='position:relative;'>
&#xe818;
<input style='opacity:0; position:absolute; left:0px; top:5px; background-color:yellow;' type='file' id="files_input_field" name='file[]' multiple onchange="upload_files_reply();">
</div>
<div class='formbtn fontello' style='position:relative;'>
<input type='checkbox' name='sensitive' id='rsensitive' style='display:none;'>
<label for='rsensitive' class='fontello'>&#xe81b;</label>
</div>
</span>
<span style='float:left; margin-left:10px;' class='status'>
</span>
<span style='float:right;'>
<select name='scope' id='scope'>
<option id="public" value="1">&#xe83c; Public</option>
<option id="unlisted" value="2">&#xe816; Unlisted</option>
<option id="private" value="3">&#xe819; Private</option>
<option id="direct" value="4">&#xf0e0; Direct</option>
</select>
</span>
</form>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='post textonly' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:5px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
:name: :rt:
</span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class='menu'>:menu:</div></span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin-bottom:5px; margin-top:5px;'>:spoiler: :replyto: :text:</div>
</div>
<div class='post_footer'>:footer:</div>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

258
themes/cuatro/css/color.css Normal file
View File

@ -0,0 +1,258 @@
a, .link {
color: #117743;
}
div,span,p {
color:#800000;
}
body {
background-color: #fff9e5;
}
select{
color:#800;
background-color:white;
}
label {
color: #425f99;
}
textarea,input[type="text"]{
background-color:white;
}
input[type="radio"]:checked+label {
color: black;
}
input[type="checkbox"]:checked+label {
color: red;
}
.topbar {
background-color: #eeaa88;
}
.gotop {
background-color: rgba(238, 170, 136, 0.5);
}
.gotop a {
color: #880000;
}
.topicon {
color: #800;
}
.tiselected {
border-bottom: 2px solid white;
}
.badge {
color: #800;
}
.alert {
background-color: red;
}
#notifications {
background-color:#fff1d8;
border: 1px solid #800000;
}
.notif{
border-bottom:1px solid #eeaa88;
background-color:#fff1d8;
color:black;
-webkit-box-shadow: inset -6px 73px 100px -117px rgba(238,170,136,0.5);-moz-box-shadow: inset -6px 73px 100px -117px rgba(238,170,136,0.5);box-shadow: inset -6px 73px 100px -117px rgba(238,170,136,0.5);
}
#quicksend {
background-color: #305792;
border: 1px solid darkgray;
color: white;
}
.new {
background-color:#fff1d8;
}
.menu, .menu li{
background-color: #eeaa88 !important;
color:#800000 !important;
}
.menu a {
color:#800000 !important;
}
.menu li:hover{
background-color:#800000 !important;
}
.menu li:hover a {
color:#fff !important;
}
.side_element {
background-color: #f0e0d6;
border:1px solid #800000;
color: #4267b2;
}
.side_element li:hover {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element li:active {
background-color: rgba(255, 255, 255, 0.25);
}
.side_element a {
color: #800;
}
.uploadBox {
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.delpic {
color:red;
background-color:white;
}
#send {
background-color:#800;
border: 1px solid #800;
color:white;
}
.formbtn {
color:#800;
}
.formbtn label{
color:#800;
}
.postMenu div{
box-shadow: 1px 1px 2px black;
}
.listmenu li {
background-color:black;
color:white;
}
.listmenu li:hover {
background-color:white;
color:black;
}
.autl:hover li{
background-color:lightgreen !important;
}
.rutl:hover li{
background-color:crimson !important;
}
.unblock,.unmute,.block,.mute,.follow,
.unfollow,
.nsfw,
.unnsfw,
.profileMenu,
.listmenu {
background-color: black;
color: white;
cursor: pointer;
}
.mute:hover,.block:hover,.follow:hover,
.nsfw:hover {
background-color: lime;
}
.unmute:hover,.unblock:hover,.unfollow:hover,
.unnsfw:hover{
background-color: crimson !important;
}
.unbookmark{
color: crimson !important;
}
.unfav, .unreblog{
color: red !important;
}
.post,
.rb,
.textonly,
.loadmore,.profile,.loader {
background-color: #fff1d8;
border:1px solid #800000;
}
.postform {
background-color: #eeaa88;
border:1px solid #eeaa88;
}
.previewpost,.userinfo {
background-color: #f0e0d6;
border: 1px solid #800;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
color:#117743;
}
.icon {
background-color: black;
}
.toggleblur{
background-color: #117743;
color:white;
}
.post_footer {
background-color: #FFF;
border-top:2px solid #eeaa88;
}
.post_buttons {
color: #425f99;
}
.notif .post_buttons {
background-color: #fff0d7;
}
.reply {
background-color: #f0e0d6;
border-bottom: 1px solid #800;
}
.note {
background-color: #ccc;
}
.button {
background-color: white;
}
.setting label {
background-color: white;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
color:#800000;
}
.setting input[type="radio"]:checked+label {
background-color: #800000;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: white;
}

View File

@ -0,0 +1,656 @@
/* overall */
* {
font-family: arial, helvetica, sans-serif;
font-size: 12pt;
}
a {
text-decoration:none;
}
h1 {
font-size:20px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.desktop{
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100vw;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100vw;
clear: both;
display: inline-block;
text-align: center;
}
.container {
width: 100% !important;
display: inline-block;
text-align: center;
}
#posts {
width: 100% !important;
}
.content {
width: 100%;
display: inline-block;
margin:0px !important;
text-align: left;
word-break: break-all;
}
aside {
display:none !important;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
z-index:50;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
left: 0px;
bottom: 0px;
width: 100vw;
height: auto;
z-index: 99;
}
/* topbar elements */
.mid {
display:none;
}
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: fixed;
left: 0px;
top: 45px;
width: 100vw;
max-height: 400px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:100%;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
display:none;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
color: lightgray;
}
.side_element a {
color: lightgray;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 90% !important;
clear: both;
display: inline-block;
margin-top: 3px;
}
.profile {
float:left;
background-color:white;
border-radius:5px;
//width:650px;
width:100%;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu,.listmenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
display:none;
width: 50px;
background-size: cover;
height: 50px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.loader,
.loadmore,
.rb,
.textonly,
.profile {
width: 100% !important;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
display:none;
position:fixed;
width: 100vw !important;
left:0px;
top:45px;
text-align: center;
border-radius: 3px;
z-index: 99;
}
#postform {
display:none;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.postHeader *,.post_footer *{
font-size:small;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:-198px;
width: 300px;
height: 200px;
border-radius:3px;
}
.userinfo_co {
width: 280px;
margin: 10px;
}
.userinfo_he {
width: 300px;
height: 100px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 48% !important;
height: 321px;
line-height: 321px;
background-color: black;
float:left;
margin:2px !important;
}
.smaller {
width: 31% !important;
height: 212px;
line-height: 212px;
background-color: black;
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
/*
.lightbox-opened {
//background-color: #333;
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
left: 0;
overflow-y: scroll;
padding: 24px;
position: fixed;
text-align: center;
top: 0;
width: 100%;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
*/
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello, sans-serif;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

631
themes/cuatro/css/style.css Normal file
View File

@ -0,0 +1,631 @@
/* overall */
html {
scroll-behavior: smooth;
}
* {
font-family: arial, helvetica, sans-serif;
font-size: 11pt;
}
a {
text-decoration: none;
}
h1 {
font-size:30px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.mobile {
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100%;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100%;
clear: both;
display: inline-block;
text-align: center;
}
.container {
display: inline-block;
text-align: center;
}
#posts {
width: 800px;
float: left;
}
aside {
margin-top: 5px;
width: 280px;
float: left;
display: inline-block;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
right: 10px;
bottom: 115px;
width: 350px;
height: auto;
}
/* topbar elements */
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.ntbutton {
position:relative;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: absolute;
right: -20px;
top: 45px;
width: 350px;
max-height: 500px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:330px;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
border-radius: 3px;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
}
.side_element li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
float:left;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: 5px;
}
.profile,.loader {
float:left;
border-radius:5px;
width:650px;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
width: 80px;
background-size: 80px;
height: 80px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.rb,
.textonly,
.loadmore {
width: 650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
width:650px;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
display:block !important;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:15px;
width: 300px;
height: auto;
border-radius:3px;
line-height:initial;
z-index:99;
}
.userinfo_upper{
top:-100px;
}
.userinfo_co {
width: 280px;
margin: 10px;
text-align: center;
position:relative;
}
.userinfo_he {
width: 300px;
height: 150px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 321px !important;
height: 321px;
line-height: 321px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.smaller {
width: 212px !important;
height: 212px;
line-height: 212px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.content {
width: 600px;
display: inline-block;
margin:0px !important;
text-align: left;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1 @@
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>

View File

@ -0,0 +1,21 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='post' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left; line-height:30px;'><img src=':avatar:' width=30 class='mobile' style='vertical-align:middle; border-radius:30px'> :name: :rt: </span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class='menu'>:menu:</div></span>
</span>
</div>
:spoiler:
<div class='media' style='text-align:center;'>:media:</div>
<div class='postbody'><div class='content' style='margin-bottom:5px;'>
:replyto: :text:
</div></div>
<div class='post_footer'>:footer:</DIV>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'><noscript>:form:</noscript>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,26 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='profile'>
<div style='width: 100%; height:250px; background-color:#:mainColor:; background-size:cover; background-image:url(:header:); display:inline-block; position:relative;'>
<span style='width:290; height:30px; display:block; margin-top:15px; margin-right:15px; float:right;'>
:top:
</span>
<span style='position:absolute; bottom:10px; left:10px;'>
:bottom:
</span>
</div>
<div style='width: 100%; position:relative; text-align:center; padding-bottom:15px;'>
<div class='avatar' style='background-color:white; background-size: cover; background-image:url(:avatar:); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:5px; width:80px; height:80px;'></div>
<br><span style='font-weight:bold; font-size:40px;'>:name:</span>
<br><span style='font-weight:bold;'><a href=':url:' target='_blank' class='link external'> @:acct:</a></span>
<br><span>:note:</span>
</div>
<div class='post_footer' style='width: inherit; text-align:center;'>
<div style='width:33%; text-align:center; float:left;'><b>Statuses</b><br>:statuses:</div>
<div style='width:33%; text-align:center; float:left;'><b>Following</b><br>:following:</div>
<div style='width:33%; text-align:center; float:left;'><b>Followers</b><br>:followers:</div>
<span style='font-size:9px;'>Data may be inaccurate, <a href=':url:' style='font-size:9px;' target='_blank' class='link'>visit profile directly</a> to see updated data.</span>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='rb' id=':id:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='post_header'>:name:</div>
<div class='media'>:media:</div>
<div class='content' style='margin-bottom:5px;'>
:spoiler:
:text:
</div>
<div class='post_footer'>:footer:</DIV>
<div id='r:id:' class='replies_container'>:form::descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
:notes:
</div>

View File

@ -0,0 +1,25 @@
<div class='reply :mode:' id=':id:'>
<div class='postHeader'>
<span style='margin:12px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
<a class='ldr link user' href='?user=:uid:' id=':uid:'>
<b>:name:</b>
</a>
<span class='desktop'>(:acct:)</span>
</span>
<span style='margin:10px; float:right; display:block;'>
<span class='postMenu fontello'>&#xf0c9;
<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div>
</span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin:0px;'>:media: :replyto: :text:</div>
</div>
<span style='width:100%; margin-bottom:10px; display:block;'>
<span style='margin-left:10px;'>:date:</span>
<span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span>
</span>
<div id=':id:' class='replies_container'></div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,39 @@
<div class='reply form' id='replyform' style='display:inline-block; width:100%'>
<div style='width:95%; margin: 10px auto; display:block;'>
<div style='text-align:right; background-color:white;'>
<form action='status.php' method='post' enctype='multipart/form-data'>
<input type='hidden' id='thread' name='thread' value=':id:'>
<div style='width:100%; border: 1px solid #ddd; text-align:left;'>
<div style='width:100% height:27px; border-bottom: 1px solid #ddd;'>
<input type='text' name='spoiler' value='Title (optional)' onClick='this.value=""' style='border:none; width:100%;'>
</div>
<textarea name='status' id="status" style='width:100%; height:100px; border:none;'>:content:</textarea>
</div>
<span style='float:left;'>
<input type='submit' value='Send' id='send' onClick='return false'>
<div class='formbtn fontello' style='position:relative;'>
&#xe818;
<input style='opacity:0; position:absolute; left:0px; top:5px; background-color:yellow;' type='file' id="files_input_field" name='file[]' multiple onchange="upload_files_reply();">
</div>
<div class='formbtn fontello' style='position:relative;'>
<input type='checkbox' name='sensitive' id='rsensitive' style='display:none;'>
<label for='rsensitive' class='fontello'>&#xe81b;</label>
</div>
</span>
<span style='float:left; margin-left:10px;' class='status'>
</span>
<span style='float:right;'>
<select name='scope' id='scope'>
<option id="public" value="1">&#xe83c; Public</option>
<option id="unlisted" value="2">&#xe816; Unlisted</option>
<option id="private" value="3">&#xe819; Private</option>
<option id="direct" value="4">&#xf0e0; Direct</option>
</select>
</span>
</form>
</div>
<div style="clear: both;"></div>
</div>
</div>

View File

@ -0,0 +1,23 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='post textonly' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:9px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
:name: :rt:
</span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class='menu'>:menu:</div></span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin-bottom:5px; margin-top:5px;'>:spoiler: :replyto: :text:</div>
</div>
<div class='post_footer'>:footer:</div>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

309
themes/custom/css/color.php Normal file
View File

@ -0,0 +1,309 @@
<?php
header("Content-type: text/css");
require_once "../../../include/init.php";
//https://gist.github.com/bedeabza/10463089
function hexToHsl($hex) {
$hex = array($hex[0].$hex[1], $hex[2].$hex[3], $hex[4].$hex[5]);
$rgb = array_map(function($part) {
return hexdec($part) / 255;
}, $hex);
$max = max($rgb);
$min = min($rgb);
$l = ($max + $min) / 2;
if ($max == $min) {
$h = $s = 0;
} else {
$diff = $max - $min;
$s = $l > 0.5 ? $diff / (2 - $max - $min) : $diff / ($max + $min);
switch($max) {
case $rgb[0]:
$h = ($rgb[1] - $rgb[2]) / $diff + ($rgb[1] < $rgb[2] ? 6 : 0);
break;
case $rgb[1]:
$h = ($rgb[2] - $rgb[0]) / $diff + 2;
break;
case $rgb[2]:
$h = ($rgb[0] - $rgb[1]) / $diff + 4;
break;
}
$h /= 6;
}
return array(360*$h, 100*$s, 100*$l);
}
//$link = "hsl("..", ".."%, ".."%)";
$color = hexToHsl($theme['lc']);
$link = "hsl(".$color[0].", ".$color[1]."%, ".$color[2]."%)";
$color = hexToHsl($theme['tx']);
$text = "hsl(".$color[0].", ".$color[1]."%, ".$color[2]."%)";
$color = hexToHsl($theme['bc']);
$border = "hsl(".$color[0].", ".$color[1]."%, ".$color[2]."%)";
$color = hexToHsl($theme['bg']);
$background = "hsl(".$color[0].", ".$color[1]."%, ".$color[2]."%)";
$backgroundDark = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] > 10 ? $color[2] - 10 : 0 )."%)";
$backgroundDarker = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] > 18 ? $color[2] - 18 : 0 )."%)";
$backgroundLight = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] < 90 ? $color[2] + 10 : 100 )."%)";
$backgroundLighter = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] < 70 ? $color[2] + 30 : 100 )."%)";
$backgroundL = $color[2];
$color = hexToHsl($theme['fg']);
$foreground = "hsl(".$color[0].", ".$color[1]."%, ".$color[2]."%)";
$foregroundDark = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] > 10 ? $color[2] - 10 : 0 )."%)";
$foregroundDarker = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] > 18 ? $color[2] - 18 : 0 )."%)";
$foregroundLight = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] < 90 ? $color[2] + 10 : 100 )."%)";
$foregroundLighter = "hsl(".$color[0].", ". $color[1] ."%, ".($color[2] < 82 ? $color[2] + 18 : 100 )."%)";
$foregroundL = $color[2];
?>
p,div,span {
color:<?php echo $text; ?>;
}
a, .link {
color: <?php echo $link; ?>;
}
textarea,input[type="text"],select{
background-color: <?php echo ($foregroundL < 50 ? $foregroundLight : $foregroundDark) ?>;
color:<?php echo $text; ?>;
}
body {
background-color: <?php echo $background; ?>;
}
label {
color: gray;
}
input[type="radio"]:checked+label {
color: black;
}
input[type="checkbox"]:checked+label {
color: red;
}
.topbar {
background-color: <?php echo $backgroundDarker ?>;
}
.gotop {
background-color: rgba(255, 255, 255, 0.5);
}
.gotop a {
color: <?php echo $link; ?>;
}
.topicon {
color: <?php echo $backgroundLighter; ?>;
}
.toggleblur {
background-color: <?php echo $link; ?>;
color: <?php echo $foreground; ?>;
}
.tiselected {
border-bottom: 2px solid <?php echo $foreground; ?>;
}
.alert {
background-color: red;
}
#notifications {
background-color:<?php echo $foreground; ?>;
box-shadow: 1px 1px 1px black;
}
.notif{
border-bottom:<?php echo $theme['bw']; ?>px solid #<?php echo $theme['bc']; ?>;
background-color:<?php echo $foreground; ?>;
color:<?php echo $text; ?> !important;
}
.notif .post_buttons{
background-color:<?php echo $foreground; ?>;
}
.notif .text{
color:<?php echo $text; ?> !important;
}
#quicksend,#send {
background-color: <?php echo $link; ?>;
color: <?php echo $foreground; ?>;
border:0px;
}
.new {
background-color:<?php echo $foreground; ?>;
}
.side_element {
background-color: #455f78;
/*box-shadow: 1px 1px 1px black;*/
}
.side_element li:hover,.menu li:hover {
background-color: <?php echo $backgroundDarker; ?> !important;
}
.side_element li:active {
background-color: rgba(255, 255, 255, 0.25);
}
.uploadBox {
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.delpic {
color:red;
background-color:white;
}
.formbtn {
color:<?php echo $link; ?>;
}
.formbtn label{
color:<?php echo $link; ?>;
}
.profile,.loader {
background-color:<?php echo $topbar; ?>;
color:<?php echo $foreground; ?>;
}
.listmenu li {
background-color:black;
color:white;
}
.listmenu li:hover {
background-color:white;
color:black;
}
.autl:hover li{
background-color:lightgreen !important;
}
.rutl:hover li{
background-color:crimson !important;
}
.unblock,.unmute,.block,.mute,.follow,
.unfollow,
.nsfw,
.unnsfw,
.profileMenu,
.listmenu {
background-color: black;
color: white;
cursor: pointer;
}
.mute:hover,.block:hover,.follow:hover,
.nsfw:hover {
background-color: lime;
}
.unmute:hover,.unblock:hover,.unfollow:hover,
.unnsfw:hover{
background-color: crimson !important;
}
.unbookmark{
color: crimson !important;
}
.unfav, .unreblog{
color: red !important;
}
.element_pad > .post {
border-left:2px solid <?php echo $link; ?>;
}
.post,
.rb,
.textonly,
.loadmore,
.postform,
.side_element
{
border: <?php echo $theme['bw']; ?>px solid #<?php echo $theme['bc']; ?>;
border-radius: <?php echo $theme['br']; ?>px;
background-color: <?php echo $foreground; ?>;
/*box-shadow: 1px 1px 2px black;*/
}
.menu,.menu li {
background-color: <?php echo ($foregroundL < 50 ? $foregroundLight : $foregroundDark) ?> !important;
}
.menu li:hover a {
color: <?php echo $foreground; ?> !important;
}
.menu li a {
color: <?php echo $link; ?> !important;
}
.menu {
box-shadow: 1px 1px 2px black;
}
.previewpost,.userinfo {
background-color: <?php echo ($foregroundL < 50 ? $foregroundLight : $foregroundDark) ?>;
border: 1px solid <?php echo ($foregroundL < 50 ? $foregroundLight : $foregroundDark) ?>;
box-shadow: 1px 1px 1px rgba(0,0,0,1);
}
.icon {
background-color: black;
}
.post_footer {
background-color: <?php echo ($foregroundL < 50 ? $foregroundLighter : $foregroundDarker) ?>;
border-radius: 0px 0px <?php echo $theme['br']; ?>px <?php echo $theme['br']; ?>px;
}
.post_buttons {
color: #404040;
}
.reply {
background-color: <?php echo ($foregroundL < 50 ? $foregroundLighter : $foregroundDarker) ?>;
border-bottom: 2px solid <?php echo $foreground; ?>;
}
.note {
background-color: #ccc;
}
.button {
background-color: white;
}
.setting label {
background-color: lightgray;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
}
.setting input[type="radio"]:checked+label {
background-color: <?php echo $link; ?>; ;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: <?php echo $foreground; ?>; ;
}

View File

@ -0,0 +1,657 @@
/* overall */
* {
font-family: arial, helvetica, sans-serif;
font-size: 12pt;
}
a {
text-decoration:none;
}
h1 {
font-size:20px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.desktop{
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100vw;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100vw;
clear: both;
display: inline-block;
text-align: center;
}
.container {
width: 100% !important;
display: inline-block;
text-align: center;
}
#posts {
width: 100% !important;
}
.content {
width: 100%;
display: inline-block;
margin:0px !important;
text-align: left;
word-break: break-all;
}
aside {
display:none !important;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
z-index:50;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
left: 0px;
bottom: 0px;
width: 100vw;
height: auto;
z-index: 99;
}
/* topbar elements */
.mid {
display:none;
}
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: fixed;
left: 0px;
top: 45px;
width: 100vw;
max-height: 400px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:100%;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
display:none;
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
color: lightgray;
}
.side_element a {
color: lightgray;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 90% !important;
clear: both;
display: inline-block;
margin-top: 3px;
}
.profile {
float:left;
background-color:white;
border-radius:5px;
//width:650px;
width:100%;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu,.listmenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
display:none;
width: 50px;
background-size: cover;
height: 50px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.loader,
.loadmore,
.rb,
.textonly,
.profile {
width: 100% !important;
float: left;
text-align: center;
position: relative;
border-radius: 3px;
}
.postform {
display:none;
position:fixed;
width: 100vw !important;
left:0px;
top:45px;
text-align: center;
border-radius: 3px;
z-index: 99;
}
#postform {
display:none;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.postHeader *,.post_footer *{
font-size:small;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:-198px;
width: 300px;
height: 200px;
border-radius:3px;
}
.userinfo_co {
width: 280px;
margin: 10px;
}
.userinfo_he {
width: 300px;
height: 100px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 48% !important;
height: 321px;
line-height: 321px;
background-color: black;
float:left;
margin:2px !important;
}
.smaller {
width: 31% !important;
height: 212px;
line-height: 212px;
background-color: black;
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
border-radius: 3px;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
/*
.lightbox-opened {
//background-color: #333;
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
left: 0;
overflow-y: scroll;
padding: 24px;
position: fixed;
text-align: center;
top: 0;
width: 100%;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
*/
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello, sans-serif;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

627
themes/custom/css/style.css Normal file
View File

@ -0,0 +1,627 @@
/* overall */
html {
scroll-behavior: smooth;
}
* {
font-family: arial, helvetica, sans-serif;
font-size: 11pt;
}
a {
text-decoration: none;
}
h1 {
font-size:30px;
}
p {
margin: 0px !important;
}
body {
margin: 0;
}
ul{
padding:0px;
margin:0px;
}
select{
padding:5px;
margin-top:5px;
border:0px;
font-weight:bold;
font-family:fontello, sans-serif;
}
option{
font-family:fontello, sans-serif;
}
label {
margin-left: 5px;
margin-right: 5px;
cursor: pointer;
}
input[type="file"], .nloadmore {
cursor:pointer;
}
textarea {
resize: none;
}
/* omnipresent */
.mobile {
display:none !important;
}
.link {
text-decoration: none;
}
.external:after{
font-family:fontello;
font-weight:normal;
content: ' ';
}
/* basic structure */
.topbar {
width: 100%;
height: 45px;
margin: 0;
position: relative;
}
.wrapper {
width: 100%;
clear: both;
display: inline-block;
text-align: center;
}
.container {
display: inline-block;
text-align: center;
}
#posts {
width: 800px;
float: left;
}
aside {
margin-top: 5px;
width: 280px;
float: left;
display: inline-block;
}
.gotop {
width: 30px;
height: 30px;
padding: 5px;
position: fixed;
display: table;
text-align: center;
right: 20px;
bottom: 20px;
border-radius: 10px;
}
.gotop a {
text-align: center;
display: table-cell;
vertical-align: middle;
opacity: 0.7;
font-size: 20px;
}
#hiddenside {
background-color: rgba(255, 255, 255, 0);
position: fixed;
right: 10px;
bottom: 115px;
width: 350px;
height: auto;
}
/* topbar elements */
.topbutton {
vertical-align: middle;
display: table-cell;
line-height: 45px;
height: 100%;
width: 50px;
position: relative;
}
.topicon {
text-decoration: none;
display: inline;
font-size: 20px;
}
.ntbutton {
position:relative;
}
.badge {
text-decoration: none;
}
.alert {
border-radius: 90px;
width: 10px;
height: 10px;
position: absolute;
right: 15px;
top: 15px;
display: none;
}
#notifications {
position: absolute;
right: -20px;
top: 45px;
width: 350px;
max-height: 500px;
display: none;
line-height:12px;
overflow-y:scroll;
border-radius:3px;
}
.notif{
width:330px;
height:80px;
display:inline-block;
text-align:left;
position:relative;
}
#quicksend {
border-radius: 3px;
font-weight: bold;
}
.notifContents{
margin:10px;
display:flex;
height:60px;
max-width:325px;
}
.nloadmore {
display:inline-block;
height:20px;
padding-top:10px;
}
/* sidebar */
.side_element {
width: 92%;
margin: 10px;
display: inline-block;
text-align: center;
}
.side_element li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
/* posts area elements */
.uploadedImage {
width: 60px;
margin: 10px 0px 10px 10px;
height: 60px;
border: 1px solid #ccc;
display: inline-block;
box-shadow: 3px 3px 3px grey;
float: left;
background-size: cover;
}
.uploadBox {
width: 100%;
display: inline-block;
border-bottom: 1px solid #ddd;
}
.delpic {
border-radius:90px;
display:inline-block;
cursor:pointer;
}
#send {
padding:5px;
border-radius:3px;
font-weight:bold;
margin-top:5px;
float:left;
}
.formbtn {
background-color:transparent;
border: 0px;
margin-top:11px;
margin-left:15px;
float:left;
width:20px;
height:20px;
line-height:20px;
text-align:center;
overflow:hidden;
font-size:20px;
}
.formbtn label{
margin:-5px;
font-size:20px;
}
.element {
width: 800px;
clear: both;
display: inline-block;
margin-top: 5px;
}
.profile,.loader {
float:left;
border-radius:5px;
width:650px;
}
.profileButton{
padding: 5px;
border-radius: 5px;
font-family: fontello, sans-serif;
}
#usermenu .menu {
display: none;
width: 150px;
height: 100px;
position: absolute;
top: 45px;
left: -80px;
transition: 0.4s;
}
#usermenu:hover>.menu,
#usermenu:active>.menu {
display: block;
transition: 0.4s;
}
.postMenu {
cursor: pointer;
position:relative;
}
.postMenu div{
border-radius: 3px;
}
.postMenu li {
margin:0px;
width:100%;
height:35px;
display:block;
text-align:center;
line-height:35px;
}
.postMenu:hover > div{
display:block !important;
}
.postMenu ul {
margin:0px;
width:100%;
padding:0px;
}
.profileMenu:hover > div, .listmenu:hover > div{
display:block !important;
}
.listmenu li {
font-family: fontello, sans-serif;
height:30px;
line-height:30px;
text-align:left;
padding-left:12px;
list-style-type: none;
}
.felem {
margin-left: 10px;
float: left;
}
.avatar {
width: 80px;
background-size: 80px;
height: 80px;
float: left;
margin: 15px;
border-radius: 10px;
}
.post,
.rb,
.textonly,
.loadmore {
width: 650px;
float: left;
text-align: center;
position: relative;
}
.postform {
width:650px;
float: left;
text-align: center;
position: relative;
display:block !important;
}
.postHeader {
width: 100%;
display: inline-block;
height: 40px;
text-align: left;
}
.previewpost {
display: none;
position: absolute;
margin-top: -100px;
width: 400px;
border-radius:3px;
}
.user {
position:relative;
}
.userinfo {
display: none;
position: absolute;
left:0px;
top:15px;
width: 300px;
height: auto;
border-radius:3px;
line-height:initial;
z-index:99;
}
.userinfo_upper{
top:-100px;
}
.userinfo_co {
width: 280px;
margin: 10px;
text-align: center;
position:relative;
}
.userinfo_he {
width: 300px;
height: 150px;
}
.media {
width: 100%;
display: inline-block;
}
.img {
width: 600px;
text-align: center;
}
.blur {
-webkit-filter: blur(25px) brightness(70%) grayscale(100%);
/* Safari 6.0 - 9.0 */
filter: blur(25px) brightness(70%) grayscale(100%);
opacity: 0.5;
transition: 0.4s;
}
.toggleblur {
display:none;
cursor: pointer;
font-family: sans, fontello;
}
.small {
width: 321px !important;
height: 321px;
line-height: 321px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.smaller {
width: 212px !important;
height: 212px;
line-height: 212px;
/* background-color: black; */
float:left;
margin:2px !important;
}
.icon {
width: 80px !important;
height: 80px !important;
line-height: 80px;
float:left;
text-align:center;
margin:2px !important;
}
.postbody {
margin: 15px;
}
.content {
width: 600px;
display: inline-block;
margin:0px !important;
text-align: left;
}
.post_footer {
width: 630px;
display: table-cell;
clear: both;
padding: 10px;
height: 20px;
text-align: left;
}
.post_buttons {
font-family: fontello;
float: right;
display: inline-block;
text-align: right;
font-size: 15pt;
}
.post_buttons a,
.post_buttons span {
font-family: inherit;
text-decoration: none;
color: inherit;
font-size: inherit;
}
.reply {
width: 100%;
clear: both;
text-align: left;
display: block;
}
.note {
width: 640px;
float: left;
text-align: left;
border-radius: 5px;
padding: 5px;
}
.button {
padding: 15px;
float: left;
text-align: center;
border-radius: 5px;
font-size: 20pt;
}
/* pages */
.setting label {
display: block;
width: 40px;
height: 20px;
padding: 5px;
float: left;
margin: 0px;
text-align: center;
transition: all 0.3s ease-in-out;
}
.setting input[type="radio"]:checked+label {
font-weight: bold;
}
/* other stuff */
/* <lightbox> */
.lightbox-opened {
/* background-color: #333; */
background-color: rgba(50, 50, 50, 0.85);
cursor: pointer;
height: 100%;
/* left: 0; */
overflow-y: scroll;
position: fixed;
text-align: center;
top: 0;
width: 100%;
z-index:105;
&:before {
background-color: #333;
background-color: rgba(#333, 0.9);
color: #eee;
content: "x";
font-family: sans-serif;
padding: 6px 12px;
position: fixed;
text-transform: uppercase;
}
img {
box-shadow: 0 0 6px 3px #333;
}
}
.no-scroll {
overflow: hidden;
}
/* </lightbox> */
.fontello {
font-family: fontello;
}
.loading {
font-family: fontello;
color: black;
content: "\E822";
animation-name: spin;
animation-duration: 5000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
/* transform: rotate(3deg); */
/* transform: rotate(0.3rad);/ */
/* transform: rotate(3grad); */
/* transform: rotate(.03turn); */
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.disabled {
background-color: black;
}

View File

@ -0,0 +1 @@
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>

View File

@ -0,0 +1,21 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='post' id=':id:' pid=':pid:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='postHeader'>
<span style='margin:5px; display:block; float:left; line-height:30px;'><img src=':avatar:' width=30 class='mobile' style='vertical-align:middle; border-radius:30px'> :name: :rt: </span>
<span style="margin:10px; float:right; display:block;">
<span class='postMenu fontello'>&#xf0c9;<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class="menu">:menu:</div></span>
</span>
</div>
:spoiler:
<div class='media' style='text-align:center;'>:media:</div>
<div class='postbody'><div class='content' style='margin-bottom:5px;'>
:replyto: :text:
</div></div>
<div class='post_footer'>:footer:</DIV>
<div class='post_notes'>:notes:</DIV>
<div id=':id:' class='replies_container'><noscript>:form:</noscript>:descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

View File

@ -0,0 +1,26 @@
<div class='element'>
<div class='avatar' style='height:1px;'></div>
<div class='profile'>
<div style='width: 100%; height:250px; background-color:#:mainColor:; background-size:cover; background-image:url(:header:); display:inline-block; position:relative;'>
<span style='width:290; height:30px; display:block; margin-top:15px; margin-right:15px; float:right;'>
:top:
</span>
<span style='position:absolute; bottom:10px; left:10px;'>
:bottom:
</span>
</div>
<div style='width: 100%; position:relative; text-align:center; padding-bottom:15px;'>
<div class='avatar' style='background-color:white; background-size: cover; background-image:url(:avatar:); text-align:center; float:none; display:inline-block; border:3px solid white; margin-top:-50px; border-radius:5px; width:80px; height:80px;'></div>
<br><span style='font-weight:bold; font-size:40px;'>:name:</span>
<br><span style='font-weight:bold;'><a href=':url:' target='_blank' class='link external'> @:acct:</a></span>
<br><span>:note:</span>
</div>
<div class='post_footer' style='width: inherit; text-align:center;'>
<div style='width:33%; text-align:center; float:left;'><b>Statuses</b><br>:statuses:</div>
<div style='width:33%; text-align:center; float:left;'><b>Following</b><br>:following:</div>
<div style='width:33%; text-align:center; float:left;'><b>Followers</b><br>:followers:</div>
<span style='font-size:9px;'>Data may be inaccurate, <a href=':url:' style='font-size:9px;' target='_blank' class='link'>visit profile directly</a> to see updated data.</span>
</div>
</div>
</div>

View File

@ -0,0 +1,16 @@
<div class='element'>
<div class='avatar' style='background-image:url(:avatar:) :style:'></div>
<div class='rb' id=':id:'>
<div id='a:id:' class='ancestors'>:ancestors:</div>
<div class='post_header'>:name:</div>
<div class='media'>:media:</div>
<div class='content' style='margin-bottom:5px;'>
:spoiler:
:text:
</div>
<div class='post_footer'>:footer:</DIV>
<div id='r:id:' class='replies_container'>:form::descendants:</div>
</div>
<script type='application/json' id='data-:id:'>:json:</script>
:notes:
</div>

View File

@ -0,0 +1,25 @@
<div class='reply :mode:' id=':id:'>
<div class='postHeader'>
<span style='margin:12px; display:block; float:left;'>
<img src=':avatar:' width=30 style='vertical-align:middle; border-radius:30px;'>
<a class='ldr link user' href='?user=:uid:' id=':uid:'>
<b>:name:</b>
</a>
<span class='desktop'>(:acct:)</span>
</span>
<span style='margin:10px; float:right; display:block;'>
<span class='postMenu fontello'>&#xf0c9;
<div style='display:none; z-index:99; width:130px; position: absolute; top: 15px; right: -1px;' class="menu">:menu:</div>
</span>
</span>
</div>
<div class='postbody'>
<div class='content' style='margin:0px;'>:media: :replyto: :text:</div>
</div>
<span style='width:100%; margin-bottom:10px; display:block;'>
<span style='margin-left:10px;'>:date:</span>
<span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span>
</span>
<div id=':id:' class='replies_container'></div>
<script type='application/json' id='data-:id:'>:json:</script>
</div>

Some files were not shown because too many files have changed in this diff Show More