Browse Source

first commit

master
AJITHKUMAR12 11 months ago
commit
d64d0d851c
  1. BIN
      src/.DS_Store
  2. BIN
      src/main/.DS_Store
  3. BIN
      src/main/java/.DS_Store
  4. BIN
      src/main/java/com/.DS_Store
  5. BIN
      src/main/java/com/gcc/.DS_Store
  6. BIN
      src/main/java/com/gcc/coworkspace/.DS_Store
  7. 13
      src/main/java/com/gcc/coworkspace/CoworkspaceApplication.java
  8. 50
      src/main/java/com/gcc/coworkspace/component/UserSession.java
  9. 61
      src/main/java/com/gcc/coworkspace/component/UserSessionInterceptor.java
  10. BIN
      src/main/java/com/gcc/coworkspace/configuration/.DS_Store
  11. 86
      src/main/java/com/gcc/coworkspace/configuration/AppConfig.java
  12. 88
      src/main/java/com/gcc/coworkspace/configuration/DataSourceConfig.java
  13. 44
      src/main/java/com/gcc/coworkspace/configuration/QrGenerator.java
  14. 442
      src/main/java/com/gcc/coworkspace/configuration/RefundScheduler.java
  15. 50
      src/main/java/com/gcc/coworkspace/configuration/WebConfig.java
  16. 11
      src/main/java/com/gcc/coworkspace/constants/AppConstants.java
  17. BIN
      src/main/java/com/gcc/coworkspace/controller/.DS_Store
  18. 217
      src/main/java/com/gcc/coworkspace/controller/AttendanceController.java
  19. 487
      src/main/java/com/gcc/coworkspace/controller/BookingController.java
  20. 70
      src/main/java/com/gcc/coworkspace/controller/BuildingController.java
  21. 72
      src/main/java/com/gcc/coworkspace/controller/CheckListController.java
  22. 154
      src/main/java/com/gcc/coworkspace/controller/ComplaintController.java
  23. 36
      src/main/java/com/gcc/coworkspace/controller/DateTimeUtil.java
  24. 28
      src/main/java/com/gcc/coworkspace/controller/GoogleReviewController.java
  25. 373
      src/main/java/com/gcc/coworkspace/controller/RefundController.java
  26. 169
      src/main/java/com/gcc/coworkspace/controller/ReportController.java
  27. 985
      src/main/java/com/gcc/coworkspace/controller/controller.java
  28. 29
      src/main/java/com/gcc/coworkspace/exception/ErrorResponse.java
  29. 46
      src/main/java/com/gcc/coworkspace/exception/GlobalExceptionHandler.java
  30. 7
      src/main/java/com/gcc/coworkspace/exception/NoSlotAvailable.java
  31. 1
      src/main/java/com/gcc/coworkspace/package-info.java
  32. BIN
      src/main/java/com/gcc/coworkspace/service/.DS_Store
  33. 33
      src/main/java/com/gcc/coworkspace/service/AmountConfigService.java
  34. 582
      src/main/java/com/gcc/coworkspace/service/AttendanceService.java
  35. 1111
      src/main/java/com/gcc/coworkspace/service/BookingService.java
  36. 198
      src/main/java/com/gcc/coworkspace/service/BookingServiceCopy.java
  37. 170
      src/main/java/com/gcc/coworkspace/service/BuildingService.java
  38. 27
      src/main/java/com/gcc/coworkspace/service/CalendarService.java
  39. 229
      src/main/java/com/gcc/coworkspace/service/CheckListService.java
  40. 348
      src/main/java/com/gcc/coworkspace/service/ComplaintService.java
  41. 43
      src/main/java/com/gcc/coworkspace/service/GoogleReviewService.java
  42. 161
      src/main/java/com/gcc/coworkspace/service/HomeService.java
  43. 96
      src/main/java/com/gcc/coworkspace/service/NormalSMS.java
  44. 173
      src/main/java/com/gcc/coworkspace/service/PaymentService.java
  45. 288
      src/main/java/com/gcc/coworkspace/service/RefundService.java
  46. 265
      src/main/java/com/gcc/coworkspace/service/RefundService_old.java
  47. 512
      src/main/java/com/gcc/coworkspace/service/ReportService.java
  48. 40
      src/main/java/com/gcc/coworkspace/service/SMSService.java
  49. 66
      src/main/java/com/gcc/coworkspace/service/WhatsAppService.java
  50. BIN
      src/main/resources/.DS_Store
  51. 11
      src/main/resources/application-dev.properties
  52. 10
      src/main/resources/application-prod.properties
  53. 11
      src/main/resources/application.properties
  54. BIN
      src/main/resources/static/.DS_Store
  55. BIN
      src/main/resources/static/assets/.DS_Store
  56. 6
      src/main/resources/static/assets/js/html2pdf.bundle.min.js
  57. BIN
      src/main/resources/static/files/.DS_Store
  58. 730
      src/main/resources/static/files/assets/css/component.css
  59. 4
      src/main/resources/static/files/assets/css/font-awesome.min.css
  60. 1281
      src/main/resources/static/files/assets/css/jquery.mCustomScrollbar.css
  61. 536
      src/main/resources/static/files/assets/css/linearicons.css
  62. 612
      src/main/resources/static/files/assets/css/pcoded-horizontal.min.css
  63. 25796
      src/main/resources/static/files/assets/css/style.css
  64. BIN
      src/main/resources/static/files/assets/fonts/Linearicons-Free-1.hxd
  65. BIN
      src/main/resources/static/files/assets/fonts/Linearicons-Free.hxd
  66. 199
      src/main/resources/static/files/assets/fonts/Linearicons-Free.svg
  67. BIN
      src/main/resources/static/files/assets/fonts/Linearicons-Free.ttf
  68. BIN
      src/main/resources/static/files/assets/fonts/Linearicons-Free.woff
  69. BIN
      src/main/resources/static/files/assets/fonts/Linearicons-Free.woff2
  70. BIN
      src/main/resources/static/files/assets/fonts/fontawesome-webfont-1.hxd
  71. BIN
      src/main/resources/static/files/assets/fonts/fontawesome-webfont.hxd
  72. 2671
      src/main/resources/static/files/assets/fonts/fontawesome-webfont.svg
  73. BIN
      src/main/resources/static/files/assets/fonts/fontawesome-webfont.ttf
  74. BIN
      src/main/resources/static/files/assets/fonts/fontawesome-webfont.woff
  75. BIN
      src/main/resources/static/files/assets/fonts/fontawesome-webfont.woff2
  76. 2945
      src/main/resources/static/files/assets/icon/SVG-animated/svg-weather.css
  77. 508
      src/main/resources/static/files/assets/icon/feather/css/feather.css
  78. BIN
      src/main/resources/static/files/assets/icon/feather/fonts/feather.hxd
  79. 759
      src/main/resources/static/files/assets/icon/feather/fonts/feather.svg
  80. BIN
      src/main/resources/static/files/assets/icon/feather/fonts/feather.ttf
  81. BIN
      src/main/resources/static/files/assets/icon/feather/fonts/feather.woff
  82. 1545
      src/main/resources/static/files/assets/icon/flag-icons/css/flag-icon.css
  83. 152
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ad.svg
  84. 6
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ae.svg
  85. 83
      src/main/resources/static/files/assets/icon/flag-icons/fonts/af.svg
  86. 14
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ag.svg
  87. 767
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ai.svg
  88. 5
      src/main/resources/static/files/assets/icon/flag-icons/fonts/al.svg
  89. 5
      src/main/resources/static/files/assets/icon/flag-icons/fonts/am.svg
  90. 13
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ao.svg
  91. 13
      src/main/resources/static/files/assets/icon/flag-icons/fonts/aq.svg
  92. 31
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ar.svg
  93. 33
      src/main/resources/static/files/assets/icon/flag-icons/fonts/as.svg
  94. 6
      src/main/resources/static/files/assets/icon/flag-icons/fonts/at.svg
  95. 9
      src/main/resources/static/files/assets/icon/flag-icons/fonts/au.svg
  96. 186
      src/main/resources/static/files/assets/icon/flag-icons/fonts/aw.svg
  97. 18
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ax.svg
  98. 8
      src/main/resources/static/files/assets/icon/flag-icons/fonts/az.svg
  99. 12
      src/main/resources/static/files/assets/icon/flag-icons/fonts/ba.svg
  100. 6
      src/main/resources/static/files/assets/icon/flag-icons/fonts/bb.svg

BIN
src/.DS_Store

BIN
src/main/.DS_Store

BIN
src/main/java/.DS_Store

BIN
src/main/java/com/.DS_Store

BIN
src/main/java/com/gcc/.DS_Store

BIN
src/main/java/com/gcc/coworkspace/.DS_Store

13
src/main/java/com/gcc/coworkspace/CoworkspaceApplication.java

@ -0,0 +1,13 @@
package com.gcc.coworkspace;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CoworkspaceApplication {
public static void main(String[] args) {
SpringApplication.run(CoworkspaceApplication.class, args);
}
}

50
src/main/java/com/gcc/coworkspace/component/UserSession.java

@ -0,0 +1,50 @@
package com.gcc.coworkspace.component;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserSession {
private Integer userId =0 ;
private String userType;
private String dispayName;
private Long mobileno =0L;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserType() {
return userType;
}
public void setUserType(String userType) {
this.userType = userType;
}
public String getDispayName() {
return dispayName;
}
public void setDispayName(String dispayName) {
this.dispayName = dispayName;
}
public Long getMobileno() {
return mobileno;
}
public void setMobileno(Long mobileno) {
this.mobileno = mobileno;
}
}

61
src/main/java/com/gcc/coworkspace/component/UserSessionInterceptor.java

@ -0,0 +1,61 @@
package com.gcc.coworkspace.component;
import com.gcc.coworkspace.configuration.AppConfig;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import java.util.Arrays;
import java.util.List;
@Component
public class UserSessionInterceptor implements HandlerInterceptor {
@Autowired
private UserSession userSession;
@Autowired
private AppConfig appConfig;
private static final List<String> EXCLUDED_URLS = Arrays.asList("/user", "/main");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// Get the current request URL
String requestUrl = request.getRequestURI();
request.setAttribute("baseURL", appConfig.getBaseUrl());
//System.out.println("App BaseURL:"+ appConfig.getBaseUrl());
// Exclude static resources from the check
if (requestUrl.startsWith("/user/") || requestUrl.startsWith("/admin/") || requestUrl.startsWith("/caretaker/") || requestUrl.startsWith("/careTaker/") || requestUrl.startsWith("/css/") || requestUrl.startsWith("/js/") || requestUrl.startsWith("/co-workspaceDocuments/") || requestUrl.startsWith("/api/") || requestUrl.startsWith("/payment/") || requestUrl.startsWith("/") ) {
return true; // Allow the request to proceed without checking the login status
}
// Exclude the login page from the check
// Exclude specific URLs from the check
if (EXCLUDED_URLS.contains(requestUrl)) {
return true; // Allow the request to proceed without checking the login status
}
// Check if the user is logged in
// If logged in, add the userSession to the model
// Return true to allow the request to proceed
//if (isLoggedIn()) {
// if(userSession.getUserId() != null && userSession.getUserType() != null) {
// request.setAttribute("userSession", userSession);
// } else {
// request.setAttribute("title", "Login");
// response.sendRedirect("");
// return false; // Stop further processing of the request
// }
return true; // Allow the request to proceed
}
private boolean isLoggedIn() {
// Implement your login check logic here
// For example, check if the userSession contains the necessary information
return userSession.getUserId() != null && userSession.getUserType() != null;
}
}

BIN
src/main/java/com/gcc/coworkspace/configuration/.DS_Store

86
src/main/java/com/gcc/coworkspace/configuration/AppConfig.java

@ -0,0 +1,86 @@
package com.gcc.coworkspace.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String title;
private String baseUrl;
private String getOtpUrl;
private String erpUrl;
private String assetURL;
private String manualRefundCode;
@Value("${payment.razorpay.my_key_id}")
private String keyId;
private String full_URL;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBaseUrl() {
return baseUrl;
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
public String getGetOtpUrl() {
return getOtpUrl;
}
public void setGetOtpUrl(String getOtpUrl) {
this.getOtpUrl = getOtpUrl;
}
public String getErpUrl() {
return erpUrl;
}
public void setErpUrl(String erpUrl) {
this.erpUrl = erpUrl;
}
public String getAssetURL() {
return assetURL;
}
public void setAssetURL(String assetURL) {
this.assetURL = assetURL;
}
public String getManualRefundCode() {
return manualRefundCode;
}
public void setManualRefundCode(String manualRefundCode) {
this.manualRefundCode = manualRefundCode;
}
public String getKeyId() {
return keyId;
}
public void setKeyId(String keyId) {
this.keyId = keyId;
}
public String getFull_URL() {
return full_URL;
}
public void setFull_URL(String full_URL) {
this.full_URL = full_URL;
}
}

88
src/main/java/com/gcc/coworkspace/configuration/DataSourceConfig.java

@ -0,0 +1,88 @@
package com.gcc.coworkspace.configuration;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.client.RestTemplate;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
// host - 13.232.20.48
// user - root
// pass - Bonton#2K24
// DB:- coworkspace
//private static String host = "13.232.20.48";
//private static String dbpassword = "Bonton#2K24";
// AWS
//private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
//private static String dbpassword = "gcc-facial-password";
private static String host ="localhost:3306";
private static String dbpassword = "root";
//private static String dbpassword = "";
// Sampath Local
// private static String host ="localhost";
// private static String dbpassword = "12345678";
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "appEntityManagerFactory",
transactionManagerRef = "appTransactionManager")
// basePackages = {"in.gov.chennaicorporation"})
public static class MysqlAppDataSourceConfig {
@Primary
@Bean(name = "mysqlAppDataSource")
public DataSource mysqlAppDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://"+host+"/coworkingspace");
dataSource.setUsername("root");
dataSource.setPassword(dbpassword);
return dataSource;
}
@Primary
@Bean(name="appEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
@Qualifier("mysqlAppDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setPackagesToScan("com.gcc.coworkspace");
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update");
entityManagerFactoryBean.setJpaProperties(properties);
return entityManagerFactoryBean;
}
@Primary
@Bean(name = "appTransactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("appEntityManagerFactory") jakarta.persistence.EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

44
src/main/java/com/gcc/coworkspace/configuration/QrGenerator.java

@ -0,0 +1,44 @@
package com.gcc.coworkspace.configuration;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
public class QrGenerator {
public static String generateQRCode(String url) throws WriterException, IOException {
int width = 1800; // width of the QR code image
int height = 1800; // height of the QR code image
String format = "png"; // format of the QR code image
String charset = "UTF-8"; // character set used to encode the data
// create the QR code writer and hints
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, charset);
// generate the QR code matrix
BitMatrix matrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE, width, height, hints);
// create the QR code image as a byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(matrix, format, baos);
byte[] imageBytes = baos.toByteArray();
// encode the image data in base64 format
String base64EncodedImage = Base64.getEncoder().encodeToString(imageBytes);
return base64EncodedImage;
}
}

442
src/main/java/com/gcc/coworkspace/configuration/RefundScheduler.java

@ -0,0 +1,442 @@
package com.gcc.coworkspace.configuration;
import com.gcc.coworkspace.constants.AppConstants;
import com.gcc.coworkspace.service.BookingService;
import com.gcc.coworkspace.service.PaymentService;
import com.gcc.coworkspace.service.RefundService;
import com.razorpay.Order;
import com.razorpay.Payment;
import com.razorpay.RazorpayClient;
import com.razorpay.RazorpayException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Component
@EnableScheduling
public class RefundScheduler {
@Autowired
@Lazy
RefundService refundService;
@Autowired
PaymentService paymentService;
@Autowired
public JdbcTemplate jdbcTemplate;
//@Scheduled(cron = "0 0 1 * * *", zone = "Asia/Kolkata") // runs every 30 seconds (adjust as needed)
@Scheduled(cron = "0 30 23 * * *", zone = "Asia/Kolkata") //11:30 PM IST (Asia/Kolkata)
public void updateOrderPaymentStatus() {
System.out.println("Fetching payment status from Razorpay...");
try {
// Query orders with NULL order_status
String sql = "SELECT order_id, cdate FROM order_log WHERE (order_status IS NULL OR order_status = '') AND is_counter_booking = 0 and cdate < CURDATE() ORDER BY id ";//
List<Map<String, Object>> orders = jdbcTemplate.queryForList(sql);
if (orders.isEmpty()) {
System.out.println("No orders with NULL status.");
return;
}
// Collect orderIds into a list
List<String> orderIds = new ArrayList<>();
for (Map<String, Object> order : orders) {
orderIds.add((String) order.get("order_id"));
}
// Fetch payment status for all orders using the fetchPayments API for multiple orderIds
fetchAndUpdatePaymentStatus(orderIds);
} catch (Exception e) {
System.err.println("Error fetching payment status: " + e.getMessage());
e.printStackTrace();
}
}
public void fetchAndUpdatePaymentStatus(List<String> orderIds) {
try {
System.out.println("Fetching payment status for multiple orders...");
RazorpayClient razorpayClient = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
// Fetch payments for the specified orderIds
for (String orderId : orderIds) {
List<Payment> payments = razorpayClient.orders.fetchPayments(orderId);
System.out.println("Payment response line :100 :"+payments);
String ps ="Not Processed";
// Check if there are payments for the order
if (payments != null && !payments.isEmpty()) {
int i=0;
int c =0;
for (Payment payment : payments) {
String paymentStatus = (payment.get("status") != null) ? payment.get("status").toString() : "";
String paymentId = (payment.get("id") != null) ? payment.get("id").toString() : "";
String amount = (payment.get("amount") != null) ? payment.get("amount").toString() : "0";
String captured_at = ""; //(payment.get("captured_at") != null) ? payment.get("captured_at").toString() : "0";
String contactNo = (payment.get("contact") != null) ? payment.get("contact").toString() : "0";
System.out.println("contactno line 157--> " + contactNo);
System.out.println("payments=================="+payment);
String paymentDate ="";
Object createdAtObj =null;
//Date Convention
try {
//Object createdAtObj = payment.has("captured_at") ? payment.get("captured_at") : null;
createdAtObj = payment.get("captured_at") != null ? payment.get("captured_at") : null;
if (createdAtObj != null) {
Instant createdAtInstant = (createdAtObj instanceof Date)
? ((Date) createdAtObj).toInstant()
: (createdAtObj instanceof Number)
? Instant.ofEpochSecond(((Number) createdAtObj).longValue())
: Instant.ofEpochMilli(System.currentTimeMillis());
paymentDate = createdAtInstant
.atZone(ZoneId.of("Asia/Kolkata"))
.toLocalDateTime()
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// Convert to formatted datetime (e.g., 2025-04-19 17:00:00)
LocalDateTime dateTime = createdAtInstant
.atZone(ZoneId.of("Asia/Kolkata"))
.toLocalDateTime();
}
}catch (Exception e){
e.printStackTrace();
}
//End of Date Convention
System.out.println("Payment Status for Order ID " + orderId + ": " + paymentStatus);
if(payments.size()==1) {
// Update the order status in the order_log table based on payment status
payment.get("id").toString() ;
updateOrderStatusInOrderLog(orderId, paymentStatus,payments.size(),paymentId,amount,paymentDate,contactNo);
c=1;
}else if(paymentStatus.equals("captured") && i ==0 ) {
updateOrderStatusInOrderLog(orderId, paymentStatus,payments.size(),paymentId,amount,paymentDate,contactNo);
c=1;
}
else if(ps.equals(paymentStatus) && paymentStatus.equals("captured") ) {
//refund logic to be implemented
//razorpay will handle this scenario
c=1;
}
else if(paymentStatus.equals("captured") && c == 0) {
updateOrderStatusInOrderLog(orderId, paymentStatus,payments.size(),paymentId,amount,paymentDate,contactNo);
c=1;
}
ps=paymentStatus;
i++;
}
System.out.println("line :-193 :--->"+ps);
if(c==0) {
updateOrderStatusInOrderLog(orderId, ps,payments.size(),null,null,null, null);
}
} else {
System.out.println("No payments found for Order ID: " + orderId);
updateOrderStatusInOrderLog(orderId, ps,payments.size(),null,null,null, null);
}
}
} catch (RazorpayException e) {
System.err.println("Error fetching payment status: " + e.getMessage());
}
}
public void updateOrderStatusInOrderLog(String orderId, String paymentStatus,int pay_attemp,
String paymentId,String amountStr,String paymentDateTicks,String contactNo) {
// SQL query to update the order status in order_log table
String sqlUpdate = "UPDATE order_log SET order_status = ? WHERE order_id = ?";
double amount = 0;
try {
// Check the payment status and update accordingly
if ("captured".equalsIgnoreCase(paymentStatus)) {
// Update status to 'PAID'
jdbcTemplate.update(sqlUpdate, "captured", orderId);
if(amountStr != null && !amountStr.equals("0")) {
amount= Double.parseDouble(amountStr) / 100.0;
}
String sqlGetTempId = "SELECT temp_booking_id FROM order_log WHERE order_id = ?";
String tempid = jdbcTemplate.queryForObject(sqlGetTempId, String.class, orderId);
System.out.println("==========tempid=========="+tempid);
insertPaymentDetails(orderId, paymentId, paymentStatus, paymentDateTicks, contactNo, amount,tempid);
System.out.println("Updated Order ID: " + orderId + " to PAID");
} else if ("failed".equalsIgnoreCase(paymentStatus)) {
// Update status to 'FAILED'
jdbcTemplate.update(sqlUpdate, "failed", orderId);
System.out.println("Updated Order ID: " + orderId + " to FAILED");
} else if ("refunded".equalsIgnoreCase(paymentStatus)) {
// Update status to 'FAILED'
jdbcTemplate.update(sqlUpdate, "refunded", orderId);
System.out.println("Updated Order ID: " + orderId + " to refunded");
} else {
jdbcTemplate.update(sqlUpdate, paymentStatus, orderId);
System.out.println("Payment status for Order ID " + orderId + " is not 'captured' or 'failed'. No update performed.");
}
} catch (DataAccessException e) {
System.err.println("Error while updating order status: " + e.getMessage());
}
}
public void insertPaymentDetails(String orderId, String paymentId, String paymentStatus,
String paymentDate, String mobileNumber, double amount, String tempid) {
Integer pid = null;
int bookingId = 0;
try {
// Step 1: Check if order_id already exists in payment table
String checkSql = "SELECT * FROM payment WHERE order_id = ?";
List<Map<String, Object>> ids = jdbcTemplate.queryForList(checkSql, orderId);
if (!ids.isEmpty()) {
// Already exists — pick first
pid = (Integer)ids.get(0).get("id");
bookingId = ids.get(0).get("booking_id")!=null ? (Integer)ids.get(0).get("booking_id") : 0;
if(bookingId == 0){
// checkBookingAndUpdateStatus(orderId, paymentStatus);
initiateRefund(orderId, bookingId);
}else {
String bkStatus = "success";
bkStatus = jdbcTemplate.queryForObject("SELECT booking_status FROM booking WHERE booking_id = ?", String.class, bookingId);
if ("pending".equalsIgnoreCase(bkStatus) || bkStatus == null) {
// checkBookingAndUpdateStatus(orderId, paymentStatus);
initiateRefund(orderId, bookingId);
}
}
System.out.println("⚠️ Payment already exists for order_id: " + orderId + ", using pid: " + pid);
} else {
// Step 2: Normalize payment status
if ("captured".equalsIgnoreCase(paymentStatus)) {
paymentStatus = "paid"; // ✅ convert captured to paid
}
// Step 3: Insert new payment
String paymentIdStr = String.valueOf(paymentService.savePayment( String.valueOf(amount), paymentId, orderId, paymentStatus, String.valueOf(bookingId), mobileNumber));
System.out.println("✅ Inserted new payment record for order_id: " + orderId);
System.out.println("======================>>>>>>"+paymentIdStr);
initiateRefund(orderId, bookingId);
}
} catch (Exception e) {
System.err.println("❌ Error during insertPaymentDetails for order_id: " + orderId);
e.printStackTrace();
}
}
/* public void checkBookingAndUpdateStatus(String orderId, String paymentStatus) {
// SQL to check the booking status for this order
String sqlBookingStatus = "SELECT b.booking_id, b.booking_status, py.id " +
"FROM order_log ol " +
"JOIN payment py ON ol.order_id = py.order_id " +
"JOIN booking b ON py.booking_id = b.booking_id " +
"WHERE ol.order_id = ?";
try {
// Get the booking information
List<Map<String, Object>> bookingInfo = jdbcTemplate.queryForList(sqlBookingStatus, orderId);
int bookingId = 0;
if (!bookingInfo.isEmpty()) {
Map<String, Object> bookingDetails = bookingInfo.get(0);
String bookingStatus = (String) bookingDetails.get("booking_status");
bookingId = bookingDetails.get("booking_id")!=null?(Integer) bookingDetails.get("booking_id"):0;
System.out.println("Booking Status for Order ID " + orderId + ": " + bookingId);
// Case 1: If booking status is "null" or "pending", initiate refund
// Case 2: If payment status is "captured" (Paid) but no status in the booking table, initiate refund
System.out.println("Booking status for Order ID " + orderId + " is confirmed. No update required.");
initiateRefund(orderId, bookingId);
} else {
System.out.println("No booking information found for Order ID: " + orderId);
initiateRefund(orderId, 0);
}
} catch (DataAccessException e) {
System.err.println("Error while checking and updating booking status: " + e.getMessage());
}
}
*/
// Method to initiate refund process
private void initiateRefund(String orderId, int bookingId) {
try {
System.out.println("Initiating refund for Order ID: " + orderId);
// Fetch the primary key (`id`) from the `payment` table
String sql = "SELECT id FROM payment WHERE booking_id = ? and order_id = ? ";
List<Integer> paymentIds = jdbcTemplate.queryForList(sql, Integer.class, bookingId, orderId);
if (!paymentIds.isEmpty()) {
int paymentId = paymentIds.get(0); // ✅ Get the first result
System.out.println("Payment ID found: " + paymentId);
// Call refundProcessOrder() with correct int pid
ResponseEntity<?> response = refundService.refundProcessOrder("Refund Initiated", bookingId, paymentId);
System.out.println("Refund API Response: " + response.getBody());
} else {
System.err.println("No payment record found for Booking ID: " + bookingId);
}
} catch (Exception e) {
System.err.println("Error initiating refund for Order ID: " + orderId + ": " + e.getMessage());
e.printStackTrace();
}
}
//@Scheduled(fixedRate = 3000) // 300000 milliseconds = 5 minutes
@Scheduled(cron = "0 0 1 * * *", zone = "Asia/Kolkata")
public void refundRrnScheduler() {
System.out.println("yes....REFUNDStatus_Check_Intiated");
List<Map<String, Object>> list = refundService.getbyrefundstatus("REFUND_PROCESSED");
for (Map<String, Object> map : list) {
// System.out.println(map);
if (map.get("refund_id") != null) {
String refund_id = (String) map.get("refund_id");
String rrn = refundStatus(refund_id);
if (!rrn.equals("error")) {
int id = Integer.parseInt(map.get("id") + "");
refundService.updateRefundRrnStatus(id, map.get("refund_id").toString(), rrn, "REFUNDED");
}
}
}
}
public String refundStatus(String refund_id) {
System.out.println("yes....REFUND_PROCESSED ");
try {
RazorpayClient razorpayClient = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
com.razorpay.Refund refunds = razorpayClient.refunds.fetch(refund_id);
System.out.println(refunds.get("acquirer_data").toString());
// if(refunds.get("acquirer_data")!= null){
JSONObject map = refunds.get("acquirer_data");
System.out.println(map);
if (map.get("rrn") != null && !map.get("rrn").equals("")) {
System.out.println(map.get("rrn"));
return map.get("rrn").toString();
}
// }
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "error";
}
/*
public void checkBookingStatus(String orderId) {
System.out.println("🔍 Checking booking status for order_id: " + orderId);
try {
// Step 1: Fetch booking_id from payment table using order_id
String getBookingIdSql = "SELECT booking_id FROM payment WHERE order_id = ?";
Integer bookingId = jdbcTemplate.queryForObject(getBookingIdSql, Integer.class, orderId);
if (bookingId != null) {
// Step 2: Fetch booking status using booking_id
String getBookingStatusSql = "SELECT booking_status FROM booking WHERE booking_id = ?";
String bookingStatus = jdbcTemplate.queryForObject(getBookingStatusSql, String.class, bookingId);
System.out.println("➡ Booking ID: " + bookingId + " | Status: " + bookingStatus);
// If status is success, do nothing
if ("success".equalsIgnoreCase(bookingStatus)) {
System.out.println("✅ Booking is successful. No refund required.");
} else {
System.out.println("⚠️ Booking is not successful. Initiating refund...");
initiateRefund(orderId, bookingId);
}
} else {
System.out.println("⚠️ No booking_id found for order_id: " + orderId + ". Initiating refund...");
initiateRefund(orderId, 0);
}
} catch (EmptyResultDataAccessException e) {
System.out.println("⚠️ No booking_id or status found for order_id: " + orderId + ". Initiating refund...");
initiateRefund(orderId, 0);
} catch (Exception e) {
System.err.println("❌ Error in checkBookingStatus for order_id: " + orderId);
e.printStackTrace();
}
}
*/
// public void initiateRefundlog(String orderId, Integer bookingId) {
// System.out.println("yes....REFUNDStatus_Check_Intiated");
// // String refundStatus = "refunded";
// String sql = "INSERT INTO refund_log (order_id, booking_id) VALUES (?, ?)";
// }
}

50
src/main/java/com/gcc/coworkspace/configuration/WebConfig.java

@ -0,0 +1,50 @@
package com.gcc.coworkspace.configuration;
import com.gcc.coworkspace.component.UserSessionInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.io.File;
import java.util.List;
@Configuration
public class WebConfig implements WebMvcConfigurer {
private final String uploadDirectory;
public ResourceHandlerRegistry registryHandler;
@Autowired
public WebConfig(@Value("${file.upload.directory}") String uploadDirectory) {
this.uploadDirectory = uploadDirectory;
}
@Autowired
private UserSessionInterceptor userSessionInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userSessionInterceptor);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
System.out.println(uploadDirectory);
File f = new File(uploadDirectory);
File profile = new File(uploadDirectory);
if (!profile.exists()) {
profile.mkdirs();
}
registry.addResourceHandler("/co-workspaceDocuments/**").addResourceLocations("file:" +uploadDirectory+"/");
}
}

11
src/main/java/com/gcc/coworkspace/constants/AppConstants.java

@ -0,0 +1,11 @@
package com.gcc.coworkspace.constants;
public final class AppConstants {
// public static String key_id="rzp_live_ySI5Ns54Y7qOcJ";
// public static String key_secret="Nwf1TjhUtaskof8vePkRR8Sb";
//uncomment for testing payment
public static String key_id="rzp_test_tDkHFEqWXmuEi8";
public static String key_secret="cBQUjMcKZ4J6vmOKSyNZ92py";
}

BIN
src/main/java/com/gcc/coworkspace/controller/.DS_Store

217
src/main/java/com/gcc/coworkspace/controller/AttendanceController.java

@ -0,0 +1,217 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.service.AttendanceService;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api/attendance")
public class AttendanceController {
@Autowired
AttendanceService attendanceService;
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/getAttendance")
public List<Map<String, Object>> getAttendance(
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "typeName", required = false) String typeName,
@RequestParam(value = "noOfPerson", required = false) Integer noOfPerson,
@RequestParam(value = "fromDate", required = false) String fromDate,
@RequestParam(value = "toDate", required = false) String toDate,
@RequestParam(value = "bid", required = false) Integer bid
) {
System.out.println("noOfPerson");
System.out.println(noOfPerson);
System.out.println("bid");
System.out.println(bid);
return attendanceService.getAttendance(type, typeName, noOfPerson, fromDate, toDate,bid);
}
/* @GetMapping("/getAttendancereport")
public List<Map<String, Object>> getAttendance2(
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "typeName", required = false) String typeName,
@RequestParam(value = "noOfPerson", required = false) Integer noOfPerson,
@RequestParam(value = "fromDate", required = false) String fromDate,
@RequestParam(value = "toDate", required = false) String toDate
) {
System.out.println("noOfPerson");
System.out.println(noOfPerson);
return attendanceService.getAttendance2(type, typeName, noOfPerson, fromDate, toDate);
}*/
@GetMapping("/getAttendancereport")
public List<Map<String, Object>> getAttendance2(
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "typeName", required = false) String typeName,
@RequestParam(value = "bid", required = false) String bid,
@RequestParam(value = "noOfPerson", required = false) Integer noOfPerson,
@RequestParam(value = "fromDate", required = false) String fromDate,
@RequestParam(value = "toDate", required = false) String toDate
) {
System.out.println("noOfPerson");
System.out.println(noOfPerson);
return attendanceService.getAttendance2(type, typeName, bid,noOfPerson, fromDate, toDate);
}
@GetMapping("/getAbsentCount")
public Map<String, Object> getAbsentCount(@RequestParam("bookingId") int bookingId) {
System.out.println("bookingId");
System.out.println(bookingId);
return attendanceService.getAbsentCountByBookingId(bookingId);
}
@GetMapping("/updateAbsentCount")
public Map<String, Object> updateAbsentCount(@RequestParam("bookingId") int bookingId,@RequestParam("noOfAbsent") int noOfAbsent) {
System.out.println("bookingId");
System.out.println(bookingId);
System.out.println("noOfAbsent");
System.out.println(noOfAbsent);
return attendanceService.updateAbsentCountByBookingId(noOfAbsent,bookingId);
}
@GetMapping("/getAttendanceWithSlotDetails")
public List<Map<String, Object>> getAttendanceWithSlotDetails(
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "typeName", required = false) String typeName,
@RequestParam(value = "noOfPerson", required = false) Integer noOfPerson,
@RequestParam(value = "fromDate", required = false) String fromDate,
@RequestParam(value = "toDate", required = false) String toDate
) { System.out.println("noOfPerson");
System.out.println(noOfPerson);
return attendanceService.getAttendanceWithSlotDetails(type, typeName, noOfPerson, fromDate, toDate);
}
@GetMapping("/hasTodayAttendance")
public boolean hasTodayAttendance(@RequestParam int bookingId) {
return attendanceService.hasTodayAttendance(bookingId);
}
// @PostMapping("/save")
// public String saveAttendance(@RequestParam int bookingId, @RequestBody Map<String, Object> requestData) {
// int rowsInserted = attendanceService.saveAttendanceByBookingId(bookingId, requestData);
// if (rowsInserted > 0) {
// return "Attendance record inserted successfully!";
// } else {
// return "Failed to insert attendance record.";
// }
// }
@PostMapping("/saveAndUpdate")
public ResponseEntity<Map<String, Object>> saveAndUpdateAttendance(
@RequestParam("bookingId") int bookingId,
@RequestBody Map<String, Object> payload) {
int noOfAbsent = Integer.parseInt(payload.get("no_of_person_absent").toString());
boolean success = attendanceService.saveAndUpdateAttendance(bookingId, noOfAbsent);
if (success) {
return ResponseEntity.ok(Map.of("success", true, "message", "Attendance saved and calendar updated."));
} else {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("success", false, "message", "Failed to process attendance."));
}
}
@PostMapping("/saveAbsent")
public ResponseEntity<Map<String, Object>> saveAbsent(
@RequestBody List<Map<String, Object>> absentList,
@RequestParam("bid") String bid,@RequestParam("absentDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate absentDate) {
boolean success = attendanceService.saveAbsent(absentList,Integer.parseInt(bid));
if (success) {
int toadyAbsent=getabsentCount(Integer.parseInt(bid));
System.out.println("todayAbsent: " + toadyAbsent);
System.out.println("absentDate"+absentDate);
System.out.println("bid"+bid);
int inserted = attendanceService.insertAbsentCount(Integer.parseInt(bid),absentDate,toadyAbsent);
if (inserted > 0) {
return ResponseEntity.ok(Map.of("success", true, "message", "Attendance saved and calendar updated."));
}
else {
return ResponseEntity.ok(Map.of("success", false, "message", "Failed to process attendance."));
}
} else {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Map.of("success", false, "message", "Failed to process attendance."));
}
}
@PostMapping("/insertAbsentCount")
public ResponseEntity<Map<String,Object>> insertAbsentCount(
@RequestParam("bid") int bid,
@RequestParam("absentDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
LocalDate absentDate
) {
int absentCount=getabsentCount(bid);
int inserted = attendanceService.insertAbsentCount(bid,absentDate,absentCount);
Map<String,Object> body = new HashMap<>();
if (inserted > 0) {
body.put("success", true);
body.put("message", "Inserted " + inserted + " record" + (inserted > 1 ? "s" : ""));
return ResponseEntity
.status(HttpStatus.CREATED)
.body(body);
} else {
body.put("success", false);
body.put("message", "No records were inserted");
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body(body);
}
}
public int getabsentCount(int bid) {
String sql="SELECT COALESCE(SUM(absent_count), 0) AS total_absent_today " +
"FROM calendar " +
"WHERE DATE(bdate) = CURDATE() AND bid=? AND is_active = 1 AND is_delete = 0";
return jdbcTemplate.queryForObject(sql,Integer.class,bid);
}
@GetMapping("/absentCountToday")
public ResponseEntity<Integer> getTodayAbsentCount(@RequestParam int bid) {
System.out.println("Building ID in Controller: " + bid);
try {
int totalAbsent = attendanceService.getTodayAbsentCount(bid);
System.out.println("Total Absent Today: " + totalAbsent);
return ResponseEntity.ok(totalAbsent);
} catch (Exception e) {
return ResponseEntity.ok(0);
}
}
}

487
src/main/java/com/gcc/coworkspace/controller/BookingController.java

@ -0,0 +1,487 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.component.UserSession;
import com.gcc.coworkspace.configuration.AppConfig;
import com.gcc.coworkspace.configuration.QrGenerator;
import com.gcc.coworkspace.constants.AppConstants;
import com.gcc.coworkspace.service.BookingService;
import com.gcc.coworkspace.service.NormalSMS;
import com.gcc.coworkspace.service.PaymentService;
import com.google.zxing.WriterException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import com.razorpay.Order;
import com.razorpay.RazorpayClient;
import com.razorpay.RazorpayException;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api")
public class BookingController {
@Autowired
private BookingService bookingService;
@Autowired
private AppConfig appConfig;
@Autowired
private BookingService bookingser;
@Autowired
private UserSession userSession;
@Autowired
private PaymentService paymentService;
@Autowired
private NormalSMS normalSMS;
@PostMapping("/saveInTemp")
public Map<String, Object> booking(@RequestParam("catId") int catId,
@RequestParam("buildId") int buildId,
@RequestParam("subId") int subId,
@RequestParam("noOfPeople") int noOfPeople,
@RequestParam("fromDate") LocalDate fromDate,
@RequestParam("toDate") LocalDate toDate,
@RequestParam("userName") String userName,
@RequestParam("userMobile") long userMobile,
// @RequestParam("amount") double amount,
@RequestParam("slots") List<Integer> slots){
System.out.println(catId);
System.out.println(slots);
return bookingService.saveTempBooking(userName,userMobile, slots, fromDate, toDate,noOfPeople,catId,buildId,subId) ;
}
// @PostMapping("/saveBooking")
// public int saveBooking(@RequestParam("tempBookId") int tempBookId){
//
// return bookingService.saveBooking(tempBookId);
// }
/*
@GetMapping("/checkAvail")
public Boolean checkAvailability(int bid,int cid,LocalDate bDate,int scid,int noOfPerson,int slotId){
System.out.println("check Availability");
return bookingService.checkAvailabilityByBdate(bid,cid,bDate,scid,noOfPerson,slotId);
}
*/
@GetMapping("/checkAvail")
public Boolean checkAvailability(int bid,int cid,LocalDate bDate,int scid,int noOfPerson,int slotId){
System.out.println("check Availability");
return bookingService.checkAvailabilityByBdate(bid,cid,bDate,scid,noOfPerson,slotId);
}
@GetMapping("/hasTodayAttendance")
public ResponseEntity<Map<String,Object>> hasTodayAttendance(
@RequestParam("buildingid") int buildingid) {
boolean exists = bookingService.hasTodayAttendance(buildingid);
Map<String,Object> response = new HashMap<>();
response.put("exists", exists);
return ResponseEntity.ok(response);
}
@PostMapping(value="/create_order")
public String create_order(HttpServletRequest request,@RequestParam("id") int tempid) throws RazorpayException {
// Get data from the service
Map<String, Object> tempBookingInfo = bookingService.getTempBookingByTempId(tempid);
// Check if the list is not empty
if (tempBookingInfo!=null && !tempBookingInfo.isEmpty()) {
String tempbookid = tempBookingInfo.get("tempbookid").toString();
String amount = tempBookingInfo.get("amount").toString();
double amountDouble = 0.0;
try {
amountDouble = Double.parseDouble(amount);
} catch (NumberFormatException e) {
System.out.println("Invalid number format for amount: " + amount);
}
//To enable testing mode in appConstants if required for testing & development
var client = new RazorpayClient(AppConstants.key_id,AppConstants.key_secret);
JSONObject options = new JSONObject();
options.put("amount", amountDouble * 100);
options.put("currency", "INR");
Order od = client.orders.create(options);
System.out.println(od);
paymentService.saveorderLog(od.get("id").toString(),od.toString(),tempbookid);
return od.toString();
} else {
System.out.println("No data found for tempid: " + tempid);
return "No data found for tempid: " + tempid;
}
// return "error";
}
@PostMapping("/Confirm")
public String updateOrder(@RequestBody Map<String,Object> data){
String tempid=data.get("id").toString();;
String pay_id= data.get("payment_id").toString();
String order_id=data.get("order_id").toString();
String status=data.get("status").toString();
String amount =(Double.parseDouble(data.get("amount").toString())/100)+"";
int pid = paymentService.savePayment(amount,pay_id,order_id,status,0+"",0+"");
try {
int bookingId = bookingser.saveBooking(Integer.parseInt(tempid),pid);
//
// Print or use the values as required
System.out.println("Temp ID: " + tempid);
System.out.println("Booking ID:- "+bookingId);
return bookingId+"";
}catch (Exception e){
System.out.println("error: "+e.getMessage());
System.out.println("No booking data found for tempid: " + tempid);
return "error";
}
}
//mobile app development
@GetMapping("/bookings")
public ResponseEntity<List<Map<String, Object>>> getBookingsByMobileNo(@RequestParam long mobileNo) {
List<Map<String, Object>> bookings = bookingService.getBookingByMobileNo(mobileNo);
if (bookings.isEmpty()) {
return ResponseEntity.notFound().build(); // Return 404 if no bookings found
}
return ResponseEntity.ok(bookings); // Return 200 with the bookings data
}
@GetMapping("/generate-qrcode")
public ResponseEntity<?> generateQRCode(@RequestParam(required = true) String booking_id) {
if (booking_id == null) {
return ResponseEntity.badRequest().body("{\"error\":\"Mobile number is required\"}");
}
try {
// URL for the booking details API
String url = appConfig.getFull_URL()+"/bookingQRCode?booking_id=" + booking_id;
// Generate QR code as base64 string
String base64QRCode = QrGenerator.generateQRCode(url);
return ResponseEntity.ok().body(base64QRCode);
} catch (WriterException | IOException e) {
((Throwable) e).printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("{\"error\":\"Error generating QR code\"}");
}
}
@GetMapping(value = "/sendOTP")
public String sendOtp(HttpServletRequest request, @RequestParam String mobileNo, @RequestParam String purpose) {
// Check if the mobile number exists in the database
// List<BookingDetails> bookingDetailsList =
// bookingDetailsRepository.findByMobileNo(Long.parseLong(mobileNo));
List<?> bookingDetailsList = bookingser.findByMobileNo(Long.parseLong(mobileNo));
if (bookingDetailsList == null || bookingDetailsList.isEmpty()) {
// If the mobile number is not registered, return an error message
return "Error: This number is not registered.";
}
// Generate OTP logic as before
String MobileNo = mobileNo;
Random rand = new Random();
int otp = rand.nextInt(90000) + 10000;
System.out.print("\n otp---:" + otp);
String bodyMessage = normalSMS.sendOTPNsms(mobileNo,otp+"");
HttpSession session = request.getSession();
session.setAttribute("otp", otp);
session.setAttribute("mobileNo", mobileNo);
return bodyMessage;
}
@GetMapping(value = "/verifyOTP")
@ResponseBody
public Map<String, Object> verifyOtp(HttpServletRequest request, @RequestParam String otp) {
HttpSession session = request.getSession();
Map<String, Object> response = new HashMap<>();
try {
Integer session_otp = (Integer) session.getAttribute("otp");
System.out.println("session_otp---:" + session_otp);
Integer entered_otp = Integer.parseInt(otp);
if (session_otp != null && session_otp.equals(entered_otp)) {
System.out.println("Entered OTP Correct");
session.setAttribute("verifiedotp", "success");
String mobileStr = String.valueOf(session.getAttribute("mobileNo"));
Long mobileNo = Long.parseLong(mobileStr);
userSession.setMobileno(mobileNo);
response.put("status", "Success");
response.put("mobileNo", mobileStr);
if (bookingService.isUserRegistered(mobileStr)) {
Map<String, Object> userDetails = bookingService.getComplaintAndUserDetailsByMobile(mobileStr);
if (userDetails != null) {
response.put("userName", userDetails.get("user_name"));
response.put("mobileNo", userDetails.get("mobile"));
response.put("complaints", userDetails.get("complaints")); // Will be a List
}
}
} else {
System.out.println("Incorrect OTP. Please enter correct OTP.");
session.setAttribute("verifiedotp", "error");
response.put("status", "Error");
}
} catch (NumberFormatException e) {
System.out.println("Invalid OTP format: " + otp);
response.put("status", "Error");
} catch (Exception e) {
System.out.println("Error verifying OTP: " + e.getMessage());
response.put("status", "Error");
}
return response;
}
/*
@GetMapping(value = "/verifyOTP")
public String verifyOtp(HttpServletRequest request, @RequestParam String otp) {
HttpSession session = request.getSession();
try {
Integer session_otp = (Integer) session.getAttribute("otp");
System.out.println("session_otp---:" + session_otp);
Integer entered_otp = Integer.parseInt(otp);
if (session_otp != null && session_otp.equals(entered_otp)) {
System.out.println("Entered OTP Correct");
session.setAttribute("verifiedotp", "success");
userSession.setMobileno(Long.parseLong(session.getAttribute("mobileNo").toString()));
return "Success";
} else {
System.out.println("Incorrect OTP. Please enter correct OTPs.");
session.setAttribute("verifiedotp", "error");
return "Error";
}
} catch (NumberFormatException e) {
System.out.println("Invalid OTP format: " + otp);
return "Error";
} catch (Exception e) {
System.out.println("Error verifying OTP: " + e.getMessage());
return "Error";
}
}
*/
// @PostMapping("/validatelogin")
// public ResponseEntity<?> checkLogin(@RequestParam String usernametxt, @RequestParam String passwordtxt, HttpSession session) {
// try {
// String userName = bookingser.validateLogin(usernametxt, passwordtxt);
// if (userName != null) {
// // Set user info in the session
// session.setAttribute("mobileno", usernametxt);
// session.setAttribute("user_name",userName );
// return ResponseEntity.ok(userName);
// } else {
// return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body("error");
// }
// } catch (Exception e) {
// e.printStackTrace();
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal server error occurred");
// }
// }
// added by yogi
@PostMapping("/validatelogin")
public ResponseEntity<?> checkLogin(
@RequestParam String usernametxt,
@RequestParam String passwordtxt,
HttpSession session) {
try {
Map<String, Object> userData = bookingser.validateLogin(usernametxt, passwordtxt);
if (userData != null) {
String userName = (String) userData.get("user_name");
//Integer bid = (Integer) userData.get("bid");
// FIX: Convert BID safely
Integer bid = Integer.valueOf(userData.get("bid").toString());
// Store in session
// Store in session
session.setAttribute("user_name", userName);
session.setAttribute("bid", bid);
// Return clean JSON
Map<String, Object> response = new HashMap<>();
response.put("status", "success");
response.put("user_name", userName);
response.put("bid", bid);
System.out.println("Logged in user=" + userName + ", BID=" + bid);
return ResponseEntity.ok(response);
} else {
return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body("error");
}
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Internal server error occurred");
}
}
//ak
@GetMapping("/bookinghistorydetails")
@ResponseBody
public List<Map<String, Object>> getBookingHistoryByMobileNo(@RequestParam String mobileno) {
long mobileNo = Long.parseLong(mobileno);
return bookingService.getBookingDetailsByMobileNo(mobileNo);
}
@GetMapping("/bookingDetails")
@ResponseBody
public List<Map<String, Object>> getBookingDetailsByMobileNo(@RequestParam String mobileno) {
long mobileNo = Long.parseLong(mobileno);
return bookingService.getBookingByMobileNo(mobileNo);
}
@GetMapping("/getAvailabilityBySlot")
public List<Map<String, Object>> getAvailabilityBySlot(@RequestParam int scid, @RequestParam String selectedDate) {
return bookingService.getCalendarBasedOnSubCatId(scid, selectedDate);
// Replace with the actual view name
}
/* @GetMapping("/getbookingdetailDashBoard")
public List<Map<String, Object>> getbookingdetailDashBoard(@RequestParam String fromDate, @RequestParam String toDate, @RequestParam String status) {
return bookingService.getbookingdetailDashBoard(fromDate,toDate, status);
}*/
//ak
@GetMapping("/getbookingdetailDashBoard")
public List<Map<String, Object>> getbookingdetailDashBoard(
@RequestParam String fromDate,
@RequestParam String toDate,
@RequestParam String status,
@RequestParam int bid) {
System.out.println("fromdate: " + fromDate);
System.out.println("bid: " + bid);
System.out.println("status: " + status);
System.out.println("toDate: " + toDate);
return bookingService.getbookingdetailDashBoard(fromDate, toDate, status, bid);
}
/* @GetMapping("/amountCollected")
public List<Map<String, Object>> getAmountCollected(@RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate) {
// Convert the string dates to LocalDate
LocalDate parsedFromDate = LocalDate.parse(fromDate);
LocalDate parsedToDate = LocalDate.parse(toDate);
return bookingService.getAmountCollectedByDate(parsedFromDate, parsedToDate);
}*/
@GetMapping("/amountCollected")
public List<Map<String, Object>> getAmountCollected(
@RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate,
@RequestParam("bid") int bid) {
LocalDate parsedFromDate = LocalDate.parse(fromDate);
LocalDate parsedToDate = LocalDate.parse(toDate);
return bookingService.getAmountCollectedByDate(parsedFromDate, parsedToDate, bid);
}
/*@GetMapping("/bookingCountByCategory")
public List<Map<String, Object>> getBookingCountsByCategory(@RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate,) {
// Call the service method to get the booking counts for the specified date range
return bookingService.getBookingCountsByCategory(fromDate, toDate);
}*/
//ak
@GetMapping("/bookingCountByCategory")
public List<Map<String, Object>> getBookingCountsByCategory(
@RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate,
@RequestParam("bid") int bid) {
return bookingService.getBookingCountsByCategory(fromDate, toDate, bid);
}
/* @GetMapping("/totalBookingCounts")
public List<Map<String, Object>> getBookingCounts(@RequestParam("fromDate") String fromDate,@RequestParam("toDate")String toDate) {
// Call service method to get booking counts
return bookingService.getBookingCountsByDate(fromDate,toDate);
}*/
//ak
@GetMapping("/totalBookingCounts")
public List<Map<String, Object>> getBookingCounts(
@RequestParam("fromDate") String fromDate,
@RequestParam("toDate") String toDate,
@RequestParam("bid") int bid) {
return bookingService.getBookingCountsByDate(fromDate, toDate, bid);
}
@GetMapping("/bookinghistory")
@ResponseBody
public List<Map<String, Object>> getBookingHistory() {
if (userSession != null && userSession.getMobileno() != 0) {
return bookingService.getBookingByMobileNo(userSession.getMobileno());
}
return Collections.emptyList();
}
@GetMapping("/getComplaintsByMobile")
public ResponseEntity<?> getComplaintAndUserDetailsByMobile(@RequestParam("mobileNo") String mobileNo) {
Map<String, Object> result = bookingService.getComplaintAndUserDetailsByMobile(mobileNo);
if (result == null || result.isEmpty()) {
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
.body("No user or complaints found for mobile number: " + mobileNo);
}
return ResponseEntity.ok(result);
}
}

70
src/main/java/com/gcc/coworkspace/controller/BuildingController.java

@ -0,0 +1,70 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.service.CalendarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.gcc.coworkspace.service.BuildingService;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/muthalvarpadaippagam/api")
public class BuildingController {
@Autowired
private CalendarService calendarService;
private final BuildingService buildingService;
public BuildingController(BuildingService buildingService) {
this.buildingService = buildingService;
}
@GetMapping("/details")
public List<Map<String, Object>> getBuildingDetails() {
List<Map<String, Object>> buildingDetails = buildingService.getBuildingDetails();
//System.out.println(buildingDetails); // Debugging line to print the fetched details
return buildingService.getBuildingDetails();
}
// @GetMapping("/category")
// public List<Map<String, Object>> getBuildingCategoryDetails(@RequestParam int bcId) {
// return buildingService.getBuildingCategoryDetailsById(bcId);
// }
@GetMapping("/detailsbyid")
public List<Map<String, Object>> getBuildingDetailsbyId(@RequestParam String bid) {
List<Map<String, Object>> buildingDetails = buildingService.getBuildingDetailsbyId(bid);
//System.out.println(buildingDetails); // Debugging line to print the fetched details
return buildingService.getBuildingDetailsbyId(bid);
}
@GetMapping("/getamenities")
public List<Map<String, Object>> getamenities() {
return buildingService.getamenities();
// Replace with the actual view name
}
@GetMapping("/subcategory-display-names")
public List<Map<String, Object>> showSubcategoryDisplayNames() {
return buildingService.getSubcategoryDisplayNames();
// Replace with the actual view name
}
// @GetMapping("/buildings/category-details")
// public List<Map<String, Object>> getBuildingCategoryDetails(@RequestParam int categoryId) {
// return buildingService.getBuildingCategoryDetailsById(categoryId);
// }
@GetMapping("/getSlotBySid")
public List<Map<String, Object>> showSlotBySubCatId(@RequestParam int scid) {
return calendarService.getCalendarBasedOnSubCatId(scid);
// Replace with the actual view name
}
}

72
src/main/java/com/gcc/coworkspace/controller/CheckListController.java

@ -0,0 +1,72 @@
package com.gcc.coworkspace.controller;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.gcc.coworkspace.service.CheckListService;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api/checklist")
public class CheckListController {
@Autowired
private CheckListService checkListService;
@GetMapping("/questions-options/{shiftId}")
public List<Map<String, Object>> getQuestionsWithOptions(@PathVariable("shiftId") int shiftId) {
System.out.println("shifyid44444+" +shiftId);
return checkListService.getQuestionsWithOptions(shiftId);
}
@PostMapping("/submit-feedback")
public void submitFeedback(@RequestBody Map<String, Object> payload) {
System.out.println("payload>>>>>>>>" + payload);
// Extract "answers" and shiftId
Map<String, String> answers = (Map<String, String>) payload.get("answers");
Integer shiftId = (Integer) payload.get("shiftId");
//ak
String date = (String) payload.get("date");
// Save feedback including shiftId
checkListService.saveFeedback(answers, shiftId,date);
}
// report api
@GetMapping("/report")
public List<Map<String, Object>> getFeedbackSummary(
@RequestParam("from") String fromDate,
@RequestParam("to") String toDate) {
return checkListService.getFeedbackSummary(fromDate, toDate);
}
@GetMapping("/reportfeedback/{shiftId}&{date}")
public List<Map<String, Object>> getReportFeedback(
@PathVariable("shiftId") int shiftId,
@PathVariable("date") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
return checkListService.getFeedbackQuestions(shiftId, date);
}
}

154
src/main/java/com/gcc/coworkspace/controller/ComplaintController.java

@ -0,0 +1,154 @@
package com.gcc.coworkspace.controller;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.gcc.coworkspace.service.ComplaintService;
@RestController
@RequestMapping("/muthalvarpadaippagam/complaint/api")
public class ComplaintController {
@Autowired
private ComplaintService complaintService;
@Autowired
private JdbcTemplate jdbcTemplate;
@PostMapping("/addnewcomplaint")
public ResponseEntity<String> addComplaint(
@RequestParam String userName,
@RequestParam String remarks,
@RequestParam String mobileNumber,
@RequestParam(required = false) MultipartFile uploadPhotoUrl
) {
try {
int rows = complaintService.complaintDetails(userName, remarks, mobileNumber, uploadPhotoUrl);
if (rows > 0) {
return ResponseEntity.ok("Complaint inserted successfully");
} else {
return ResponseEntity.status(500).body("Failed to insert complaint");
}
} catch (Exception e) {
return ResponseEntity.badRequest().body("Error: " + e.getMessage());
}
}
//reply to caretaker from user
@PostMapping("/addreplyagaintcomplaint")
public ResponseEntity<String> addReply(
@RequestParam("complaintNo") String complaintNo,
@RequestParam("userName") String userName,
@RequestParam("remarks") String remarks,
@RequestParam("mobileNumber") String mobileNumber,
@RequestParam(value = "uploadPhotoUrl", required = false) MultipartFile uploadPhotoFile) {
try {
int result = complaintService.updateComplaintWithReply(complaintNo, userName, remarks, mobileNumber, uploadPhotoFile);
return result > 0
? ResponseEntity.ok("Reply updated successfully")
: ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to update reply");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + e.getMessage());
}
}
@PostMapping("/updateCaretakerRemarks")
public ResponseEntity<String> updateCaretakerRemarks(
@RequestParam("id") String complaint_no,
@RequestParam("caretakerRemarks") String caretakerRemarks,
@RequestParam(required = false) MultipartFile uploadPhotoUrlcaretaker) {
try {
complaintService.updateCaretakerDetails(complaint_no, caretakerRemarks, uploadPhotoUrlcaretaker);
return ResponseEntity.ok("Updated");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to update");
}
}
@GetMapping("/getComplaintlist")
public ResponseEntity<?> getComplaintlist() {
String sql = "SELECT user_name,remarks,mobile_number,upload_photo_url,cdate FROM complaint_details";
try {
List<Map<String, Object>> complaint = jdbcTemplate.queryForList(sql);
return ResponseEntity.ok(complaint);
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("No complaint found");
}
}
//AK
@PostMapping("/closeComplaint")
public ResponseEntity<String> closeComplaint(@RequestBody String complaintNo) {
try {
complaintService.closeComplaint(complaintNo); // Forward to service
return ResponseEntity.ok("Complaint closed successfully.");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Failed to close complaint.");
}
}
//ak
@GetMapping("/getComplaintUserDetails")
public ResponseEntity<Map<String, Object>> getComplaintUserDetails(@RequestParam("complaintNo") String complaintNo) {
try {
Map<String, Object> userDetails = complaintService.getUserDetailsByComplaintNo(complaintNo);
if (userDetails == null || userDetails.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Collections.singletonMap("error", "Complaint not found"));
}
return ResponseEntity.ok(userDetails);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.singletonMap("error", "Internal server error"));
}
}
@GetMapping("/complaintHistory")
public ResponseEntity<List<Map<String, Object>>> getComplaintHistory(@RequestParam("complaintNo") String complaintNo){
try {
List<Map<String, Object>> historyList = complaintService.getComplaintHistory(complaintNo);
return ResponseEntity.ok(historyList);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(Collections.emptyList());
}
}
}

36
src/main/java/com/gcc/coworkspace/controller/DateTimeUtil.java

@ -0,0 +1,36 @@
package com.gcc.coworkspace.controller;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Service
public class DateTimeUtil {
public static String getCurrentDateTime() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyyyHHmmss");
LocalDateTime now = LocalDateTime.now();
return now.format(formatter);
}
public static String getCurrentYear() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
LocalDateTime now = LocalDateTime.now();
return now.format(formatter);
}
public static String getCurrentMonth() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM");
LocalDateTime now = LocalDateTime.now();
return now.format(formatter);
}
public static String getCurrentDay() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd");
LocalDateTime now = LocalDateTime.now();
return now.format(formatter);
}
public static String getCurrentDateTimeMysql() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
return now.format(formatter);
}
}

28
src/main/java/com/gcc/coworkspace/controller/GoogleReviewController.java

@ -0,0 +1,28 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.service.GoogleReviewService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api")
@CrossOrigin(origins = "*") // Remove or restrict in production
public class GoogleReviewController {
@Autowired
private GoogleReviewService googleReviewService;
@GetMapping("/reviews")
public Map<String, Object> getReviews() {
return googleReviewService.getGoogleReviews();
}
@GetMapping("/marquee")
public Map<String, Object> getMarquee() {
return googleReviewService.getmarquee();
}
}

373
src/main/java/com/gcc/coworkspace/controller/RefundController.java

@ -0,0 +1,373 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.configuration.RefundScheduler;
import com.gcc.coworkspace.constants.AppConstants;
import com.gcc.coworkspace.service.BookingService;
import com.gcc.coworkspace.service.RefundService;
import com.razorpay.RazorpayClient;
import com.razorpay.RazorpayException;
import com.razorpay.Refund;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api")
public class RefundController {
@Autowired
private RefundService refundService;
@Autowired
private RefundScheduler refundScheduler;
@Autowired
BookingService bookingService;
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/checkpaymentstatus")
public List<Map<String, Object>> checkPaymentStatus(@RequestParam("mobileno") long mobileno) {
return refundService.checkPaymentStatusByMobile(mobileno);
}
@GetMapping("/getPaymentDetailsByTempId")
public List<Map<String, Object>> getPaymentDetails(@RequestParam("tempid") String tempid) {
String sql = "SELECT id, mobno, order_id, payment_id, payment_status, DATE(paymentdate) AS paymentdate , booking_id, amount, tempid FROM payment WHERE tempid = ?";
return jdbcTemplate.queryForList(sql, tempid);
}
// @PostMapping("/triggerPaymentStatus")
// public ResponseEntity<String> triggerPaymentStatusCheck(@RequestParam("tempid") String tempid) {
// try {
// // Step 1: Get order_id from order_log
// String sql = "SELECT order_id FROM order_log WHERE temp_booking_id = ? AND (order_status IS NULL OR order_status = '')";
// List<Map<String, Object>> results = refundScheduler.jdbcTemplate.queryForList(sql, tempid);
//
// if (results.isEmpty()) {
// return ResponseEntity.ok("No pending order found for this tempid.");
// }
//
// List<String> orderIds = new ArrayList<>();
// for (Map<String, Object> row : results) {
// orderIds.add((String) row.get("order_id"));
// }
//
// // Step 2: Call existing logic to fetch and update
// refundScheduler.fetchAndUpdatePaymentStatus(orderIds);
//
// return ResponseEntity.ok("Payment status updated successfully for " + orderIds.size() + " order(s).");
//
// } catch (Exception e) {
// e.printStackTrace();
// return ResponseEntity.status(500).body("Error: " + e.getMessage());
// }
// }
@PostMapping("/triggerPaymentStatus")
public ResponseEntity<Map<String, Object>> triggerPaymentStatusCheck(@RequestParam("tempid") String tempid) {
Map<String, Object> response = new HashMap<>();
try {
// Step 1: Get order_id from order_log
String sql = "SELECT order_id FROM order_log WHERE temp_booking_id = ? AND (order_status IS NULL OR order_status = '')";
List<Map<String, Object>> results = refundScheduler.jdbcTemplate.queryForList(sql, tempid);
if (!results.isEmpty()) {
List<String> orderIds = new ArrayList<>();
for (Map<String, Object> row : results) {
orderIds.add((String) row.get("order_id"));
}
// Step 2: Call payment status update
refundScheduler.fetchAndUpdatePaymentStatus(orderIds);
response.put("message", "Payment status updated successfully");
response.put("ordersUpdated", orderIds.size());
} else {
response.put("message", "No pending order found for this tempid.");
response.put("ordersUpdated", 0);
}
// Step 3: Slot availability check
Map<String, Object> temp = bookingService.getTempBookingByTempId(Integer.parseInt(tempid));
int bid = Integer.parseInt(temp.get("bid").toString());
int cid = Integer.parseInt(temp.get("cid").toString());
int sid = Integer.parseInt(temp.get("sid").toString());
int noOfPerson = Integer.parseInt(temp.get("no_of_person").toString());
String[] slotIds = temp.get("slotids").toString().split(",");
LocalDate from = LocalDate.parse(temp.get("from_date").toString());
LocalDate to = LocalDate.parse(temp.get("to_date").toString());
boolean isSlotAvailable = true;
List<LocalDate> dates = BookingService.getDatesBetween(from, to);
for (String slotStr : slotIds) {
int slot = Integer.parseInt(slotStr);
for (LocalDate date : dates) {
if (bookingService.checkAvailabilityByBdate(bid, cid, date, sid, noOfPerson, slot)) {
isSlotAvailable = false;
break;
}
}
if (!isSlotAvailable) break;
}
response.put("available", isSlotAvailable);
return ResponseEntity.ok(response);
} catch (Exception e) {
e.printStackTrace();
response.put("error", "Internal server error: " + e.getMessage());
return ResponseEntity.status(500).body(response);
}
}
// @PostMapping("/initiateRefund")
// public ResponseEntity<?> initiateRefund(
// @RequestParam("orderId") String orderId,
// @RequestParam("bookingId") int bookingId,
// @RequestParam(value = "reason", defaultValue = "Manual refund") String reason
// ) {
// try {
// // Step 1: Get payment ID and amount using orderId
// String sql = "SELECT id, payment_id, amount FROM payment WHERE order_id = ?";
// Map<String, Object> result = jdbcTemplate.queryForMap(sql, orderId);
//
// int pid = (int) result.get("id");
// String paymentId = (String) result.get("payment_id");
// double amount = Double.parseDouble(result.get("amount").toString());
//
// // Step 2: Initiate refund via Razorpay
// RazorpayClient razorpayClient = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
// JSONObject refundRequest = new JSONObject();
// refundRequest.put("amount", (int)(amount * 100)); // Razorpay expects paise
//
// Refund refund = razorpayClient.payments.refund(paymentId, refundRequest);
//
// // Step 3: Extract refund response
// String refundId = refund.get("id");
// String refundStatus = refund.get("status");
// double refundAmount = Double.parseDouble(refund.get("amount").toString()) / 100.0;
//
// long createdAtEpoch;
// Object createdAtObj = refund.get("created_at");
//
// if (createdAtObj instanceof Number) {
// createdAtEpoch = ((Number) createdAtObj).longValue();
// } else if (createdAtObj instanceof Date) {
// createdAtEpoch = ((Date) createdAtObj).toInstant().getEpochSecond();
// } else {
// throw new IllegalArgumentException("Unexpected type for created_at: " + createdAtObj.getClass());
// }
//
// LocalDateTime createdAt = Instant.ofEpochSecond(createdAtEpoch)
// .atZone(ZoneId.of("Asia/Kolkata"))
// .toLocalDateTime();
//
// // Step 4: Save to refund_info table
// bookingService.saveRefund(bookingId, pid, refundAmount, refundId, refundStatus, reason);
//
// // Step 5: Print to console
// System.out.println("✅ Refund initiated successfully:");
// System.out.println("Refund ID : " + refundId);
// System.out.println("Payment ID : " + paymentId);
// System.out.println("Refund Amount : ₹" + refundAmount);
// System.out.println("Refund Status : " + refundStatus);
// System.out.println("Refunded At : " + createdAt);
//
// // Step 6: Return JSON response
// Map<String, Object> responseMap = new HashMap<>();
// responseMap.put("refund_id", refundId);
// responseMap.put("status", refundStatus);
// responseMap.put("amount", refundAmount);
// responseMap.put("created_at", createdAt);
//
// return ResponseEntity.ok(responseMap);
//
// } catch (RazorpayException e) {
// e.printStackTrace();
// return ResponseEntity.status(500).body("Razorpay Error: " + e.getMessage());
// } catch (Exception e) {
// e.printStackTrace();
// return ResponseEntity.status(500).body("Error: " + e.getMessage());
// }
// }
@PostMapping("/initiateRefund")
public ResponseEntity<?> initiateRefund(
@RequestParam("orderId") String orderId,
@RequestParam("bookingId") int bookingId,
@RequestParam(value = "reason", defaultValue = "Manual refund") String reason
) {
try {
// Step 1: Get payment ID and amount using orderId
String sql = "SELECT id, payment_id, amount FROM payment WHERE order_id = ?";
Map<String, Object> result = jdbcTemplate.queryForMap(sql, orderId);
int pid = (int) result.get("id");
String paymentId = (String) result.get("payment_id");
double amount = Double.parseDouble(result.get("amount").toString());
// Step 2: Initiate refund via Razorpay
RazorpayClient razorpayClient = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", (int)(amount * 100)); // Razorpay expects paise
Refund refund = razorpayClient.payments.refund(paymentId, refundRequest);
// Step 3: Extract refund response details
String refundId = refund.get("id");
String refundStatus = refund.get("status");
double refundAmount = Double.parseDouble(refund.get("amount").toString()) / 100.0;
Object createdAtObj = refund.get("created_at");
long createdAtEpoch;
if (createdAtObj instanceof Number) {
createdAtEpoch = ((Number) createdAtObj).longValue();
} else if (createdAtObj instanceof Date) {
createdAtEpoch = ((Date) createdAtObj).toInstant().getEpochSecond();
} else {
throw new IllegalArgumentException("Unexpected type for created_at: " + createdAtObj.getClass());
}
LocalDateTime createdAt = Instant.ofEpochSecond(createdAtEpoch)
.atZone(ZoneId.of("Asia/Kolkata"))
.toLocalDateTime();
// Step 4: Save refund record
refundService.saveRefund(bookingId, pid, refundAmount, refundId, refundStatus, reason);
// Step 5: Update status in payment and order_log tables
//jdbcTemplate.update("UPDATE order_log SET order_status = ? WHERE order_id = ?", "" orderId);
jdbcTemplate.update("UPDATE payment SET payment_status = ? WHERE order_id = ?", "refunded", orderId);
// Step 6: Print refund info to console
System.out.println("✅ Refund initiated successfully:");
System.out.println("Refund ID : " + refundId);
System.out.println("Payment ID : " + paymentId);
System.out.println("Refund Amount : ₹" + refundAmount);
System.out.println("Refund Status : " + refundStatus);
System.out.println("Refunded At : " + createdAt);
System.out.println("📝 payment tables updated to 'refund'.");
// Step 7: Return response
Map<String, Object> responseMap = new HashMap<>();
responseMap.put("refund_id", refundId);
responseMap.put("status", refundStatus);
responseMap.put("amount", refundAmount);
responseMap.put("created_at", createdAt.toString());
return ResponseEntity.ok(responseMap);
} catch (RazorpayException e) {
e.printStackTrace();
String errorMsg = e.getMessage();
System.err.println("Razorpay Error: " + errorMsg);
if (errorMsg.contains("already")) {
return ResponseEntity.status(400).body("Refund already completed for this payment.");
}
return ResponseEntity.status(500).body("Razorpay Error: " + e.getMessage());
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(500).body("Error: " + e.getMessage());
}
}
@PostMapping("/confirmBooking")
public ResponseEntity<?> confirmBooking(@RequestParam int tempid, @RequestParam int pid) {
try {
// Check temp data
Map<String, Object> temp = bookingService.getTempBookingByTempId(tempid);
if (temp.isEmpty()) {
return ResponseEntity.badRequest().body("Invalid Temp Booking ID");
}
// Extract required fields
int bid = Integer.parseInt(temp.get("bid").toString());
int cid = Integer.parseInt(temp.get("cid").toString());
int sid = Integer.parseInt(temp.get("sid").toString());
int noOfPerson = Integer.parseInt(temp.get("no_of_person").toString());
String[] slotIds = temp.get("slotids").toString().split(",");
LocalDate from = LocalDate.parse(temp.get("from_date").toString());
LocalDate to = LocalDate.parse(temp.get("to_date").toString());
// Check availability for all slots in date range
List<LocalDate> dates = BookingService.getDatesBetween(from, to);
for (String slot : slotIds) {
int slotId = Integer.parseInt(slot);
for (LocalDate date : dates) {
if (bookingService.checkAvailabilityByBdate(bid, cid, date, sid, noOfPerson, slotId)) {
return ResponseEntity.ok("Slot not available for " + date + " Slot " + slotId);
}
}
}
// If available, insert booking
int bookingId = bookingService.saveBooking(tempid, pid);
return ResponseEntity.ok("Booking Confirmed! ID: " + bookingId);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(500).body("Failed to confirm booking");
}
}
@GetMapping("/getBookingIdByOrderId")
public ResponseEntity<Integer> getBookingId(@RequestParam String orderId) {
String sql = "select booking_id from payment where order_id=?";
try {
Integer bookingId = jdbcTemplate.queryForObject(sql, Integer.class, orderId);
return ResponseEntity.ok(bookingId);
} catch (EmptyResultDataAccessException e) {
return ResponseEntity.ok(0);
}
}
@GetMapping("/getOrderIdByPaymentId")
public ResponseEntity<String> getOrderIdByPaymentId(@RequestParam("paymentId") int paymentId) {
try {
String sql = "SELECT order_id FROM payment WHERE id = ?";
String orderId = jdbcTemplate.queryForObject(sql, String.class, paymentId);
return ResponseEntity.ok(orderId);
} catch (Exception e) {
return ResponseEntity.status(404).body("Order ID not found for payment ID: " + paymentId);
}
}
@GetMapping("/getRefundOrderDetails")
public ResponseEntity<Map<String, Object>> getRefundOrderDetails(@RequestParam("paymentId") int paymentId) {
try {
String sql = "SELECT order_id, tempid FROM payment WHERE id = ?";
Map<String, Object> result = jdbcTemplate.queryForMap(sql, paymentId);
Map<String, Object> response = new HashMap<>();
response.put("orderId", result.get("order_id"));
response.put("tempid", result.get("tempid"));
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(404).body(Collections.singletonMap("error", "Refund data not found"));
}
}
}

169
src/main/java/com/gcc/coworkspace/controller/ReportController.java

@ -0,0 +1,169 @@
package com.gcc.coworkspace.controller;
import com.gcc.coworkspace.service.ReportService;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/muthalvarpadaippagam/book/api/reports")
public class ReportController {
@Autowired
private ReportService reportService;
// @GetMapping("/getslotdateReports")
// public List<Map<String, Object>> getslotdateReports(
// @RequestParam(required = false) String fromDate,
// @RequestParam(required = false) String toDate,
// @RequestParam(required = false) String type,
// @RequestParam(required = false) String status,
// @RequestParam(required = false) String type1,
// @RequestParam(required = false) String filterBy) { // Add filterBy parameter
// System.out.println();
// // If no fromDate and toDate are provided, set a default date range
// if (fromDate == null && toDate == null) {
// fromDate = LocalDate.now().toString();
// toDate = LocalDate.now().plusDays(30).toString();
// }
// List<Map<String, Object>> ad= reportService.getslotdateReports(fromDate, toDate, type, status, filterBy,type1);
// System.out.println(ad.size());
// return reportService.getslotdateReports(fromDate, toDate, type, status, filterBy ,type1);
// }
// @GetMapping("/getbookingdateReports")
// public List<Map<String, Object>> getbookingdateReports(
// @RequestParam(required = false) String fromDate,
// @RequestParam(required = false) String toDate,
// @RequestParam(required = false) String type,
// @RequestParam(required = false) String status,
// @RequestParam(required = false) String type1,
// @RequestParam(required = false) String filterBy) { // Add filterBy parameter
// System.out.println();
// // If no fromDate and toDate are provided, set a default date range
// if (fromDate == null && toDate == null) {
// fromDate = LocalDate.now().toString();
// toDate = LocalDate.now().plusDays(30).toString();
// }
// List<Map<String, Object>> ad= reportService.getbookingdateReports(fromDate, toDate, type, status, filterBy,type1);
// System.out.println(ad.size());
// return reportService.getbookingdateReports(fromDate, toDate, type, status, filterBy,type1);
// }
// /*
// @GetMapping("/abstractReport")
// public List<Map<String, Object>> abstractReportPage(){
// return reportService.abstractReportPage();
// }
// */
// @GetMapping("/abstractReport")
// public List<Map<String, Object>> abstractReportPage(
// @RequestParam(required = false) String fromDate,
// @RequestParam(required = false) String toDate,
// @RequestParam(required = false) String type,
// @RequestParam(required = false) String type1
// ){
// return reportService.abstractReportPage(fromDate, toDate, type,type1);
// }
// @GetMapping("/calendarReport")
// public List<Map<String, Object>> getCalendarReport(
// @RequestParam(required = false) String fromDate,
// @RequestParam(required = false) String toDate
// ) {
// if (fromDate == null || fromDate.isEmpty()) {
// fromDate = java.time.LocalDate.now().toString();
// }
// if (toDate == null || toDate.isEmpty()) {
// toDate = fromDate;
// }
// return reportService.getCalendarReport(fromDate, toDate);
// }
@GetMapping("/getslotdateReports")
public List<Map<String, Object>> getslotdateReports(
@RequestParam(required = false) String fromDate,
@RequestParam(required = false) String toDate,
@RequestParam(required = false) String type,
@RequestParam(required = false) String status,
@RequestParam(required = false) String type1,
@RequestParam(required = false) String filterBy,
@RequestParam(required = false) Integer bid) { // Add filterBy parameter
System.out.println();
// If no fromDate and toDate are provided, set a default date range
if (fromDate == null && toDate == null) {
fromDate = LocalDate.now().toString();
toDate = LocalDate.now().plusDays(30).toString();
}
List<Map<String, Object>> ad= reportService.getslotdateReports(fromDate, toDate, type, status, filterBy,type1,bid);
System.out.println(ad.size());
return reportService.getslotdateReports(fromDate, toDate, type, status, filterBy ,type1,bid);
}
@GetMapping("/getbookingdateReports")
public List<Map<String, Object>> getbookingdateReports(
@RequestParam(required = false) String fromDate,
@RequestParam(required = false) String toDate,
@RequestParam(required = false) String type,
@RequestParam(required = false) String status,
@RequestParam(required = false) String type1,
@RequestParam(required = false) String filterBy,
@RequestParam(required = false) Integer bid) { // Add filterBy parameter
System.out.println();
// If no fromDate and toDate are provided, set a default date range
if (fromDate == null && toDate == null) {
fromDate = LocalDate.now().toString();
toDate = LocalDate.now().plusDays(30).toString();
}
List<Map<String, Object>> ad= reportService.getbookingdateReports(fromDate, toDate, type, status, filterBy,type1,bid);
System.out.println(ad.size());
return reportService.getbookingdateReports(fromDate, toDate, type, status, filterBy,type1,bid);
}
/*
@GetMapping("/abstractReport")
public List<Map<String, Object>> abstractReportPage(){
return reportService.abstractReportPage();
}
*/
@GetMapping("/abstractReport")
public List<Map<String, Object>> abstractReportPage(
@RequestParam(required = false) String fromDate,
@RequestParam(required = false) String toDate,
@RequestParam(required = false) String type,
@RequestParam(required = false) String type1,
@RequestParam(required = false) Integer bid
){
return reportService.abstractReportPage(fromDate, toDate, type,type1,bid);
}
@GetMapping("/calendarReport")
public List<Map<String, Object>> getCalendarReport(
@RequestParam(required = false) String fromDate,
@RequestParam(required = false) String toDate,
@RequestParam(required = false) int bid
) {
if (fromDate == null || fromDate.isEmpty()) {
fromDate = java.time.LocalDate.now().toString();
}
if (toDate == null || toDate.isEmpty()) {
toDate = fromDate;
}
return reportService.getCalendarReport(fromDate, toDate, bid);
}
}

985
src/main/java/com/gcc/coworkspace/controller/controller.java

@ -0,0 +1,985 @@
package com.gcc.coworkspace.controller;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gcc.coworkspace.component.UserSession;
import com.gcc.coworkspace.service.BookingService;
import com.gcc.coworkspace.service.BuildingService;
import com.gcc.coworkspace.service.ComplaintService;
import com.gcc.coworkspace.service.HomeService;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
@Controller
@RequestMapping(value = {"/","","/muthalvarpadaippagam"})
public class controller {
@Autowired
private BuildingService buildingSer;
@Autowired
private BookingService bookingService;
@Autowired
HomeService homeService;
@Autowired
private ComplaintService complaintService;
@Autowired
private UserSession userSession;
@Autowired
private Environment environment;
@Value("${app.full_URL}")
private String baseUrl;
private void setNoCacheHeaders(HttpServletResponse response) {
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
}
/*
@GetMapping(value = {"/","","/home"})
public String viewHome(Model model) {
List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces();
List<Map<String, Object>> readingZoneDetails = homeService.getPricingDetailsByCid(1);
List<Map<String, Object>> deskSpaceDetails = homeService.getPricingDetailsByCid(2);
List<Map<String, Object>> conferenceHallDetails = homeService.getPricingDetailsByCid(3);
model.addAttribute("readingZoneDetails", readingZoneDetails);
model.addAttribute("deskSpaceDetails", deskSpaceDetails);
model.addAttribute("conferenceHallDetails", conferenceHallDetails);
model.addAttribute("homeImg",homeService.getImgByCid(0));
model.addAttribute("spaces", spaces);
return "user/home";
}
*/
// @GetMapping(value = {"/", "", "/workspacelist"})
// public String viewWorkspaclist(@RequestParam(value = "cid", required = false) Integer cidParam, Model model) {
// List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces(bid);
// List<Map<String, Object>> readingZoneDetails = homeService.getPricingDetailsByCid(1);
// List<Map<String, Object>> deskSpaceDetails = homeService.getPricingDetailsByCid(2);
// List<Map<String, Object>> conferenceHallDetails = homeService.getPricingDetailsByCid(3);
// // Default to Learning Centre (cid = 1)
// Integer cid = (cidParam != null) ? cidParam : 2;
// // Set type
// for (Map<String, Object> space : spaces) {
// Integer categoryId = (Integer) space.get("cid");
// if (categoryId != null) {
// switch (categoryId) {
// case 1 -> space.put("type", "reading");
// case 2 -> space.put("type", "desk");
// case 3 -> space.put("type", "meeting");
// default -> space.put("type", "learning");
// }
// }
// }
// final Integer finalCid = cid; // ✅ Now this is effectively final
// Map<String, Object> selectedSpace = spaces.stream()
// .filter(space -> finalCid.equals(space.get("cid")))
// .findFirst()
// .orElse(null);
// model.addAttribute("cid", cid);
// model.addAttribute("spaces", spaces);
// model.addAttribute("selectedSpace", selectedSpace);
// model.addAttribute("readingZoneDetails", readingZoneDetails);
// model.addAttribute("deskSpaceDetails", deskSpaceDetails);
// model.addAttribute("conferenceHallDetails", conferenceHallDetails);
// model.addAttribute("homeImg",homeService.getImgByCid(0));
// return "user/workspacelist";
// }
@GetMapping(value = {"/", "", "/workspacelist"})
public String viewWorkspaceList(Model model) {
// ✅ Get all active buildings (for workspace list page)
List<Map<String, Object>> buildingList = buildingSer.getBuildingDetails();
// ✅ You can also fetch coworking space categories (if needed to show as tabs or filters)
List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces();
// ✅ Add to model
model.addAttribute("buildings", buildingList);
model.addAttribute("spaces", spaces);
// ✅ Return the list page (user/workspacelist.html)
return "user/workspacelist";
}
// @GetMapping(value = { "/home"})
// public String viewHome(@RequestParam int bid,@RequestParam(value = "cid", required = false) Integer cidParam, Model model) {
// List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces();
// List<Map<String, Object>> readingZoneDetails = homeService.getPricingDetailsByCid(1);
// List<Map<String, Object>> deskSpaceDetails = homeService.getPricingDetailsByCid(2);
// List<Map<String, Object>> conferenceHallDetails = homeService.getPricingDetailsByCid(3);
// // Default to Learning Centre (cid = 1)
// Integer cid = (cidParam != null) ? cidParam : 2;
// // Set type
// for (Map<String, Object> space : spaces) {
// Integer categoryId = (Integer) space.get("cid");
// if (categoryId != null) {
// switch (categoryId) {
// case 1 -> space.put("type", "reading");
// case 2 -> space.put("type", "desk");
// case 3 -> space.put("type", "meeting");
// default -> space.put("type", "learning");
// }
// }
// }
// final Integer finalCid = cid; // ✅ Now this is effectively final
// Map<String, Object> selectedSpace = spaces.stream()
// .filter(space -> finalCid.equals(space.get("cid")))
// .findFirst()
// .orElse(null);
// model.addAttribute("cid", cid);
// model.addAttribute("bid", bid);
// model.addAttribute("spaces", spaces);
// model.addAttribute("selectedSpace", selectedSpace);
// model.addAttribute("readingZoneDetails", readingZoneDetails);
// model.addAttribute("deskSpaceDetails", deskSpaceDetails);
// model.addAttribute("conferenceHallDetails", conferenceHallDetails);
// model.addAttribute("homeImg",homeService.getImgByCid(0));
// return "user/home";
// }
@GetMapping("/home")
public String viewHomeGet(@RequestParam(value = "bid", required = false) Integer bid,
@RequestParam(value = "cid", required = false) Integer cidParam,
Model model) {
if (bid == null) {
return "redirect:/muthalvarpadaippagam"; // or show error page
}
return loadHomePage(bid, cidParam, model);
}
// POST – used by hidden form (no URL params visible!)
@PostMapping("/home")
public String viewHomePost(@RequestParam int bid,
@RequestParam(value = "cid", required = false) Integer cidParam,
Model model) {
return loadHomePage(bid, cidParam, model);
}
// previously used
// @GetMapping("/home")
// public String viewHome(@RequestParam int bid,
// @RequestParam(value = "cid", required = false) Integer cidParam,
// Model model) {
// // ✅ Get coworking spaces for this building
// List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpacesByBuilding(bid);
// //System.out.println("home inside:" + spaces);
// // Remove duplicate category rows (keep first per cid)
// spaces = spaces.stream()
// .collect(Collectors.toMap(
// m -> (Integer) m.get("cid"),
// m -> m,
// (existing, replacement) -> existing
// ))
// .values()
// .stream()
// .toList();
// // ✅ Default CID → first space of that building
// Integer cid = (cidParam != null)
// ? cidParam
// : (spaces.isEmpty() ? null : (Integer) spaces.get(0).get("cid"));
// // ✅ Get subcategory (pricing/capacity) details for this category
// /*List<Map<String, Object>> pricingDetails = (cid != null)
// ? homeService.getPricingDetailsByCid(cid)
// : List.of();*/
// List<Map<String, Object>> readingZoneDetails = homeService.getPricingDetailsByCid(cid);
// List<Map<String, Object>> deskSpaceDetails = homeService.getPricingDetailsByCid(cid);
// List<Map<String, Object>> conferenceHallDetails = homeService.getPricingDetailsByCid(cid);
// // ✅ Get category images for this category
// List<Map<String, Object>> homeImg = (cid != null)
// ? homeService.getImgByCid(cid)
// : List.of();
// // ✅ Identify the selected space
// Map<String, Object> selectedSpace = spaces.stream()
// .filter(space -> cid != null && cid.equals(space.get("cid")))
// .findFirst()
// .orElse(null);
// //ak
// // ✅ Add everything to model
// model.addAttribute("bid", bid);
// model.addAttribute("cid", cid);
// model.addAttribute("spaces", spaces);
// System.out.println("spaces:" + spaces);
// model.addAttribute("selectedSpace", selectedSpace);
// //model.addAttribute("pricingDetails", pricingDetails);
// model.addAttribute("readingZoneDetails", readingZoneDetails);
// model.addAttribute("deskSpaceDetails", deskSpaceDetails);
// model.addAttribute("conferenceHallDetails", conferenceHallDetails);
// model.addAttribute("homeImg", homeImg);
// return "user/home";
// }
// 🔥 Reusable method
private String loadHomePage(int bid, Integer cidParam, Model model) {
// Get coworking spaces for this building
List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpacesByBuilding(bid);
// Remove duplicate CIDs
spaces = spaces.stream()
.collect(Collectors.toMap(
m -> (Integer) m.get("cid"),
m -> m,
(existing, replacement) -> existing
))
.values()
.stream()
.toList();
// Default CID
Integer cid = (cidParam != null)
? cidParam
: (spaces.isEmpty() ? null : (Integer) spaces.get(0).get("cid"));
// Pricing details
List<Map<String, Object>> readingZoneDetails = homeService.getPricingDetailsByCid(cid);
List<Map<String, Object>> deskSpaceDetails = homeService.getPricingDetailsByCid(cid);
List<Map<String, Object>> conferenceHallDetails = homeService.getPricingDetailsByCid(cid);
// Images
List<Map<String, Object>> homeImg = (cid != null)
? homeService.getImgByCid(cid)
: List.of();
// Selected category
Map<String, Object> selectedSpace = spaces.stream()
.filter(space -> cid != null && cid.equals(space.get("cid")))
.findFirst()
.orElse(null);
// Add to model
model.addAttribute("bid", bid);
model.addAttribute("cid", cid);
model.addAttribute("spaces", spaces);
model.addAttribute("selectedSpace", selectedSpace);
model.addAttribute("readingZoneDetails", readingZoneDetails);
model.addAttribute("deskSpaceDetails", deskSpaceDetails);
model.addAttribute("conferenceHallDetails", conferenceHallDetails);
model.addAttribute("homeImg", homeImg);
return "user/home"; // Thymeleaf view
}
//ak
@GetMapping("/api/pricing")
@ResponseBody
public List<Map<String, Object>> getPricingDetails(@RequestParam int cid) {
return homeService.getPricingDetailsByCid(cid);
}
// @GetMapping("/book")
// public String showCategoryPage(@RequestParam int buildingId,@RequestParam int categoryId, Model model) {
// List<Map<String, Object>> buildingCategoryDetails = buildingSer.getBuildingCategoryDetailsById(buildingId,categoryId); // Retrieve data
// model.addAttribute("homeImg",homeService.getImgByCid(categoryId));
//
// if (!buildingCategoryDetails.isEmpty()) {
// model.addAttribute("details", buildingCategoryDetails.get(0)); // Pass the first item to the model
// // model.addAttribute("subcategories", buildingCategoryDetails.get(0).get("Subcategories")); // Assuming you have a list of subcategories
// }
// return "user/booking"; // Return the view
// }
// @GetMapping("/book")
// public String showCategoryPage(@RequestParam int buildingId,@RequestParam int categoryId, Model model) {
// List<Map<String, Object>> buildingCategoryDetails = buildingSer.getBuildingCategoryDetailsById(buildingId,categoryId); // Retrieve data
// model.addAttribute("homeImg",homeService.getImgByCid(categoryId));
//
// if (!buildingCategoryDetails.isEmpty()) {
// model.addAttribute("details", buildingCategoryDetails.get(0)); // Pass the first item to the model
// // model.addAttribute("subcategories", buildingCategoryDetails.get(0).get("Subcategories")); // Assuming you have a list of subcategories
// }
// return "user/booking"; // Return the view
// }
// Endpoint to fetch space content for AJAX
// @GetMapping("/home/space")
// public String getSpaceFragment(@RequestParam("cid") Integer cid, Model model) {
// List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces();
// // Filter the selected space
// Map<String, Object> selectedSpace = spaces.stream()
// .filter(space -> cid.equals(space.get("cid")))
// .findFirst()
// .orElse(null);
// model.addAttribute("space", selectedSpace);
// return "fragments/spaceContent :: content";
// }
// @GetMapping("/home/space")
// public String getSpaceFragment(@RequestParam("cid") Integer cid,
// @RequestParam("bid") Integer bid,
// Model model) {
// List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpaces();
// Map<String, Object> selectedSpace = spaces.stream()
// .filter(space -> cid.equals(space.get("cid")))
// .findFirst()
// .orElse(null);
// model.addAttribute("space", selectedSpace);
// model.addAttribute("bid", bid); // ✅ Add buildingId
// model.addAttribute("cid", cid);
// return "fragments/spaceContent :: content";
// }
@GetMapping("/home/space")
public String getSpaceFragment(@RequestParam("cid") Integer cid,
@RequestParam("bid") Integer bid,
Model model) {
// ✅ Get spaces for this specific building
List<Map<String, Object>> spaces = homeService.getActiveCoWorkingSpacesByBuilding(bid);
//System.out.println("home spaces inside:" + spaces);
Map<String, Object> selectedSpace = spaces.stream()
.filter(space -> cid.equals(space.get("cid")))
.findFirst()
.orElse(null);
// System.out.println("selectedSpace :" + selectedSpace);
model.addAttribute("space", selectedSpace);
model.addAttribute("bid", bid);
model.addAttribute("cid", cid);
return "fragments/spaceContent :: content";
}
// @GetMapping("/home/space")
// public String getSpaceFragment(@RequestParam("cid") Integer cid,
// @RequestParam("bid") Integer bid,
// Model model) {
// List<Map<String, Object>> pricingDetails = homeService.getPricingDetailsByCid(cid);
// List<Map<String, Object>> images = homeService.getImgByCid(cid);
// model.addAttribute("pricingDetails", pricingDetails);
// model.addAttribute("homeImg", images);
// return "fragments/spaceContent :: content";
// }
@GetMapping("/registercomplaint")
public String registercomplaint(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
return "user/registercomplaint";
}
//complaintlist in caretaker side
@GetMapping("/complaintlist")
public String complaintlist(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
List<Map<String, Object>> complaintlist = complaintService.getOpenComplaintList();
List<Map<String,Object>> closedcomplaintlist = complaintService.getClosedComplaintList();
// Append base URL to each complaint's upload_photo_url
for (Map<String, Object> complaint : complaintlist) {
Object photoUrl = complaint.get("upload_photo_url");
if (photoUrl != null && !photoUrl.toString().isEmpty()) {
// Ensure no double prefix happens
String fullUrl = baseUrl + "/co-workspaceDocuments" + photoUrl.toString();
complaint.put("full_upload_photo_url", fullUrl);
} else {
complaint.put("full_upload_photo_url", "");
}
}
// Append base URL to each complaint's upload_photo_url
for (Map<String, Object> closedcomplaint : closedcomplaintlist) {
Object photoUrl = closedcomplaint.get("upload_photo_url");
if (photoUrl != null && !photoUrl.toString().isEmpty()) {
// Ensure no double prefix happens
String fullUrl = baseUrl + "/co-workspaceDocuments" + photoUrl.toString();
closedcomplaint.put("full_upload_photo_url", fullUrl);
} else {
closedcomplaint.put("full_upload_photo_url", "");
}
}
model.addAttribute("complaintlist", complaintlist);
model.addAttribute("closedcomplaintlist",closedcomplaintlist);
return "caretaker/complaintlist";
} else {
return "redirect:/muthalvarpadaippagam/officiallogin";
}
}
//attendancereport
@GetMapping("/attendancereport")
public String attendancereport(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
Integer bid = (Integer) session.getAttribute("bid"); // ✅ get BID from session
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
model.addAttribute("bid", bid);
return "caretaker/attendancereport"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
@GetMapping("/attendance")
public String attendancePage(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
Integer bid = (Integer) session.getAttribute("bid"); // ✅ get BID from session
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
//Integer bid = bookingService.getBidByUserName(userName);
model.addAttribute("user_name", userName);
model.addAttribute("bid", bid);
// (optional) store bid in session for later use
//session.setAttribute("bid", bid);
//model.addAttribute("user_name", userName);
return "caretaker/attendance"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
//checklist
/*
@GetMapping("/CheckList")
public String CheckList(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
return "caretaker/CheckList"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
*/
@GetMapping("/CheckList")
public String CheckList(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
//model.addAttribute("serverDate", LocalDate.now().toString());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTimeNow = LocalDateTime.now().format(formatter);
model.addAttribute("serverDate", dateTimeNow);
return "caretaker/CheckList"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
//CheckListReport
@GetMapping("/CheckListReport")
public String CheckListReport(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
return "caretaker/CheckListReport"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
// @GetMapping("/book")
// public String showCategoryPage(@RequestParam int buildingId,@RequestParam int categoryId, Model model) {
// String url="";
// List<Map<String, Object>> buildingCategoryDetails = buildingSer.getBuildingCategoryDetailsById(buildingId,categoryId); // Retrieve data
// model.addAttribute("homeImg",homeService.getImgByCid(categoryId));
// if (!buildingCategoryDetails.isEmpty()) {
// model.addAttribute("details", buildingCategoryDetails.get(0)); // Pass the first item to the model
// }
// // if(categoryId==1) { // Reading / Leaning Zone
// // url = "user/book-reading"; // Return the view
// // }
// // if(categoryId==2) { // Reading / Leaning Zone
// // url = "user/book-workdesk"; // Return the view
// // }
// // if(categoryId==3) { // Reading / Leaning Zone
// // url = "user/book-Conferance"; // Return the view
// // }
// // return url;
// // ✅ Dynamically determine view name based on categoryId
// switch (categoryId) {
// case 1 -> url = "user/book-learning";
// case 2 -> url = "user/book-workdesk";
// case 3 -> url = "user/book-conference";
// case 4 -> url = "user/book-learning"; // optional if you add more later
// default -> throw new IllegalArgumentException("Invalid category ID: " + categoryId);
// }
// // ✅ Pass IDs for dynamic usage in JavaScript
// model.addAttribute("buildingId", buildingId);
// model.addAttribute("categoryId", categoryId);
// return url;
// }
//////////existing code for /book with subId handling
// @GetMapping("/book")
// public String getCategoryPageGet(@RequestParam(value = "buildingId", required = false) Integer buildingId,
// @RequestParam(value = "categoryId", required = false) Integer categoryId,
// @RequestParam(value = "subId", required = false) Integer subId,
// Model model) {
// // Validate required fields
// if (buildingId == null || categoryId == null) {
// return "redirect:/muthalvarpadaippagam"; // Return home safely
// }
// return showCategoryPage(buildingId, categoryId, subId, model);
// }
// //added by yogi
// @PostMapping("/book")
// public String showCategoryPagePost(@RequestParam int buildingId,
// @RequestParam int categoryId,
// @RequestParam(required = false) Integer subId,
// Model model) {
// return showCategoryPage(buildingId, categoryId, subId, model);
// }
// @GetMapping("/book")
// public String showCategoryPage(@RequestParam int buildingId,
// @RequestParam int categoryId,
// @RequestParam(required = false) Integer subId,
// Model model) {
// // System.out.println("buildingId:" + buildingId);
// // System.out.println("categoryId:" + categoryId);
// List<Map<String, Object>> buildingCategoryDetails =
// buildingSer.getBuildingCategoryDetailsById(buildingId, categoryId);
// //System.out.println("buildingCategoryDetails:" + buildingCategoryDetails);
// model.addAttribute("homeImg", homeService.getImgByCid(categoryId));
// if (!buildingCategoryDetails.isEmpty()) {
// Map<String, Object> firstRecord = buildingCategoryDetails.get(0);
// model.addAttribute("details", firstRecord);
// //ak
// Object buildingName = firstRecord.get("Building_Name");
// Object buildingAddress = firstRecord.get("Address");
// Object latitude = firstRecord.get("Latitude");
// Object longitude = firstRecord.get("Longitude");
// model.addAttribute("buildingName", buildingName);
// model.addAttribute("buildingAddress", buildingAddress);
// model.addAttribute("latitude", latitude);
// model.addAttribute("longitude", longitude);
// // ✅ Prefer URL parameter subId, else fallback from DB
// if (subId == null) {
// Object scidObj = firstRecord.get("scid");
// subId = (scidObj != null) ? Integer.parseInt(scidObj.toString()) : 0;
// }
// model.addAttribute("subId", subId);
// System.out.println("SubId: " + subId);
// }
// model.addAttribute("buildingId", buildingId);
// model.addAttribute("categoryId", categoryId);
// String url = switch (categoryId) {
// case 1 -> "user/book-reading";
// case 2 -> "user/book-workdesk";
// case 3 -> "user/book-Conferance";
// case 4 -> "user/book-reading";
// default -> throw new IllegalArgumentException("Invalid category ID: " + categoryId);
// };
// return url;
// }
// --------------------- GET : Visible URL ---------------------
@GetMapping("/book")
public String getCategoryPage(@RequestParam(value = "buildingId" ,required = false) Integer buildingId,
@RequestParam(value = "categoryId", required = false) Integer categoryId,
@RequestParam(value = "subId", required = false) Integer subId, Model model) {
// Validate required fields
if (buildingId == null || categoryId == null) {
return "redirect:/muthalvarpadaippagam";
}
return showCategoryPage(buildingId, categoryId, subId, model);
}
// --------------------- POST : Hidden Form (no URL params) ---------------------
@PostMapping("/book")
public String postCategoryPage(@RequestParam Integer buildingId,
@RequestParam Integer categoryId,
@RequestParam(required = false) Integer subId,
Model model) {
return showCategoryPage(buildingId, categoryId, subId, model);
}
// --------------------- COMMON LOADING METHOD ---------------------
private String showCategoryPage(int buildingId,
int categoryId,
Integer subId,
Model model) {
List<Map<String, Object>> buildingCategoryDetails =
buildingSer.getBuildingCategoryDetailsById(buildingId, categoryId);
model.addAttribute("homeImg", homeService.getImgByCid(categoryId));
String displayName = null;
if (!buildingCategoryDetails.isEmpty()) {
Map<String, Object> firstRecord = buildingCategoryDetails.get(0);
displayName = (String) firstRecord.get("Category_Display_Name");
model.addAttribute("details", firstRecord);
model.addAttribute("buildingName", firstRecord.get("Building_Name"));
model.addAttribute("buildingAddress", firstRecord.get("Address"));
model.addAttribute("latitude", firstRecord.get("Latitude"));
model.addAttribute("longitude", firstRecord.get("Longitude"));
// If subId is not passed, get from DB
if (subId == null) {
Object scidObj = firstRecord.get("scid");
subId = (scidObj != null) ? Integer.parseInt(scidObj.toString()) : 0;
}
model.addAttribute("subId", subId);
}
model.addAttribute("buildingId", buildingId);
model.addAttribute("categoryId", categoryId);
// Select page by category
// return switch (categoryId) {
// case 1 -> "user/book-reading";
// case 2 -> "user/book-workdesk";
// case 3 -> "user/book-Conferance";
// case 4 -> "user/book-reading";
// default -> throw new IllegalArgumentException("Invalid category ID: " + categoryId);
// };
if (displayName == null) {
throw new IllegalArgumentException("Category name not found");
}
String url = switch (displayName.trim()) {
case "Meeting Rooms" -> "user/book-Conferance";
case "Learning Centre" -> "user/book-reading";
case "Desk Space" -> "user/book-workdesk";
default -> throw new IllegalArgumentException("Unknown Category Name: " + displayName);
};
return url;
}
// @GetMapping("/book")
// public String showCategoryPage(
// @RequestParam int buildingId,
// @RequestParam int categoryId,
// Model model) {
// // Fetch building + category + subcategory + slot info
// List<Map<String, Object>> buildingCategoryDetails = buildingSer.getBuildingCategoryDetailsById(buildingId, categoryId);
// model.addAttribute("homeImg", homeService.getImgByCid(categoryId));
// if (!buildingCategoryDetails.isEmpty()) {
// model.addAttribute("details", buildingCategoryDetails.get(0));
// }
// // Dynamically resolve the view name based on category name or ID
// String viewName = switch (categoryId) {
// case 1 -> "user/book-reading";
// case 2 -> "user/book-workdesk";
// case 3 -> "user/book-Conference";
// default -> "user/book-generic"; // fallback if future category added
// };
// return viewName;
// }
@GetMapping("/subcategory-display-names")
public String showSubcategoryDisplayNames(@RequestParam Model model) {
List<Map<String, Object>> displayNames = buildingSer.getSubcategoryDisplayNames();
model.addAttribute("displayNames", displayNames);
return "user/termsandconditions"; // Ensure this matches your Thymeleaf template file
}
// @GetMapping("/bookingdetails")
// public String viewBookingDetails (Model model) {
// return "user/bookingdetails";}
@GetMapping("/bookinghistory")
public String viewbookinghistory (Model model) {
if(userSession!=null && userSession.getMobileno()!=0){
model.addAttribute("bookinghistorylist",bookingService.getBookingByMobileNo(userSession.getMobileno()));
}
return "user/bookinghistory";
}
@GetMapping("/bookingQRCode")
public String getBookingQRCode(HttpServletResponse response,@RequestParam int booking_id, Model model) {
setNoCacheHeaders(response);
List<?> bookinghistorylist = bookingService.getQrPageByBookingId(booking_id);
if (!bookinghistorylist.isEmpty()) {
model.addAttribute("bookinghistorylist", bookinghistorylist);
return "user/qrpage";
} else {
model.addAttribute("error", "Booking not found for mobile number: " + booking_id);
return "error"; // A template to handle errors
}
}
@GetMapping("/officiallogin")
public String officiallogin (HttpServletResponse response, Model model) {
setNoCacheHeaders(response);
return "caretaker/login";
}
@GetMapping("/logout")
public String logout(HttpServletResponse response,HttpSession session) {
setNoCacheHeaders(response);
try {
session.invalidate();
return "redirect:/muthalvarpadaippagam/officiallogin";
} catch (Exception e) {
e.printStackTrace();
return "redirect:/muthalvarpadaippagam/officiallogin";
}
}
@GetMapping("/bookingdetails")
public String viewbookingdetails (HttpServletResponse response,Model model, HttpSession httpSession) {
setNoCacheHeaders(response);
String userName = (String) httpSession.getAttribute("user_name");
if (userName != null){
//ak
// Call service to get bid
Integer bid = bookingService.getBidByUserName(userName);
model.addAttribute("user_name", userName);
model.addAttribute("bid", bid);
// (optional) store bid in session for later use
httpSession.setAttribute("bid", bid);
return "caretaker/bookingdetails";
} else {
return "redirect:/muthalvarpadaippagam/officiallogin";
}
}
// @GetMapping("/Dashboard")
// public String Dashboard ( Model model,HttpSession httpSession, HttpServletResponse response) {
// String userName = (String) httpSession.getAttribute("user_name");
// Integer bid = bookingService.getBidByUserName(userName);
// //System.out.println("username:"+ userName);
// if (userName != null){
// model.addAttribute("user_name",userName);
// model.addAttribute("bid", bid);
// setNoCacheHeaders(response);
// return "caretaker/officer-dashboard";
// } else {
// return "redirect:/muthalvarpadaippagam/officiallogin";
// }
// }
// @GetMapping("/Report")
// public String showReportPage(Model model, HttpSession session) {
// String userName = (String) session.getAttribute("user_name");
// // Check if the user is logged in
// if (userName != null && !userName.isEmpty()) {
// model.addAttribute("user_name", userName);
// return "caretaker/report"; // Render the report page
// } else {
// return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
// }
// }
// @GetMapping("/Abstract")
// public String abstractReportPage(Model model, HttpSession session) {
// String userName = (String) session.getAttribute("user_name");
// // Check if the user is logged in
// if (userName != null && !userName.isEmpty()) {
// model.addAttribute("user_name", userName);
// return "caretaker/abstract"; // Render the report page
// } else {
// return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
// }
// }
// added by yogi
@GetMapping("/Dashboard")
public String Dashboard ( Model model,HttpSession httpSession, HttpServletResponse response) {
String userName = (String) httpSession.getAttribute("user_name");
Integer bid = (Integer) httpSession.getAttribute("bid"); // ✅ get BID from session
//System.out.println("username:"+ userName);
if (userName != null && bid!= null){
model.addAttribute("user_name",userName);
model.addAttribute("bid",bid); // ✅ pass BID to model
setNoCacheHeaders(response);
return "caretaker/officer-dashboard";
} else {
return "redirect:/muthalvarpadaippagam/officiallogin";
}
}
@GetMapping("/Report")
public String showReportPage(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
Integer bid = (Integer) session.getAttribute("bid"); // ✅ get BID from session
//Integer bid = bookingService.getBidByUserName(userName);
System.out.println("bid inside controller: "+bid);
// Check if the user is logged in
if (userName != null && !userName.isEmpty() && bid!=null ) {
model.addAttribute("user_name", userName);
model.addAttribute("bid", bid);
return "caretaker/report"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
@GetMapping("/Abstract")
public String abstractReportPage(Model model, HttpSession session) {
String userName = (String) session.getAttribute("user_name");
//Integer bid = bookingService.getBidByUserName(userName);
Integer bid = (Integer) session.getAttribute("bid");
// Check if the user is logged in
if (userName != null && !userName.isEmpty()) {
model.addAttribute("user_name", userName);
model.addAttribute("bid", bid);
return "caretaker/abstract"; // Render the report page
} else {
return "redirect:/muthalvarpadaippagam/officiallogin"; // Redirect to login if not logged in
}
}
}

29
src/main/java/com/gcc/coworkspace/exception/ErrorResponse.java

@ -0,0 +1,29 @@
package com.gcc.coworkspace.exception;
public class ErrorResponse {
private int statusCode;
private String message;
// Constructor, getters, and setters
public ErrorResponse(int statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

46
src/main/java/com/gcc/coworkspace/exception/GlobalExceptionHandler.java

@ -0,0 +1,46 @@
package com.gcc.coworkspace.exception;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.NoHandlerFoundException;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
public ResponseEntity<String> handlePageNotFoundException(NoHandlerFoundException ex) {
// Log the exception
ex.printStackTrace();
// Get the requested URL from the exception
String requestedUrl = ex.getRequestURL();
// Create an error message with the requested URL
String errorMessage = "Page not found: " + requestedUrl;
// Return a ResponseEntity with a 404 Not Found status code and error message
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorMessage);
}
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
// Log the exception
ex.printStackTrace();
// Create an error response object
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), "An error occurred: " + ex.getMessage());
// Return a ResponseEntity with an appropriate HTTP status code and error response object
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse);
}
@ExceptionHandler(NoSlotAvailable.class)
public ResponseEntity<ErrorResponse> noSlotAvailable(NoSlotAvailable ex){
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.NOT_FOUND.value(),ex.getMessage());
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
}
}

7
src/main/java/com/gcc/coworkspace/exception/NoSlotAvailable.java

@ -0,0 +1,7 @@
package com.gcc.coworkspace.exception;
public class NoSlotAvailable extends RuntimeException{
public NoSlotAvailable(String msg){
super(msg);
}
}

1
src/main/java/com/gcc/coworkspace/package-info.java

@ -0,0 +1 @@
package com.gcc.coworkspace;

BIN
src/main/java/com/gcc/coworkspace/service/.DS_Store

33
src/main/java/com/gcc/coworkspace/service/AmountConfigService.java

@ -0,0 +1,33 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@Service
public class AmountConfigService {
@Autowired
private JdbcTemplate jdbcTemplate;
public Map<String, Object> getAmountBySlotid(int slotid) {
String sql = """
SELECT * FROM amount_config WHERE slotid = ?
AND isactive = 1 AND isdelete = 0
""";
try {
Map<String, Object> result = jdbcTemplate.queryForMap(sql, slotid);
return result;
}catch (Exception e){
return null;
}
// Check if the result is null and return an empty map if so
}
}

582
src/main/java/com/gcc/coworkspace/service/AttendanceService.java

@ -0,0 +1,582 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
@Service
public class AttendanceService {
@Autowired
private JdbcTemplate jdbcTemplate;
/*
public List<Map<String, Object>> getAttendance(String type, String typeName, Integer noOfPerson, String fromDate, String toDate) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("c.calid, ")
.append("c.cdate, ")
.append("c.bid, ")
.append("c.cid, ")
.append("c.slotid, ")
.append("c.bookingid, ")
.append("c.bdate, ")
.append("c.bcount, ")
.append("b.user_name, ")
.append("b.mobile, ")
.append("b.from_date, ")
.append("b.to_date, ")
.append("b.no_of_person, ")
.append("b.amount, ")
.append("a.no_of_person_absent AS NoofAbsent, ")
.append("sl.name AS slot_name, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout, ")
.append("cat.name AS type, ")
.append("cat.display_name AS type_name, ")
.append("sc.display_name AS subcategory_name ")
.append("FROM calendar c ")
.append("JOIN booking b ON c.bookingid = b.booking_id ")
.append("JOIN slots sl ON c.slotid = sl.slotid ")
.append("JOIN category cat ON c.cid = cat.cid ")
.append("JOIN subcategory sc ON c.bid = sc.scid ")
.append("left JOIN attendance a ON c.bookingid = a.booking_id ")
.append("WHERE 1=1 ")
.append("AND cat.display_name = 'Desk Space' ");
//.append("AND c.bdate = CURDATE() ");;
List<Object> params = new ArrayList<>();
if (type != null && !type.isEmpty()) {
sql.append("AND cat.name = ? ");
params.add(type);
}
if (typeName != null && !typeName.isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(typeName);
}
if (noOfPerson != null) {
sql.append("AND b.no_of_person = ? ");
params.add(noOfPerson);
}
// Date filters
if (fromDate != null && toDate != null) {
sql.append("AND c.bdate BETWEEN ? AND ? ");
params.add(fromDate);
params.add(toDate);
System.out.println("toDate");
System.out.println(toDate);
System.out.println(fromDate);
System.out.println("fromDate");
}
/* if (fromDate != null && toDate != null &&
!fromDate.trim().isEmpty() && !toDate.trim().isEmpty() && noOfPerson != null) {
sql.append("AND a.cdate BETWEEN ? AND ? ");
params.add(fromDate + " 00:00:00");
params.add(toDate + " 23:59:59");
} else {
sql.append("AND DATE(a.cdate) = CURDATE() ");
}*/
//boolean check =checkAttendancestatus();
//System.out.println(check+"================");
/*
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
*/
public List<Map<String, Object>> getAttendance(String type, String typeName, Integer noOfPerson, String fromDate, String toDate, Integer bid) {
StringBuilder sql = new StringBuilder();
List<Object> params = new ArrayList<>();
sql.append("SELECT ")
.append("c.bookingid, ")
.append("MAX(c.calid) AS calid, ")
.append("MAX(c.cdate) AS cdate, ")
.append("MAX(c.bid) AS bid, ")
.append("MAX(c.cid) AS cid, ")
.append("MAX(c.slotid) AS slotid, ")
.append("MAX(c.bdate) AS bdate, ")
.append("SUM(c.bcount) AS bcount, ")
.append("MAX(b.user_name) AS user_name, ")
.append("MAX(b.mobile) AS mobile, ")
.append("MAX(b.from_date) AS from_date, ")
.append("MAX(b.to_date) AS to_date, ")
.append("MAX(b.no_of_person) AS no_of_person, ")
.append("MAX(b.amount) AS amount, ")
.append("MAX(IFNULL(a.no_of_person_absent, 0)) AS NoofAbsent, ")
.append("MAX(sl.name) AS slot_name, ")
.append("MAX(SUBSTRING_INDEX(sl.name, ' to ', 1)) AS checkin, ")
.append("MAX(SUBSTRING_INDEX(sl.name, ' to ', -1)) AS checkout, ")
.append("MAX(cat.name) AS type, ")
.append("MAX(cat.display_name) AS type_name, ")
.append("MAX(sc.display_name) AS subcategory_name ")
.append("FROM calendar c ")
.append("JOIN booking b ON c.bookingid = b.booking_id ")
.append("JOIN slots sl ON c.slotid = sl.slotid ")
.append("JOIN category cat ON c.cid = cat.cid ")
.append("JOIN subcategory sc ON c.bid = sc.scid ")
.append("JOIN buildings bu ON bu.bid = c.bid ") //ak
.append("LEFT JOIN attendance a ON c.bookingid = a.booking_id ")
.append("WHERE cat.display_name = 'Desk Space' ")
.append("AND sl.name = '09:00 AM to 09:00 PM' ");
// Optional filters
if (type != null && !type.trim().isEmpty()) {
sql.append("AND cat.name = ? ");
params.add(type.trim());
}
if (typeName != null && !typeName.trim().isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(typeName.trim());
}
if (noOfPerson != null) {
sql.append("AND b.no_of_person = ? ");
params.add(noOfPerson);
}
if (bid != null) {
sql.append("AND c.bid = ? ");
params.add(bid);
}
if (fromDate != null && toDate != null && !fromDate.trim().isEmpty() && !toDate.trim().isEmpty()) {
sql.append("AND c.bdate BETWEEN ? AND ? ");
params.add(fromDate.trim());
params.add(toDate.trim());
}
sql.append("GROUP BY c.bookingid ")
.append("ORDER BY MAX(c.bdate) DESC");
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
/*
public List<Map<String, Object>> getAttendance2(String type, String typeName, Integer noOfPerson, String fromDate, String toDate) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("c.calid, ")
.append("c.cdate, ")
.append("c.bid, ")
.append("c.cid, ")
.append("c.slotid, ")
.append("c.bookingid, ")
.append("c.bdate, ")
.append("c.bcount, ")
.append("b.user_name, ")
.append("b.mobile, ")
.append("b.from_date, ")
.append("b.to_date, ")
.append("b.no_of_person, ")
.append("b.amount, ")
.append("IFNULL(a.no_of_person_absent, 0) AS NoofAbsent, ")
.append("sl.name AS slot_name, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout, ")
.append("cat.name AS type, ")
.append("cat.display_name AS type_name, ")
.append("sc.display_name AS subcategory_name ")
.append("FROM calendar c ")
.append("JOIN booking b ON c.bookingid = b.booking_id ")
.append("JOIN slots sl ON c.slotid = sl.slotid ")
.append("JOIN category cat ON c.cid = cat.cid ")
.append("JOIN subcategory sc ON c.bid = sc.scid ")
.append("LEFT JOIN attendance a ON c.bookingid = a.booking_id ")
.append("WHERE 1=1 ")
.append("AND cat.display_name = 'Desk Space' ");
List<Object> params = new ArrayList<>();
if (type != null && !type.isEmpty()) {
sql.append("AND cat.name = ? ");
params.add(type);
}
if (typeName != null && !typeName.isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(typeName);
}
if (noOfPerson != null) {
sql.append("AND b.no_of_person = ? ");
params.add(noOfPerson);
}
// Apply only exact date match, not range
if (fromDate != null && !fromDate.isEmpty()) {
sql.append("AND DATE(c.bdate) = ? ");
params.add(fromDate);
}
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
*/
//prevoius
/* public List<Map<String, Object>> getAttendance2(String type, String typeName, Integer noOfPerson, String fromDate, String toDate) {
StringBuilder sql = new StringBuilder("SELECT c.calid, c.cdate, c.bid, c.cid, c.slotid, c.bookingid, c.bdate, c.bcount,cat.display_name AS type_name, "
+ "b.user_name, b.mobile, b.from_date, b.to_date, "
+ "b.no_of_person, b.amount, IFNULL(c.absent_count, 0) AS NoofAbsent, "
+ " SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, "
+ " SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout "
+ "FROM booking b "
+ "left join calendar c on c.bookingid = b.booking_id "
+ "left JOIN slots sl ON c.slotid = sl.slotid "
+ "left JOIN category cat ON c.cid = cat.cid "
+ "left JOIN subcategory sc ON c.bid = sc.scid "
+ "where cat.display_name = 'Desk Space'");
List<Object> params = new ArrayList<>();
if (type != null && !type.isEmpty()) {
sql.append("AND cat.name = ? ");
params.add(type);
}
if (typeName != null && !typeName.isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(typeName);
}
if (noOfPerson != null) {
sql.append("AND b.no_of_person = ? ");
params.add(noOfPerson);
}
// Apply only exact date match, not range
if (fromDate != null && !fromDate.isEmpty()) {
sql.append("AND DATE(c.bdate) = ? ");
params.add(fromDate);
}
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}*/
public List<Map<String, Object>> getAttendance2(String type, String typeName, String bid,Integer noOfPerson, String fromDate, String toDate) {
StringBuilder sql = new StringBuilder("SELECT c.calid, c.cdate, c.bid, c.cid, c.slotid, c.bookingid, c.bdate, c.bcount,cat.display_name AS type_name, "
+ "b.user_name, b.mobile, b.from_date, b.to_date, "
+ "b.no_of_person, b.amount, IFNULL(c.absent_count, 0) AS NoofAbsent, "
+ " SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, "
+ " SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout "
+ "FROM coworkingspace.booking b "
+ "left join calendar c on c.bookingid = b.booking_id "
+ "left JOIN slots sl ON c.slotid = sl.slotid "
+ "left JOIN category cat ON c.cid = cat.cid "
+ "left JOIN subcategory sc ON c.bid = sc.scid "
+ "where cat.display_name = 'Desk Space'");
List<Object> params = new ArrayList<>();
if (type != null && !type.isEmpty()) {
sql.append("AND cat.name = ? ");
params.add(type);
}
if (typeName != null && !typeName.isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(typeName);
}
if (noOfPerson != null) {
sql.append("AND b.no_of_person = ? ");
params.add(noOfPerson);
}
// Apply only exact date match, not range
if (fromDate != null && !fromDate.isEmpty()) {
sql.append("AND DATE(c.bdate) = ? ");
params.add(fromDate);
}
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
public List<Map<String, Object>> getAttendanceWithSlotDetails(
String type, String typeName, Integer noOfPerson, String fromDate, String toDate) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("b.booking_id, ")
.append("a.id AS attendence_id, ")
.append("b.user_name, b.mobile, b.from_date, b.to_date, b.cdate, ")
.append("sl.*, ")
.append("cat.display_name, ")
.append("a.no_of_person_absent as seat_available, ")
.append("b.amount, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, ")
.append("SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout ")
.append("FROM attendance a ")
.append("LEFT JOIN booking b ON a.booking_id = b.booking_id ")
.append("JOIN slots sl ON a.slotid = sl.slotid ")
.append("JOIN category cat ON a.cid = cat.cid ")
.append("WHERE 1=1 ");
List<Object> params = new ArrayList<>();
if (type != null && !type.trim().isEmpty()) {
sql.append("AND LOWER(cat.name) = ? ");
params.add(type.toLowerCase());
}
if (typeName != null && !typeName.trim().isEmpty()) {
sql.append("AND LOWER(cat.display_name) = ? ");
params.add(typeName.toLowerCase());
}
if (noOfPerson != null) {
sql.append("AND a.no_of_person_absent = ? ");
params.add(noOfPerson);
}
/* if (fromDate != null && toDate != null &&
!fromDate.trim().isEmpty() && !toDate.trim().isEmpty() && noOfPerson != null) {
sql.append("AND a.cdate BETWEEN ? AND ? ");
params.add(fromDate + " 00:00:00");
params.add(toDate + " 23:59:59");
}*/
if (fromDate != null && toDate != null &&
!fromDate.trim().isEmpty() && !toDate.trim().isEmpty() && noOfPerson != null) {
sql.append("AND a.cdate BETWEEN ? AND ? ");
params.add(fromDate + " 00:00:00");
params.add(toDate + " 23:59:59");
} else {
sql.append("AND DATE(a.cdate) = CURDATE() ");
}
// Debug
System.out.println("Executing SQL: " + sql);
System.out.println("With params: " + params);
System.out.println("noOfPerson SQL: " + noOfPerson);
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
//ak
public Map<String, Object> getAbsentCountByBookingId(int bookingId) {
String sql = "SELECT no_of_person_absent as absentCount FROM attendance where booking_id = ? ";
return jdbcTemplate.queryForMap(sql, bookingId);
}
/* public Map<String, Object> updateAbsentCountByBookingId(int noOfAbsent, int bookingId) {
String sql = "UPDATE attendance SET no_of_person_absent = ? WHERE booking_id = ?";
int rowsAffected = jdbcTemplate.update(sql, noOfAbsent, bookingId);
Map<String, Object> response = new HashMap<>();
response.put("success", rowsAffected > 0);
response.put("rowsAffected", rowsAffected);
return response;
}*/
public Map<String, Object> updateAbsentCountByBookingId(int noOfAbsent, int bookingId) {
Map<String, Object> response = new HashMap<>();
// Step 1: Check if new_booking_id is NOT NULL
String getNewBookingIdSql = "SELECT new_booking_id FROM attendance WHERE booking_id = ?";
Integer newBookingId = jdbcTemplate.queryForObject(getNewBookingIdSql, Integer.class, bookingId);
// Step 2: If new_booking_id is NOT null, perform validation
if (newBookingId != null) {
// Get no_of_person from caretaker_booking for the new_booking_id
String getNoOfPersonSql = "SELECT no_of_person FROM caretaker_booking WHERE booking_id = ?";
Integer noOfPerson = jdbcTemplate.queryForObject(getNoOfPersonSql, Integer.class, newBookingId);
System.out.println("noOfPersons");
System.out.println(noOfPerson);
if (noOfPerson == null) {
response.put("success", false);
response.put("message", "No record found in caretaker_booking for new_booking_id.");
return response;
}
if (noOfAbsent < noOfPerson) {
response.put("success", false);
response.put("message", "Number of absent persons exceeds total number of persons allowed.");
return response;
}
}
System.out.println("noOfAbsentsss");
System.out.println(noOfAbsent);
// Step 3: Proceed to update regardless if new_booking_id is null or noOfAbsent is valid
String updateSql = "UPDATE attendance SET no_of_person_absent = ? WHERE booking_id = ?";
int rowsAffected = jdbcTemplate.update(updateSql, noOfAbsent, bookingId);
response.put("success", rowsAffected > 0);
response.put("rowsAffected", rowsAffected);
return response;
}
/* public void updateAbsentCountByBookingId(int bookingId,int noOfAbsent) {
String sql = "update attendance set no_of_person_absent=? where booking_id = ?";
jdbcTemplate.queryForMap(sql,noOfAbsent, bookingId);
}*/
/*public void updateNewBookingIdInAttendance(int newBookingId,
String attendanceid) {
String sql = "UPDATE coworkspace.attendance SET new_booking_id = ? "
+ "WHERE id = ? ";
jdbcTemplate.update(sql, newBookingId,attendanceid);
}*/
public int saveAttendanceByBookingId(int bookingId, Map<String, Object> requestData) {
// Fetch data for booking id
String fetchSql = "SELECT c.bid, c.cid, c.slotid, c.bcount, b.no_of_person " +
"FROM calendar c " +
"JOIN booking b ON c.bookingid = b.booking_id " +
"WHERE c.bookingid = ? LIMIT 1";
Map<String, Object> bookingData = jdbcTemplate.queryForMap(fetchSql, bookingId);
if (bookingData == null) {
throw new RuntimeException("No booking found for bookingId: " + bookingId);
}
String newbookingId = null;
// From request body, get attendance status and no_of_person_absent
boolean attendanceStatus = Boolean.parseBoolean(requestData.get("attendance_status").toString());
int noOfPersonAbsent = Integer.parseInt(requestData.get("no_of_person_absent").toString());
// Insert into attendance table
String insertSql = "INSERT INTO attendance " +
"(id, booking_id, bid, cid, slotid, bcount, attendance_status, no_of_person, no_of_person_absent, new_booking_id, cdate) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
// For id, you can pass NULL if AUTO_INCREMENT is enabled, else generate manually
return jdbcTemplate.update(insertSql,
null, // id (assuming auto_increment)
bookingId,
bookingData.get("bid"),
bookingData.get("cid"),
bookingData.get("slotid"),
bookingData.get("bcount"),
attendanceStatus,
bookingData.get("no_of_person"),
noOfPersonAbsent,
newbookingId // new_booking_id
);
}
// public int updateNewBookingIdInAttendanceById(int attendanceId, int newBookingId) {
// System.out.println("Updating attendance table: attendance.id = " + attendanceId + ", new_booking_id = " + newBookingId);
// String updateSql = "UPDATE attendance SET new_booking_id = ? WHERE id = ?";
// return jdbcTemplate.update(updateSql, newBookingId, attendanceId);
// }
public boolean hasTodayAttendance(int bookingId) {
String sql = "SELECT COUNT(*) FROM attendance WHERE booking_id = ? AND DATE(cdate) = CURDATE()";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class, bookingId);
return count != null && count > 0;
}
public boolean saveAndUpdateAttendance(int bookingId, int noOfAbsent) {
try {
// 1. Insert into attendance
String insertAttendance = "INSERT INTO attendance (booking_id, no_of_person_absent, cdate, attendance_status) VALUES (?, ?, NOW(), ?)";
jdbcTemplate.update(insertAttendance, bookingId, noOfAbsent, "ABSENT");
System.out.println("✅ Step 1: Attendance saved");
// 2. Just update absent_count (not bcount)
String updateCalendar = "UPDATE calendar SET absent_count = absent_count + ? WHERE bookingid = ? AND DATE(bdate) = CURDATE()";
jdbcTemplate.update(updateCalendar, noOfAbsent, bookingId);
System.out.println("✅ Step 2: Calendar updated");
return true;
} catch (Exception e) {
System.err.println("❌ Error: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("Failed to save and update attendance", e);
}
}
public boolean saveAbsent(List<Map<String, Object>> absentList,int bid)
{
try {
for(Map<String, Object> absentLists:absentList){
int bookingId = Integer.parseInt(absentLists.get("bookingId").toString());
int noOfAbsent = Integer.parseInt(absentLists.get("noOfAbsent").toString());
String insertAttendance = "INSERT INTO attendance (booking_id, no_of_person_absent, cdate, attendance_status, bid) VALUES (?, ?, NOW(), ?,?)";
jdbcTemplate.update(insertAttendance, bookingId, noOfAbsent, "ABSENT",bid);
String updateCalendar = "UPDATE calendar SET absent_count = absent_count + ? WHERE bookingid = ? AND DATE(bdate) = CURDATE()";
jdbcTemplate.update(updateCalendar, noOfAbsent, bookingId);
}
return true;
} catch (Exception e) {
System.err.println("❌ Error: " + e.getMessage());
e.printStackTrace();
throw new RuntimeException("Failed to save attendance", e);
}
}
public int insertAbsentCount(int bid, LocalDate absentDate, int absentCount) {
final String sql = "INSERT INTO absent_count "
+ " (absent_date, absent_count, cdate, bid, is_active, is_delete) "
+ " VALUES (?, ?, ?, ?, 1, 0)";
Date sqlAbsentDate = Date.valueOf(absentDate);
Date today = Date.valueOf(LocalDate.now());
try {
int rows = jdbcTemplate.update(sql,sqlAbsentDate,absentCount,today,bid);
return rows;
} catch (DataAccessException e) {
// TODO: log the exception (e.g. logger.error(...))
return 0;
}
}
private boolean checkAttendancestatus() {
String sql="SELECT absent_count " +
"FROM absent_count " +
"WHERE DATE(absent_date) = CURDATE() AND is_active = 1 AND is_delete = 0 LIMIT 1";
Integer cnt = jdbcTemplate.queryForObject(sql, Integer.class);
// cnt will be 0 if there are no rows today; >0 otherwise
return cnt != null && cnt > 0;
}
public int getTodayAbsentCount(int bid) {
try {
String sql = "SELECT IFNULL(SUM(absent_count), 0) FROM calendar WHERE bdate = CURDATE() AND bid = ?";
Integer result = jdbcTemplate.queryForObject(sql, Integer.class, bid);
return result != null ? result : 0;
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
return 0;
}
}
}

1111
src/main/java/com/gcc/coworkspace/service/BookingService.java
File diff suppressed because it is too large
View File

198
src/main/java/com/gcc/coworkspace/service/BookingServiceCopy.java

@ -0,0 +1,198 @@
package com.gcc.coworkspace.service;
//import conferencehall.conferencehall.Repository.CoworkSpaceRepository;
import com.gcc.coworkspace.exception.NoSlotAvailable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class BookingServiceCopy {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private AmountConfigService amountConfigService;
// @Autowired
//private CoworkSpaceRepository coworkSpaceRepository;
public int saveTempBooking(String userName, long userMobile, List<Integer> slots, LocalDate fromDate, LocalDate toDate, int noOfPeople, int catId, int buildId, int subId) {
double amount =0;
List<LocalDate> btnDates = getDatesBetween(fromDate, toDate);
if(!btnDates.isEmpty()) {
for (Integer slot : slots) {
Map<String,Object> amt = amountConfigService.getAmountBySlotid(slot);
if(amt!=null) {
for (LocalDate date : btnDates) {
if (checkAvailabilityByBdate(buildId, catId, date, subId, noOfPeople, slot)) {
return 0;
}
}
}
else {
throw new NoSlotAvailable("Amount is not configured");
}
}
}
// Join the slots with commas
String Tslot = slots.stream().map(String::valueOf).collect(Collectors.joining(","));
System.out.println(Tslot);
// Define the SimpleJdbcInsert with the expected table and key
SimpleJdbcInsert insert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("temp_booking")
.usingGeneratedKeyColumns("tempbookid");
// Map the parameters to the column names
Map<String, Object> parameters = new HashMap<>();
parameters.put("user_name", userName);
parameters.put("mobile", userMobile);
parameters.put("slotids", Tslot);
parameters.put("from_date", fromDate);
parameters.put("to_date", toDate);
parameters.put("no_of_person", noOfPeople);
parameters.put("cdate", LocalDateTime.now());
parameters.put("cid", catId);
parameters.put("bid", buildId);
parameters.put("sid", subId);
try {
// Execute the insert and return the generated key
Number generatedId = insert.executeAndReturnKey(parameters);
return generatedId.intValue();
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
public Map<String, Object> getTempBookingByTempId(int tempbookid) {
String sql = "SELECT * FROM temp_booking where tempbookid = ?";
return jdbcTemplate.queryForMap(sql, tempbookid);
}
// public int saveBooking(int tempbookid) {
// System.out.println("==========central====save " + tempbookid);
//
// // Retrieve data from temp_booking based on tempbookid
// Map<String, Object> tempBooking = getTempBookingByTempId(tempbookid);
// System.out.println(tempBooking);
//
// // SQL INSERT query with placeholders and RETURNING clause
// String sql = "INSERT INTO booking (user_name, mobile, slotids, from_date, to_date, no_of_person, amount, payment_status, cdate, cid, bid, sid) "
// + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING booking_id"; // Assuming 'bid' is the booking ID
//
// try {
// // Execute the insert query and retrieve the generated booking ID
// int bookingId = jdbcTemplate.update(sql,
// new Object[]{
// tempBooking.get("user_name"), // user_name
// tempBooking.get("mobile"), // mobile
// tempBooking.get("slotIds"), // slotids
// tempBooking.get("from_date").toString(), // from_date
// tempBooking.get("to_date").toString(), // to_date
// tempBooking.get("no_of_person"), // no_of_person
// tempBooking.get("amount"), // amount (ensure this exists in tempBooking)
// tempBooking.get("payment_status"), // payment_status (set a default if needed)
// LocalDateTime.now(), // cdate (current timestamp)
// tempBooking.get("cid"), // cid
// tempBooking.get("bid"), // bid
// tempBooking.get("sid") // sid
// },
// Integer.class); // Expecting an Integer return type for booking ID
//
// System.out.println("Booking successfully created with ID: " + bookingId);
// return bookingId; // Return the generated booking ID
// } catch (Exception e) {
// System.err.println("Error while saving booking: " + e.getMessage());
// e.printStackTrace();
// return 0; // Return 0 in case of an error
// }
// }
public static List<LocalDate> getDatesBetween(LocalDate fromDate, LocalDate toDate) {
List<LocalDate> dates = new ArrayList<>();
LocalDate currentDate = fromDate;
while (!currentDate.isAfter(toDate)) {
dates.add(currentDate);
currentDate = currentDate.plusDays(1);
}
return dates;
}
public Map<String, Object> getCalendarBySlotId(int bid, int cid, LocalDate Bdate, int slotId) {
String sql = """
select slotid, sum(bcount) as filed, bdate
from calendar
where bdate = ?
and cid = ? and bid = ? and slotId = ?
group by slotid, bdate
""";
// Using query() instead of queryForMap to handle no results
List<Map<String, Object>> result = jdbcTemplate.query(sql, (rs, rowNum) -> {
Map<String, Object> map = new HashMap<>();
map.put("slotid", rs.getInt("slotid"));
map.put("filed", rs.getInt("filed")); // Adjust type accordingly
map.put("bdate", rs.getDate("bdate").toLocalDate());
return map;
}, Bdate, cid, bid, slotId);
// Check if result is empty and handle it
if (result.isEmpty()) {
return Collections.emptyMap(); // Return an empty map if no rows found
}
return result.get(0); // Return the first (and expected only) result
}
public Map<String, Object> getCapacity(int sId, int catId) {
String sql = "select limits, capacity from subcategory where scid = ? and cid = ?";
try {
return jdbcTemplate.queryForMap(sql, sId, catId);
} catch (Exception e) {
e.printStackTrace();
return Collections.singletonMap("error", "An error occurred while getting capacity.");
}
}
public Boolean checkAvailabilityByBdate(int bid,int cid,LocalDate Bdate,int scid,int noOfPerson,int slotId){
System.out.println("=================checkAvailabilityByBdate===========================");
Map<String,Object> getcalendar = getCalendarBySlotId(bid,cid,Bdate,slotId);
Map<String,Object> capacity= getCapacity( scid, cid);
int capsint = Integer.parseInt(capacity.get("limits").toString());
int capacityint = Integer.parseInt(capacity.get("capacity").toString());
System.out.println("=====condition=====");
if(!getcalendar.isEmpty()){
int count= Integer.parseInt(getcalendar.get("filed")+"")+ noOfPerson;
if(count > capacityint ){
return true;
}
return false;
}
System.out.println("======end==============");
return false;
}
}

170
src/main/java/com/gcc/coworkspace/service/BuildingService.java

@ -0,0 +1,170 @@
package com.gcc.coworkspace.service;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class BuildingService {
private final JdbcTemplate jdbcTemplate;
public BuildingService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// public List<Map<String, Object>> getBuildingDetails() {
// String sql = "SELECT b.building_id, b.building_name, b.latitude, b.longitude, b.building_address, " +
// "b.dictrict, b.pincode, b.contact_1, b.contact_2, b.contact_name, " +
// "c.cat_name, c.cat_flag, c.display_name, bc.bc_id, " +
// "bc.capacity, bc.price, bc.gst, bc.days, bc.timing, bc.limits, bc.bc_desc, bc.floor " +
// "FROM coworkspacedata.buildings b " +
// "LEFT JOIN coworkspacedata.building_caterogy bc ON b.building_id = bc.building_id_bc_fk " +
// "LEFT JOIN coworkspacedata.slots sl ON bc.bc_id = sl.bc_id_slot_fk " +
// "LEFT JOIN coworkspacedata.category c ON bc.cat_id_bc_fk = c.cat_id";
// return jdbcTemplate.queryForList(sql);
// }
// public List<Map<String, Object>> getBuildingDetails() {
// String sql = "SELECT bid, name, address, latitude, longitude, orderby, cdate, " +
// "isactive, isdelete, pincode, district, contact_1, contact_2, area, contact_person " +
// "FROM buildings WHERE isdelete = 0 ORDER BY orderby ASC";
// return jdbcTemplate.queryForList(sql);
// }
public List<Map<String, Object>> getBuildingDetails() {
String sql = """
SELECT
b.bid,
b.name AS name,
b.address,
b.latitude,
b.longitude,
b.orderby,
b.cdate,
b.isactive,
b.isdelete,
b.pincode,
b.district,
b.contact_1,
b.contact_2,
b.area,
b.contact_person,
b.building_image_url,
c.cid,
c.display_name,
c.description,
c.timing,
c.days,
c.icon,
c.list1,
c.list2,
c.list3,
c.list4,
s.capacity
FROM buildings b
LEFT JOIN category c
ON b.bid = c.bid AND c.isdelete = 0
LEFT JOIN subcategory s
ON c.cid = s.cid
WHERE b.isdelete = 0
ORDER BY b.orderby ASC, c.orderby ASC
""";
return jdbcTemplate.queryForList(sql);
}
public List<Map<String, Object>> getBuildingDetailsbyId(String bid) {
String sql = "SELECT bid, name, address, latitude, longitude, orderby, cdate, " +
"isactive, isdelete, pincode, district, contact_1, contact_2, area, contact_person " +
"FROM buildings WHERE isdelete = 0 and bid = ? ORDER BY orderby ASC";
return jdbcTemplate.queryForList(sql,bid);
}
// public List<Map<String, Object>> getBuildingCategoryDetailsById(int bcId) {
// String sql = "SELECT b.building_id, b.building_name, b.latitude, b.longitude, b.building_address, " +
// "b.dictrict, b.pincode, b.contact_1, b.contact_2, b.contact_name, " +
// "c.cat_name, c.cat_flag, c.display_name, " +
// "bc.bc_id, bc.capacity, bc.price, bc.gst, bc.days, bc.timing, bc.limits, bc.bc_desc, bc.floor, sl.slot_timing, sl.c_date " +
// "FROM buildings b " +
// "LEFT JOIN building_caterogy bc ON b.building_id = bc.building_id_bc_fk " +
// "LEFT JOIN slots sl ON bc.bc_id = sl.bc_id_slot_fk " +
// "LEFT JOIN category c ON bc.cat_id_bc_fk = c.cat_id " +
// "WHERE bc.bc_id = ?";
//
// // Return a list of maps to handle multiple rows
// return jdbcTemplate.queryForList(sql, bcId);
// }
public List<Map<String, Object>> getBuildingCategoryDetailsById(int bid,int cid) {
String sql = "SELECT b.bid AS Building_ID, " +
"b.name AS Building_Name, " +
"b.address AS Address, " +
"b.latitude AS Latitude, " +
"b.longitude AS Longitude, " +
"b.pincode AS Pincode, " +
"b.district AS District, " +
"b.contact_1 AS Contact1, " +
"b.contact_2 AS Contact2, " +
"b.area AS Area, " +
"b.contact_person AS Contact_Person, " +
"c.cid AS Category_ID, " +
"c.name AS Category_Name, " +
"c.display_name AS Category_Display_Name, " +
"c.description AS Category_Description, " +
" c.timing AS Timing, " +
" c.days AS days, " +
"sc.scid AS scid, " +
"sc.name AS Subcategory_Name, " +
"sc.display_name AS Subcategory_Display_Name, " +
"sc.limits AS Subcategory_Limits, " +
"sc.capacity AS Subcategory_Capacity, " +
"s.slotid AS Slot_ID, " +
"s.name AS Slot_Name " +
"FROM buildings b " +
"JOIN category c ON b.bid = c.bid " +
"JOIN subcategory sc ON c.cid = sc.cid " +
"JOIN slots s ON sc.scid = s.scid " +
"WHERE c.bid=? and c.cid = ? " + // Keep the placeholder
"ORDER BY b.name, c.name, sc.name, s.name";
return jdbcTemplate.queryForList(sql, bid,cid); // Pass the actual parameter here
}
public List<Map<String, Object>> getSubcategoryDisplayNames() {
String sql = "SELECT * FROM subcategory";
// Return a list of maps to hold the result rows
return jdbcTemplate.queryForList(sql);
}
public List<Map<String, Object>> getamenities() {
String sql = "SELECT * FROM amenities"
;
// Return a list of maps to hold the result rows
return jdbcTemplate.queryForList(sql);
}
public List<Map<String, Object>> getSubCategoryDetailsById(int categoryId) {
String sql = "SELECT * FROM subcategory WHERE cid = ?";
return jdbcTemplate.queryForList(sql,categoryId);
}
public List<Map<String, Object>> getslotsbySubcategoryId(Integer subcategoryId) {
String sql = "SELECT * FROM slots WHERE scid = ?";
return jdbcTemplate.queryForList(sql,subcategoryId);
}
public List<Map<String, Object>> getAmenitiesById(int categoryId) {
String sql = "SELECT * FROM amenities WHERE cid = ?";
return jdbcTemplate.queryForList(sql,categoryId);
}
}

27
src/main/java/com/gcc/coworkspace/service/CalendarService.java

@ -0,0 +1,27 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class CalendarService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> getCalendarBasedOnSubCatId(int scid) {
String sql = "select * from slots where scid = ? AND (`isactive`=1 AND `isdelete`=0)";
System.err.println(sql+scid);
return jdbcTemplate.queryForList(sql, scid);
}
public String getSlotText(String slotID) {
String sql = "SELECT name FROM slots WHERE slotid = ? AND isactive = 1 AND isdelete = 0";
return jdbcTemplate.queryForObject(sql, new Object[]{slotID}, String.class);
}
}

229
src/main/java/com/gcc/coworkspace/service/CheckListService.java

@ -0,0 +1,229 @@
package com.gcc.coworkspace.service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import java.util.TreeMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@Service
public class CheckListService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> getQuestionsWithOptions(int shiftId) {
/* int today = LocalDate.now().getDayOfMonth();
// Skip deep cleaning if not 15 or 29
if (shiftId == 3 && today != 15 && today != 29) {
return new ArrayList<>();
}*/
int today = LocalDate.now().getDayOfMonth();
LocalDate now = LocalDate.now();
int lastDayOfMonth = now.lengthOfMonth(); // Gets 28, 29, 30, or 31 depending on the month
// Skip deep cleaning if not 15 or last day of the month
if (shiftId == 3 && today != 15 && today != lastDayOfMonth) {
return new ArrayList<>();
}
// Fetch questions
String questionsSql = "SELECT id, questions, field_name FROM question_master " +
"WHERE shift_id = ? AND is_active = 1 AND is_delete = 0 ORDER BY order_by";
List<Map<String, Object>> questions = jdbcTemplate.queryForList(questionsSql, shiftId);
// Fetch options
String optionsSql = "SELECT id, options FROM options_values " +
"WHERE is_active = 1 AND is_delete = 0 ORDER BY order_by";
List<Map<String, Object>> allOptions = jdbcTemplate.queryForList(optionsSql);
// Fetch feedback if exists
String feedbackSql = "SELECT * FROM checklist_feedback " +
"WHERE shift_id = ? AND DATE(cdate) = CURDATE() " +
"ORDER BY id DESC LIMIT 1";
List<Map<String, Object>> feedbackList = jdbcTemplate.queryForList(feedbackSql, shiftId);
boolean submitted = !feedbackList.isEmpty(); // 🔥 whether feedback is present for today
Map<String, Object> feedback = submitted ? feedbackList.get(0) : new HashMap<>();
// Attach options and selected flag to each question
for (Map<String, Object> question : questions) {
String fieldName = (String) question.get("field_name");
// Mark options with "selected": true/false
List<Map<String, Object>> enrichedOptions = new ArrayList<>();
for (Map<String, Object> opt : allOptions) {
Map<String, Object> enrichedOpt = new HashMap<>(opt);
Object selectedVal = feedback.get(fieldName);
if (selectedVal != null && selectedVal.toString().equals(opt.get("id").toString())) {
enrichedOpt.put("selected", true);
} else {
enrichedOpt.put("selected", false);
}
enrichedOptions.add(enrichedOpt);
}
question.put("options", enrichedOptions);
question.put("submitted", submitted); // 🔥 inject the submitted flag for frontend
}
return questions;
}
//initial
/*public void saveFeedback(Map<String, String> answers, Integer shiftId) {
StringJoiner columns = new StringJoiner(", ");
StringJoiner placeholders = new StringJoiner(", ");
Object[] values = new Object[answers.size() + 1]; // +1 for shiftId
int index = 0;
// Add shift_id column
columns.add("shift_id");
placeholders.add("?");
values[index++] = shiftId;
// Add answers
for (Map.Entry<String, String> entry : answers.entrySet()) {
columns.add(entry.getKey());
placeholders.add("?");
values[index++] = entry.getValue();
}
System.out.println("test");
String sql = "INSERT INTO checklist_feedback (" + columns + ") VALUES (" + placeholders + ")";
jdbcTemplate.update(sql, values);
}*/
public void saveFeedback(Map<String, String> answers, Integer shiftId, String date) {
StringJoiner columns = new StringJoiner(", ");
StringJoiner placeholders = new StringJoiner(", ");
Object[] values = new Object[answers.size() + 2]; // +1 for shiftId, +1 for cdate
int index = 0;
// Add shift_id column
columns.add("shift_id");
placeholders.add("?");
values[index++] = shiftId;
// Add cdate column
columns.add("cdate");
placeholders.add("?");
values[index++] = date; // Assuming `cdate` is of type DATE or VARCHAR(10) in `yyyy-MM-dd`
// Add answers
for (Map.Entry<String, String> entry : answers.entrySet()) {
columns.add(entry.getKey());
placeholders.add("?");
values[index++] = entry.getValue();
}
String sql = "INSERT INTO checklist_feedback (" + columns + ") VALUES (" + placeholders + ")";
jdbcTemplate.update(sql, values);
}
public List<Map<String, Object>> getFeedbackSummary(String fromDate, String toDate) {
String sql = "SELECT DATE(cdate) AS cdate, shift_id " +
"FROM checklist_feedback " +
"WHERE DATE(cdate) BETWEEN ? AND ? " +
"GROUP BY DATE(cdate), shift_id";
List<Map<String, Object>> raw = jdbcTemplate.queryForList(sql, fromDate, toDate);
Map<String, Set<Integer>> dateShiftMap = new TreeMap<>();
for (Map<String, Object> row : raw) {
String date = row.get("cdate").toString();
int shift = (int) row.get("shift_id");
dateShiftMap.computeIfAbsent(date, k -> new HashSet<>()).add(shift);
}
List<Map<String, Object>> result = new ArrayList<>();
for (String date : dateShiftMap.keySet()) {
Set<Integer> shifts = dateShiftMap.get(date);
Map<String, Object> record = new LinkedHashMap<>();
record.put("date", date);
record.put("shift1", shifts.contains(1));
record.put("shift2", shifts.contains(2));
record.put("shift3", shifts.contains(3));
result.add(record);
}
return result;
}
//
public List<Map<String, Object>> getFeedbackQuestions(int shiftId, LocalDate date) {
int day = date.getDayOfMonth();
int lastDay = date.lengthOfMonth();
// Only allow Deep Cleaning on 15 or last day
if (shiftId == 3 && day != 15 && day != lastDay) {
return new ArrayList<>();
}
// Get Questions
String questionsSql = "SELECT id, questions, field_name FROM question_master " +
"WHERE shift_id = ? AND is_active = 1 AND is_delete = 0 ORDER BY order_by";
List<Map<String, Object>> questions = jdbcTemplate.queryForList(questionsSql, shiftId);
// Get Options
String optionsSql = "SELECT id, options FROM options_values " +
"WHERE is_active = 1 AND is_delete = 0 ORDER BY order_by";
List<Map<String, Object>> allOptions = jdbcTemplate.queryForList(optionsSql);
// Get Feedback for the selected date
String feedbackSql = "SELECT * FROM checklist_feedback " +
"WHERE shift_id = ? AND DATE(cdate) = ? ORDER BY id DESC LIMIT 1";
List<Map<String, Object>> feedbackList = jdbcTemplate.queryForList(feedbackSql, shiftId, date);
boolean submitted = !feedbackList.isEmpty();
Map<String, Object> feedback = submitted ? feedbackList.get(0) : new HashMap<>();
for (Map<String, Object> question : questions) {
String fieldName = (String) question.get("field_name");
List<Map<String, Object>> enrichedOptions = new ArrayList<>();
for (Map<String, Object> opt : allOptions) {
Map<String, Object> enrichedOpt = new HashMap<>(opt);
Object selectedVal = feedback.get(fieldName);
enrichedOpt.put("selected", selectedVal != null && selectedVal.toString().equals(opt.get("id").toString()));
enrichedOptions.add(enrichedOpt);
}
question.put("options", enrichedOptions);
question.put("submitted", submitted);
}
return questions;
}
}

348
src/main/java/com/gcc/coworkspace/service/ComplaintService.java

@ -0,0 +1,348 @@
package com.gcc.coworkspace.service;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.SecureRandom;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.gcc.coworkspace.controller.DateTimeUtil;
@Service
public class ComplaintService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private Environment environment;
@Value("${app.full_URL}")
private String baseUrl;
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final int STRING_LENGTH = 15;
private static final Random RANDOM = new SecureRandom();
public int complaintDetails(String userName, String remarks, String mobileNumber, MultipartFile uploadPhotoFile) throws IOException {
String uploadPhotoUrl = null;
String status = "OPEN";
if (uploadPhotoFile != null && !uploadPhotoFile.isEmpty()) {
uploadPhotoUrl = saveFile(uploadPhotoFile);
}
// Generate complaint_no
String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
int randomSuffix = new Random().nextInt(90000) + 10000;
String complaintNo = "CMP" + datePrefix + randomSuffix;
// Insert into complaint_details
String sql = "INSERT INTO complaint_details (complaint_no, status, user_name, remarks, mobile_number, upload_photo_url) " +
"VALUES (?, ?, ?, ?, ?, ?)";
int rows = jdbcTemplate.update(sql, complaintNo, status, userName, remarks, mobileNumber, uploadPhotoUrl);
// Insert into complaint_details_history
String historySql = "INSERT INTO complaint_details_history (complaint_no, status, user_name, remarks, mobile_number, upload_photo_url) " +
"VALUES (?, ?, ?, ?, ?, ?)";
jdbcTemplate.update(historySql, complaintNo, status, userName, remarks, mobileNumber, uploadPhotoUrl);
return rows;
}
//complaint user reply
public int updateComplaintWithReply(String complaintNo, String userName, String remarks,
String mobileNumber, MultipartFile uploadPhotoFile) throws IOException {
String uploadPhotoUrl = null;
String status = "PENDING";
if (uploadPhotoFile != null && !uploadPhotoFile.isEmpty()) {
uploadPhotoUrl = saveFile(uploadPhotoFile); // Your existing file-saving logic
}
// ✅ 1. Update main complaint table
String updateSql = "UPDATE complaint_details SET status = ?, user_name = ?, remarks = ?, mobile_number = ?, upload_photo_url = ?, caretaker_updated_date = CURRENT_TIMESTAMP WHERE complaint_no = ?";
int updated = jdbcTemplate.update(updateSql, status, userName, remarks, mobileNumber, uploadPhotoUrl, complaintNo);
// ✅ 2. Insert history
String insertHistorySql = "INSERT INTO complaint_details_history (complaint_no, status, user_name, remarks, mobile_number, upload_photo_url) VALUES (?, ?, ?, ?, ?, ?)";
jdbcTemplate.update(insertHistorySql, complaintNo, status, userName, remarks, mobileNumber, uploadPhotoUrl);
return updated;
}
//ak
public void closeComplaint(String complaintNo) {
String sql = "UPDATE complaint_details SET status = 'CLOSED' WHERE complaint_no = ?";
jdbcTemplate.update(sql, complaintNo);
}
public List<Map<String, Object>> getComplaintHistory(String complaintNo) {
String sql = "SELECT complaint_no, cdate, caretaker_updated_date, user_name, remarks, upload_photo_url, " +
"caretaker_remarks, caretaker_photo_url " +
"FROM complaint_details_history WHERE complaint_no = ? ";
List<Map<String, Object>> historyList = jdbcTemplate.queryForList(sql, complaintNo);
System.out.println("historyList");
System.out.println(historyList);
String baseUrl = "/co-workspaceDocuments";
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy, hh:mm:ss a");
for (Map<String, Object> record : historyList) {
// Photo paths
Object photo = record.get("upload_photo_url");
Object caretakerPhoto = record.get("caretaker_photo_url");
record.put("upload_photo_url",
(photo != null && !photo.toString().isEmpty()) ? baseUrl + photo.toString() : "");
record.put("caretaker_photo_url",
(caretakerPhoto != null && !caretakerPhoto.toString().isEmpty()) ? baseUrl + caretakerPhoto.toString() : "");
// Format date fields
try {
Object cdateObj = record.get("cdate");
if (cdateObj != null) {
/*LocalDateTime cdate = LocalDateTime.parse(cdateObj.toString(), inputFormatter);
record.put("cdate", outputFormatter.format(cdate));*/
Timestamp ts = (Timestamp) cdateObj;
LocalDateTime cdate = ts.toLocalDateTime();
record.put("cdate", outputFormatter.format(cdate));
}
Object caretakerDateObj = record.get("caretaker_updated_date");
if (caretakerDateObj != null) {
// For some JDBC drivers this might already include milliseconds or timezone, handle carefully
String dateStr = caretakerDateObj.toString();
if (dateStr.length() > 19) dateStr = dateStr.substring(0, 19); // truncate if needed
LocalDateTime caretakerDate = LocalDateTime.parse(dateStr, inputFormatter);
record.put("caretaker_updated_date", outputFormatter.format(caretakerDate));
}
} catch (Exception e) {
System.err.println("Date parse error: " + e.getMessage());
}
}
return historyList;
}
//ak
public Map<String, Object> getUserDetailsByComplaintNo(String complaintNo) {
String sql = "SELECT user_name, mobile_number FROM complaint_details WHERE complaint_no = ?";
try {
return jdbcTemplate.queryForMap(sql, complaintNo);
} catch (EmptyResultDataAccessException e) {
// No result found
return Collections.emptyMap();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
public void updateCaretakerDetails(String complaint_no, String remarks, MultipartFile photoUrl) throws IOException {
String uploadPhotoUrlCaretaker = null;
String status = "CLOSED";
// Check if new photo is uploaded
if (photoUrl != null && !photoUrl.isEmpty()) {
uploadPhotoUrlCaretaker = saveFileCaretaker(photoUrl);
}
String updateSql;
if ((uploadPhotoUrlCaretaker != null) || (remarks != null && !remarks.trim().isEmpty())) {
updateSql = "UPDATE complaint_details SET caretaker_remarks = ?, caretaker_photo_url = ?, status = ?, caretaker_updated_date = CURRENT_TIMESTAMP WHERE complaint_no = ?";
jdbcTemplate.update(updateSql, remarks, uploadPhotoUrlCaretaker, status, complaint_no);
} else {
updateSql = "UPDATE complaint_details SET caretaker_remarks = ?, caretaker_photo_url = ? WHERE complaint_no = ?";
jdbcTemplate.update(updateSql, remarks, uploadPhotoUrlCaretaker, complaint_no);
}
// Fetch full complaint details for history insert
String fetchSql = "SELECT complaint_no, status, user_name, remarks, upload_photo_url, mobile_number FROM complaint_details WHERE complaint_no = ?";
Map<String, Object> data = jdbcTemplate.queryForMap(fetchSql, complaint_no);
// Always insert a new row into complaint_details_history (versioned log)
String insertSql = "INSERT INTO complaint_details_history " +
"(complaint_no, status, user_name, remarks, upload_photo_url, mobile_number, caretaker_remarks, caretaker_photo_url, caretaker_updated_date) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)";
jdbcTemplate.update(insertSql,
data.get("complaint_no"),
data.get("status"),
data.get("user_name"),
data.get("remarks"),
data.get("upload_photo_url"),
data.get("mobile_number"),
remarks,
uploadPhotoUrlCaretaker
);
}
public String saveFile(MultipartFile file) throws IOException {
String order_copy_url = "";
// type_folder = "works/"+type_folder;
// Handle file upload if a file is provided
if (file == null || file.isEmpty()) {
return order_copy_url;
}
// Set the file path where you want to save it
String uploadDirectory = environment.getProperty("file.upload.directory");
String serviceFolderName = environment.getProperty("complaintfile_directory");
var year =DateTimeUtil.getCurrentYear();
var month =DateTimeUtil.getCurrentMonth();
//var date =DateTimeUtil.getCurrentDay();
uploadDirectory = uploadDirectory + "/"+ serviceFolderName + "/" + year + "/" + month;
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
String datetimetxt = DateTimeUtil.getCurrentDateTime();
String fileName = datetimetxt +""+generateRandomStringForFile(10) +"_" + file.getOriginalFilename();
// Construct the file path
String filepath = uploadDirectory + "/" + fileName;
String filepath_txt = "/" + serviceFolderName + "/" + year + "/" + month + "/" + fileName;
Path path = Paths.get(filepath);
// Ensure the directory exists
Files.createDirectories(path.getParent());
// Write the file to the specified path
Files.write(path, file.getBytes());
// Set the order_copy_url to the relative file path for storing in DB
order_copy_url = filepath_txt;
return order_copy_url;
}
public String saveFileCaretaker(MultipartFile file) throws IOException {
String order_copy_url = "";
// type_folder = "works/"+type_folder;
// Handle file upload if a file is provided
if (file == null || file.isEmpty()) {
return order_copy_url;
}
// Set the file path where you want to save it
String uploadDirectory = environment.getProperty("file.upload.directory");
String serviceFolderName = environment.getProperty("caretakerfileuploads_directory");
var year =DateTimeUtil.getCurrentYear();
var month =DateTimeUtil.getCurrentMonth();
//var date =DateTimeUtil.getCurrentDay();
uploadDirectory = uploadDirectory + "/"+ serviceFolderName + "/" + year + "/" + month;
Path directoryPath = Paths.get(uploadDirectory);
if (!Files.exists(directoryPath)) {
Files.createDirectories(directoryPath);
}
String datetimetxt = DateTimeUtil.getCurrentDateTime();
String fileName = datetimetxt +""+generateRandomStringForFile(10) +"_" + file.getOriginalFilename();
// Construct the file path
String filepath = uploadDirectory + "/" + fileName;
String filepath_txt = "/" + serviceFolderName + "/" + year + "/" + month + "/" + fileName;
Path path = Paths.get(filepath);
// Ensure the directory exists
Files.createDirectories(path.getParent());
// Write the file to the specified path
Files.write(path, file.getBytes());
// Set the order_copy_url to the relative file path for storing in DB
order_copy_url = filepath_txt;
return order_copy_url;
}
public static String generateRandomStringForFile(int String_Lenth) {
StringBuilder result = new StringBuilder(String_Lenth);
for (int i = 0; i < STRING_LENGTH; i++) {
result.append(CHARACTERS.charAt(RANDOM.nextInt(CHARACTERS.length())));
}
return result.toString();
}
public List<Map<String,Object>> getOpenComplaintList() {
String sql = "SELECT complaint_no,user_name,remarks,mobile_number,upload_photo_url,cdate,status FROM complaint_details where status = 'OPEN' ";
return jdbcTemplate.queryForList(sql);
}
public List<Map<String,Object>> getClosedComplaintList(){
String sql = "SELECT complaint_no,user_name,remarks,mobile_number,upload_photo_url,cdate,status FROM complaint_details where status ='CLOSED' ";
return jdbcTemplate.queryForList(sql);
}
}

43
src/main/java/com/gcc/coworkspace/service/GoogleReviewService.java

@ -0,0 +1,43 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.Map;
@Service
public class GoogleReviewService {
@Value("${google.api.key}")
private String apiKey;
@Value("${google.place.id}")
private String placeId;
@Autowired
JdbcTemplate jdbcTemplate;
private final String GOOGLE_PLACE_URL = "https://maps.googleapis.com/maps/api/place/details/json";
public Map<String, Object> getGoogleReviews() {
RestTemplate restTemplate = new RestTemplate();
String url = UriComponentsBuilder.fromHttpUrl(GOOGLE_PLACE_URL)
.queryParam("place_id", placeId)
.queryParam("fields", "name,rating,reviews")
.queryParam("key", apiKey)
.toUriString();
return restTemplate.getForObject(url, Map.class);
}
public Map<String, Object> getmarquee() {
String sql = "SELECT * FROM marquee where is_active = 1";
return jdbcTemplate.queryForMap(sql);
}
}

161
src/main/java/com/gcc/coworkspace/service/HomeService.java

@ -0,0 +1,161 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class HomeService {
@Autowired
private JdbcTemplate jdbcTemplate;
/*
public List<Map<String, Object>> getActiveCoWorkingSpaces() {
String sql = "SELECT c.cid AS cid, c.name, c.display_name, c.bid,c.orderby,c.cdate,c.isactive,c.isdelete, \n" +
" c.description, ci.imageurl as imageurl\n" +
"FROM category c INNER JOIN category_images ci ON c.cid = ci.cid AND ci.orderby = 1\n" +
"WHERE c.isactive = 1 AND c.isdelete = 0";
return jdbcTemplate.queryForList(sql); // Use queryForList to get List<Map<String, Object>>
}
*/
// public List<Map<String, Object>> getActiveCoWorkingSpaces() {
// String sql = " SELECT c.cid AS cid, c.name, c.display_name, c.bid,c.orderby,c.cdate,c.isactive,c.isdelete, \n" +
// " c.description, c.icon, \r\n" +
// " c.list1, c.list2, c.list3, c.list4, ci.imageurl as imageurl\n" +
// " FROM category c INNER JOIN category_images ci ON c.cid = ci.cid AND ci.orderby = 1\n" +
// " WHERE c.isactive = 1 AND c.isdelete = 0";
// return jdbcTemplate.queryForList(sql); // Use queryForList to get List<Map<String,Object>>
// }
// public List<Map<String, Object>> getActiveCoWorkingSpaces() {
// String sql = " SELECT c.cid AS cid, c.name, c.display_name, c.bid,c.orderby,c.cdate,c.isactive,c.isdelete, \n" +
// " c.description, c.icon, \r\n" +
// " c.list1, c.list2, c.list3, c.list4, ci.imageurl as imageurl\n" +
// " FROM category c INNER JOIN category_images ci ON c.cid = ci.cid AND ci.orderby = 1\n" +
// " WHERE c.isactive = 1 AND c.isdelete = 0";
// return jdbcTemplate.queryForList(sql); // Use queryForList to get List<Map<String,Object>>
// }
public List<Map<String, Object>> getActiveCoWorkingSpaces() {
String sql = """
SELECT
c.cid AS cid,
c.name AS category_name,
c.display_name AS display_name,
c.bid AS bid,
c.description AS description,
c.icon AS icon,
c.list1 AS list1,
c.list2 AS list2,
c.list3 AS list3,
c.list4 AS list4,
ci.imageurl AS imageurl,
sc.scid AS scid,
sc.name AS subcategory_name,
sc.display_name AS subcategory_display_name,
sc.limits AS limits,
sc.capacity AS capacity
FROM category c
INNER JOIN category_images ci
ON c.cid = ci.cid AND ci.orderby = 1
LEFT JOIN subcategory sc
ON c.cid = sc.cid AND sc.isactive = 1 AND sc.isdelete = 0
WHERE c.isactive = 1 AND c.isdelete = 0
ORDER BY c.bid, c.orderby, sc.orderby
""";
return jdbcTemplate.queryForList(sql);
}
// public List<Map<String, Object>> getActiveCoWorkingSpacesByBuilding(int bid) {
// String sql = """
// SELECT
// c.cid AS cid,
// c.name,
// c.display_name,
// c.bid,
// c.description,
// c.icon,
// c.list1,
// c.list2,
// c.list3,
// c.list4,
// ci.imageurl AS imageurl
// FROM category c
// INNER JOIN category_images ci
// ON c.cid = ci.cid
// AND ci.orderby = 1
// WHERE c.isactive = 1
// AND c.isdelete = 0
// AND c.bid = ?
// ORDER BY c.orderby ASC
// """;
// return jdbcTemplate.queryForList(sql, bid);
// }
public List<Map<String, Object>> getActiveCoWorkingSpacesByBuilding(int bid) {
String sql = """
SELECT
c.cid AS cid,
c.name AS category_name,
c.display_name AS display_name,
c.bid AS bid,
c.description AS description,
c.icon AS icon,
c.list1 AS list1,
c.list2 AS list2,
c.list3 AS list3,
c.list4 AS list4,
ci.imageurl AS imageurl,
sc.scid AS scid,
sc.name AS subcategory_name,
sc.display_name AS subcategory_display_name,
sc.limits AS limits,
sc.capacity AS capacity
FROM category c
INNER JOIN category_images ci
ON c.cid = ci.cid AND ci.orderby = 1
LEFT JOIN subcategory sc
ON c.cid = sc.cid AND sc.isactive = 1 AND sc.isdelete = 0
WHERE c.isactive = 1
AND c.isdelete = 0
AND c.bid = ?
ORDER BY c.orderby ASC, sc.orderby ASC
""";
return jdbcTemplate.queryForList(sql, bid);
}
public List<Map<String, Object>> getPricingDetailsByCid(int cid) {
String sql = """
SELECT sc.scid, sc.name, sc.display_name, sc.cid, sc.orderby, sc.cdate, sc.isactive,
sc.isdelete, sc.limits, sc.capacity, c.description
FROM subcategory sc
JOIN category c ON sc.cid = c.cid
WHERE sc.cid = ? AND sc.isactive = 1 AND sc.isdelete = 0
""";
return jdbcTemplate.queryForList(sql, cid);
}
public List<Map<String, Object>> getImgByCid(int cid) {
String sql = """
SELECT * FROM category_images where cid = ?
AND isactive = 1 AND isdelete = 0
""";
return jdbcTemplate.queryForList(sql, cid);
}
}

96
src/main/java/com/gcc/coworkspace/service/NormalSMS.java

@ -0,0 +1,96 @@
package com.gcc.coworkspace.service;
import com.gcc.coworkspace.configuration.AppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class NormalSMS {
@Autowired
private AppConfig appConfig;
@Autowired
private SMSService whatsappMsgService;
private final String key = "pfTEYN6H";
public String sendOTPNsms(String MobileNo, String msg) {
String generatedToken = "Welcome to Muthalvar Padaippagam, The OTP for your booking is " + msg + " - GCC";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027593091895";
return whatsappMsgService.sendSMS(urlString);
}
public String sendELearnNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken = "Dear Patron, \n" +
"Welcome to Muthalvar Padaippagam. \n" +
"You have booked our Learning Centre for " + noOfPerson + " number of persons on " + bdate + " at time slot " + slot + ". Payment for the booking is Rs." + amount + " received. Please show your QR Code at Reception Desk for accessing Muthalvar Padaippagam. Have a Nice Day - GCC";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027552104564";
return whatsappMsgService.sendSMS(urlString);
}
public String sendTLearnNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken = "அன்பான வாடிக்கையாளரே,\n" +
"முதல்வர் படைப்பகம் தங்களை அன்புடன் வரவேற்கின்றது. தாங்கள் எங்களின் கற்றல் மையத்தை "+ noOfPerson +" எண்ணிக்கை நபர்களுக்கு "+bdate+" அன்று நேர இடைவெளி "+bdate+" ல் பயன்படுத்திக்கொள்ள முன்பதிவு செய்துள்ளீர்கள். இதற்கான கட்டணம் ரூ. "+amount+" பெறப்பட்டுள்ளது. முதல்வர் படைப்பகம் பயன்படுத்த உங்கள் QR குறியீட்டை வரவேற்பறையில் காட்டுங்கள் இந்நாள் இனிய நாளாய் அமையட்டும் - பெ.செ.மா";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027534475535";
return whatsappMsgService.sendSMS(urlString);
}
public String sendEDeskspaceNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken ="Welcome to Muthalvar Padaippagam. \n" +
"You have booked our Desk space for "+noOfPerson+" number of persons on "+bdate+" at time slot "+slot+". Payment for the booking is Rs. "+amount+" received. Please show your QR Code at Reception Desk for accessing Muthalvar Padaippagam. Have a Nice Day - GCC";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027483767802";
return whatsappMsgService.sendSMS(urlString);
}
public String sendTDeskspaceNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken ="அன்பான வாடிக்கையாளரே, முதல்வர் படைப்பகம் தங்களை அன்புடன் வரவேற்கின்றது. தாங்கள் எங்களின் மேசை இடத்தினை "+noOfPerson+" எண்ணிக்கை நபர்களுக்கு "+bdate+" அன்று நேர இடைவெளி "+slot+" ல் பயன்படுத்திக்கொள்ள முன்பதிவு செய்துள்ளீர்கள். இதற்கான கட்டணம் ரூ "+amount+" பெறப்பட்டுள்ளது. முதல்வர் படைப்பகம் பயன்படுத்த உங்கள் QR குறியீட்டை வரவேற்பறையில் காட்டுங்கள் இந்நாள் இனிய நாளாய் அமையட்டும் - பெ.செ.மா";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027432906761";
return whatsappMsgService.sendSMS(urlString);
}
public String sendEMonthDeskspaceNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken ="Dear Patron,\n" +
"Welcome to Muthalvar Padaippagam. You have booked our Desk space for "+noOfPerson+" number of persons for 30 days from "+bdate+" at time slot "+slot+". Payment for the booking is Rs. "+amount+" received. Please show your QR Code at Reception Desk for accessing Muthalvar Padaippagam. Have a Nice Day - GCC" ;
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027375118705";
return whatsappMsgService.sendSMS(urlString);
}
public String sendTMonthDeskspaceNsms(String MobileNo, String noOfPerson, String bdate, String slot, String amount) {
String generatedToken = "அன்பான வாடிக்கையாளரே, \n" +
"முதல்வர் படைப்பகம் தங்களை அன்புடன் வரவேற்கின்றது. \n" +
"தாங்கள் எங்களின் மேசை இடத்தை "+noOfPerson+" எண்ணிக்கை நபர்களுக்கு 30 நாட்கள் "+bdate+" முதல் "+slot+" வரை நேர இடைவெளி {#var#} ல் பயன்படுத்திக்கொள்ள முன்பதிவு செய்துள்ளீர்கள். இதற்கான கட்டணம் ரூ "+amount+" பெறப்பட்டுள்ளது. முதல்வர் படைப்பகம் பயன்படுத்த உங்கள் QR குறியீட்டை வரவேற்பறையில் காட்டுங்கள் இந்நாள் இனிய நாளாய் அமையட்டும் - பெ.செ.மா";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027375118705";
return whatsappMsgService.sendSMS(urlString);
}
public String sendEConfeNsms(String MobileNo, String bdate, String slot, String amount) {
String generatedToken ="Dear Patron, \n" +
"Welcome to Muthalvar Padaippagam.\n" +
"You have booked our Conference Hall on "+bdate+" at time slot "+slot+". Payment for the booking is Rs. "+amount+" received. Please show your QR Code at Reception Desk for accessing Muthalvar Padaippagam. Have a Nice Day - GCC";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027286475722";
return whatsappMsgService.sendSMS(urlString);
}
public String sendTConfeNsms(String MobileNo, String bdate, String slot, String amount) {
String generatedToken ="அன்பான வாடிக்கையாளரே, \n" +
"முதல்வர் படைப்பகம் தங்களை அன்புடன் வரவேற்கின்றது.\n" +
"தாங்கள் எங்களின் கலந்தாய்வு அரங்கத்தினை "+bdate+" அன்று நேர இடைவெளி "+slot+" ல் பயன்படுத்திக்கொள்ள முன்பதிவு செய்துள்ளீர்கள். \n" +
"இதற்கான கட்டணம் ரூ. "+amount+" பெறப்பட்டுள்ளது. முதல்வர் படைப்பகம் பயன்படுத்த உங்கள் QR குறியீட்டை வரவேற்பறையில் காட்டுங்கள் இந்நாள் இனிய நாளாய் அமையட்டும்- பெ.செ.மா";
String urlString = appConfig.getGetOtpUrl() + "from=GCCCRP&key=" + key + "&sender=GCCCRP&to=" + MobileNo + "&body=" + generatedToken + "&entityid=1401572690000011081&templateid=1407173027263977351";
return whatsappMsgService.sendSMS(urlString);
}
}

173
src/main/java/com/gcc/coworkspace/service/PaymentService.java

@ -0,0 +1,173 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.Map;
@Service
public class PaymentService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Transactional
public int savePayment( String totalAmount,
String payment_id,
String payment_orderid,
String payment_status,
String bookingId,
String mobile_no
){
int lastInsertId = 0;
String sqlQuery = "INSERT INTO `payment`(`amount`, `mobno`, `order_id`, `payment_id`, `payment_status`, `paymentdate`, `booking_id`) "
+ "VALUES (?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, totalAmount);
ps.setString(2, mobile_no);
ps.setString(3, payment_orderid);
ps.setString(4, payment_id);
ps.setString(5, payment_status);
ps.setString(6, LocalDateTime.now().toString());
ps.setString(7, bookingId);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
return lastInsertId;
} else {
System.out.println("Error on temp save!");
return 0;
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
} else {
System.out.println("Message: " + rootCause.getMessage());
}
return 0;
}
}
@Transactional
public int saveorderLog(
String order_id,
String order_info,
String temp_booking_id
) {
int lastInsertId = 0;
String sqlQuery = "INSERT INTO `order_log`(`order_id`, `order_info`, `temp_booking_id`) "
+ "VALUES (?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, order_id);
ps.setString(2, order_info);
ps.setString(3, temp_booking_id);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
lastInsertId = (generatedId != null) ? generatedId.intValue() : 0;
return lastInsertId;
} else {
System.out.println("Error on temp save!");
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
} else {
System.out.println("Message: " + rootCause.getMessage());
}
}
return 0;
}
@Transactional
public int updateBookingIdInPayment(String mobile_no,String bookingId,String payment_id) {
String sqlQuery = "UPDATE `payment` SET `mobno` = ?, `booking_id` = ? WHERE `id` = ?";
try {
int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery);
ps.setString(1, mobile_no); // Set the new mobile number
ps.setString(2, bookingId); // Set the new booking ID
ps.setString(3, payment_id); // Use the payment ID to locate the record to update
return ps;
}
});
if (affectedRows > 0) {
System.out.println("Record updated successfully!");
return 1; // Or return some relevant status
} else {
System.out.println("Error on updating record!");
return 0;
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
} else {
System.out.println("Message: " + rootCause.getMessage());
}
return 0;
}
}
public Map<String, Object > getPaymentById(int pid){
String sqlQuery="select * from payment where id = ?";
return jdbcTemplate.queryForMap(sqlQuery,pid);
}
}

288
src/main/java/com/gcc/coworkspace/service/RefundService.java

@ -0,0 +1,288 @@
package com.gcc.coworkspace.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.gcc.coworkspace.constants.AppConstants;
import com.razorpay.RazorpayClient;
import com.razorpay.RazorpayException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
@Service
public class RefundService {
@Autowired
PaymentService paymentService;
@Autowired
BookingService bookingService;
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> refund(int refund_id) {
String refundsql = "select * from refund_info where refund_id=?";
return jdbcTemplate.queryForList(refundsql.toString(), refund_id);
}
public List<Map<String, Object>> getbyrefundstatus(String refundstatus) {
String refundsql1 = "select * from refund_info where refund_status=? and cdate < NOW() - INTERVAL 1 DAY";
return jdbcTemplate.queryForList(refundsql1.toString(), refundstatus); ///nededd to updated
}
public void updateRefundRrnStatus(int id, String refund_id, String rrn, String rrn_status) {
String sql = "UPDATE refund_info SET refund_status = ?, rrn = ? WHERE refund_id = ? AND id = ?";
jdbcTemplate.update(sql, rrn_status, rrn, refund_id, id);
}
public void updateOrderStatus(String orderId, String orderStatus) {
String sql = "UPDATE order_log SET order_status = ? WHERE order_id = ? and id=? ";
int rowsAffected = jdbcTemplate.update(sql, orderStatus, orderId);
System.out.println("Updated Order ID: " + orderId + " with status: " + orderStatus);
System.out.println("Rows affected: " + rowsAffected); // Add this line
}
public List<Map<String , Object>> checkPaymentStatusByMobile(long mobileno) {
String sqlQuery = "SELECT " +
"DATE_FORMAT(tbd.from_date, '%d-%m-%Y') AS from_date, " +
"DATE_FORMAT(tbd.to_date, '%d-%m-%Y') AS to_date, " +
"DATE_FORMAT(tbd.cdate, '%d-%m-%Y') AS cdate, " +
"tbd.tempbookid, " +
"tbd.amount, " +
"tbd.no_of_person, " +
"tbd.slotids, " +
"bu.name AS buildingname, " +
"st.name AS duration, " +
"c.name AS type, " +
"c.display_name AS type_name, " +
"SUBSTRING_INDEX(st.name, ' to ', 1) AS checkin, " +
"SUBSTRING_INDEX(st.name, ' to ', -1) AS checkout, " +
"TIMESTAMPDIFF( " +
" HOUR, " +
" STR_TO_DATE(SUBSTRING_INDEX(st.name, ' to ', 1), '%h:%i %p'), " +
" STR_TO_DATE(SUBSTRING_INDEX(st.name, ' to ', -1), '%h:%i %p') " +
") AS duration_hours, " +
"CASE " +
" WHEN tbd.to_date < CURDATE() THEN 'Completed' " +
" WHEN (tbd.from_date > CURDATE() OR tbd.to_date > CURDATE()) THEN 'Upcoming' " +
" ELSE 'Ongoing' " +
"END AS status " +
"FROM temp_booking tbd " +
"JOIN slots st ON tbd.slotids = st.slotid " +
"JOIN buildings bu ON tbd.bid = bu.bid " +
"JOIN category c ON tbd.cid = c.cid " +
"join order_log ol on ol.temp_booking_id=tbd.tempbookid and (ol.order_status is null or ol.order_status = '')"+
"WHERE tbd.mobile = ?";
return jdbcTemplate.queryForList(sqlQuery, mobileno);
}
public ResponseEntity<?> refundProcess(String msg, int bookingId, int pid) throws RazorpayException {
Map<String,Object> pay = paymentService.getPaymentById(pid);
String paymentId = pay.get("payment_id").toString();
double amount = Double.parseDouble(pay.get("amount")+"");
RazorpayClient razorpay = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount",amount*100);
refundRequest.put("speed","normal");
JSONObject notes = new JSONObject();
notes.put("notes_key_1",msg);
refundRequest.put("notes",notes);
com.razorpay.Refund payment = razorpay.payments.refund(paymentId,refundRequest);
JSONObject pj = payment.toJson();
System.out.println( payment.toJson());
if(pj.get("id")!=null){
double amt = 0;
if(pj.get("amount")!=null){
amt = (Double.parseDouble(pj.get("amount")+"")/100);
}
saveRefund(bookingId,pid,amt,pj.get("id").toString(),"REFUND_PROCESSED", payment.toJson().toString());
bookingService.updateBookingStatus(bookingId,"refunded");
}
else{
saveRefund(bookingId,pid,0,"","REJECTED", payment.toJson().toString());
}
return ResponseEntity.ok(payment.toJson().toString());
}
public int saveRefund(int bookingId,int pid,double refundAmount,String refundId,String refundStatus,String desc){
List<Map<String, Object>> result=null;
Map<String, Object> response = new HashMap<>();
int calendarId = 0;
String sqlQuery = "INSERT INTO refund_info (bookingId, refund_amt, balance_amt, pid, refund_id, refund_status, r_desc) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
System.out.println("Inserting Refund Info:");
System.out.println(" bookingId = " + bookingId);
System.out.println(" refundAmount = " + refundAmount);
System.out.println(" pid = " + pid);
System.out.println(" refundId = " + refundId);
System.out.println(" refundStatus = " + refundStatus);
System.out.println(" desc = " + desc);
try {
int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setInt(1, bookingId); // Fix: Use setInt for bookingId
ps.setDouble(2, refundAmount); // Fix: Use setDouble for refund_amt
ps.setDouble(3, 0.0); // Fix: Add balance_amt (defaulting to 0)
ps.setInt(4, pid); // Fix: Use setInt for pid
ps.setString(5, refundId);
ps.setString(6, refundStatus);
ps.setString(7, desc);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
calendarId = (generatedId != null) ? generatedId.intValue() : 0;
return calendarId;
} else {
return 10;
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
return 0;
} else {
System.out.println("Message: " + rootCause.getMessage());
return 0;
}
}
}
public ResponseEntity<?> refundProcessOrder(String msg, int bookingId, int pid) {
try {
Map<String, Object> pay = paymentService.getPaymentById(pid);
if (pay == null || pay.isEmpty()) {
return ResponseEntity.badRequest().body("No payment found for given id");
}
String paymentId = pay.get("payment_id").toString();
double amount = Double.parseDouble(pay.get("amount") + "");
RazorpayClient razorpay = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", amount * 100);
refundRequest.put("speed", "normal");
JSONObject notes = new JSONObject();
notes.put("notes_key_1", msg);
refundRequest.put("notes", notes);
com.razorpay.Refund payment = razorpay.payments.refund(paymentId, refundRequest);
JSONObject pj = payment.toJson();
//new update
System.err.println("Refund Process Order:line 216");
System.err.println(pj);
System.err.println("refundProcessOrder ->"+pj.get("id")+"bookingId:-"+bookingId +"pid:-"+pid);
if (pj.get("id") != null) {
double amt = (pj.get("amount") != null) ? (Double.parseDouble(pj.get("amount") + "") / 100) : 0;
saveRefundOrder(bookingId, pid, amt, pj.get("id").toString(), "REFUND_PROCESSED", pj.toString());
if(bookingId != 0) {
bookingService.updateBookingStatus(bookingId, "refunded");
}
} else {
saveRefundOrder(bookingId, pid, 0, "", "REJECTED", pj.toString());
}
return ResponseEntity.ok(pj.toString());
} catch (RazorpayException e) {
if (e.getMessage().contains("fully refunded")) {
System.err.println("Already refunded: " + e.getMessage());
saveRefundOrder(bookingId, pid, 0, "", "ALREADY_REFUNDED", e.getMessage());
if(bookingId != 0) {
bookingService.updateBookingStatus(bookingId, "refunded");
}
return ResponseEntity.ok("Already refunded");
}
return ResponseEntity.status(500).body("Refund failed: " + e.getMessage());
}
}
public int saveRefundOrder(int bookingId, int pid, double refundAmount, String refundId, String refundStatus, String desc) {
try {
updateRefundStatusInOrderLog(pid, true);
// Insert new refund record
String sqlQuery = "INSERT INTO refund_info (bookingId, refund_amt, balance_amt, pid, refund_id, refund_status, r_desc) VALUES (?, ?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
int affectedRows = jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setInt(1, bookingId);
ps.setDouble(2, refundAmount);
ps.setDouble(3, 0.0);
ps.setInt(4, pid);
ps.setString(5, refundId);
ps.setString(6, refundStatus);
ps.setString(7, desc != null ? desc : "");
return ps;
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
return (generatedId != null) ? generatedId.intValue() : -1;
} else {
return -1; // Indicate failure
}
} catch (EmptyResultDataAccessException e) {
System.err.println("No existing refund record found, proceeding with insert.");
} catch (DataAccessException e) {
System.err.println("saveRefundOrder Database error: " + e.getMessage());
}
return -1;
}
public void updateRefundStatusInOrderLog(int pid, boolean isRefundedProcessed) {
String sql = "UPDATE order_log od inner join payment pay on od.order_id = pay.order_id SET od.sch_refund_status = ? WHERE pay.id = ?";
jdbcTemplate.update(sql, isRefundedProcessed, pid);
}
}

265
src/main/java/com/gcc/coworkspace/service/RefundService_old.java

@ -0,0 +1,265 @@
package com.gcc.coworkspace.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.gcc.coworkspace.constants.AppConstants;
import com.razorpay.RazorpayClient;
import com.razorpay.RazorpayException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
@Service
public class RefundService_old {
@Autowired
PaymentService paymentService;
@Autowired
BookingService bookingService;
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Map<String, Object>> refund(int refund_id) {
String refundsql = "select * from refund_info where where refund_id=?";
return jdbcTemplate.queryForList(refundsql.toString(), refund_id);
}
public List<Map<String, Object>> getbyrefundstatus(String refundstatus) {
String refundsql1 = "select * from refund_info where refund_status=? and cdate < NOW() - INTERVAL 1 DAY";
return jdbcTemplate.queryForList(refundsql1.toString(), refundstatus); ///nededd to updated
}
public void updateRefundRrnStatus(int id, String refund_id, String rrn, String rrn_status) {
String sql = "UPDATE refund_info SET refund_status = ?, rrn = ? WHERE refund_id = ? AND id = ?";
jdbcTemplate.update(sql, rrn_status, rrn, refund_id, id);
}
public void updateOrderStatus(String orderId, String orderStatus) {
String sql = "UPDATE order_log SET order_status = ? WHERE order_id = ? and id=? ";
int rowsAffected = jdbcTemplate.update(sql, orderStatus, orderId);
System.out.println("Updated Order ID: " + orderId + " with status: " + orderStatus);
System.out.println("Rows affected: " + rowsAffected); // Add this line
}
public List<Map<String, Object>> checkPaymentStatusByMobile(long mobileno) {
String sqlQuery = "SELECT " +
"DATE_FORMAT(tbd.from_date, '%d-%m-%Y') AS from_date, " +
"DATE_FORMAT(tbd.to_date, '%d-%m-%Y') AS to_date, " +
"DATE_FORMAT(tbd.cdate, '%d-%m-%Y') AS cdate, " +
"tbd.tempbookid, " +
"tbd.amount, " +
"tbd.no_of_person, " +
"tbd.slotids, " +
"bu.name AS buildingname, " +
"st.name AS duration, " +
"c.name AS type, " +
"c.display_name AS type_name, " +
"SUBSTRING_INDEX(st.name, ' to ', 1) AS checkin, " +
"SUBSTRING_INDEX(st.name, ' to ', -1) AS checkout, " +
"TIMESTAMPDIFF( " +
" HOUR, " +
" STR_TO_DATE(SUBSTRING_INDEX(st.name, ' to ', 1), '%h:%i %p'), " +
" STR_TO_DATE(SUBSTRING_INDEX(st.name, ' to ', -1), '%h:%i %p') " +
") AS duration_hours, " +
"CASE " +
" WHEN tbd.to_date < CURDATE() THEN 'Completed' " +
" WHEN (tbd.from_date > CURDATE() OR tbd.to_date > CURDATE()) THEN 'Upcoming' " +
" ELSE 'Ongoing' " +
"END AS status " +
"FROM temp_booking tbd " +
"JOIN slots st ON tbd.slotids = st.slotid " +
"JOIN buildings bu ON tbd.bid = bu.bid " +
"JOIN category c ON tbd.cid = c.cid " +
"join order_log ol on ol.temp_booking_id=tbd.tempbookid and (ol.order_status is null or ol.order_status = '')"+
"WHERE tbd.mobile = ?";
return jdbcTemplate.queryForList(sqlQuery, mobileno);
}
public ResponseEntity<?> refundProcess(String msg, int bookingId, int pid) throws RazorpayException {
Map<String,Object> pay = paymentService.getPaymentById(pid);
String paymentId = pay.get("payment_id").toString();
double amount = Double.parseDouble(pay.get("amount")+"");
RazorpayClient razorpay = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount",amount*100);
refundRequest.put("speed","normal");
JSONObject notes = new JSONObject();
notes.put("notes_key_1",msg);
refundRequest.put("notes",notes);
com.razorpay.Refund payment = razorpay.payments.refund(paymentId,refundRequest);
JSONObject pj = payment.toJson();
System.out.println( payment.toJson());
if(pj.get("id")!=null){
double amt = 0;
if(pj.get("amount")!=null){
amt = (Double.parseDouble(pj.get("amount")+"")/100);
}
saveRefund(bookingId,pid,amt,pj.get("id").toString(),"REFUND_PROCESSED", payment.toJson().toString());
bookingService.updateBookingStatus(bookingId,"refunded");
}
else{
saveRefund(bookingId,pid,0,"","REJECTED", payment.toJson().toString());
}
return ResponseEntity.ok(payment.toJson().toString());
}
public int saveRefund(int bookingId,int pid,double refundAmount,String refundId,String refundStatus,String desc){
List<Map<String, Object>> result=null;
Map<String, Object> response = new HashMap<>();
int calendarId = 0;
String sqlQuery = "INSERT INTO refund_info (bookingId, refund_amt, pid, refund_id, refund_status, r_desc) "
+ "VALUES (?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
try {
int affectedRows = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setString(1, bookingId+"");
ps.setString(2, refundAmount+"");
ps.setString(3, pid+"");
ps.setString(4, refundId);
ps.setString(5, refundStatus);
ps.setString(6, desc);
return ps;
}
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
calendarId = (generatedId != null) ? generatedId.intValue() : 0;
return calendarId;
} else {
return 10;
}
} catch (DataAccessException e) {
System.out.println("Data Access Exception:");
Throwable rootCause = e.getMostSpecificCause();
if (rootCause instanceof SQLException) {
SQLException sqlException = (SQLException) rootCause;
System.out.println("SQL State: " + sqlException.getSQLState());
System.out.println("Error Code: " + sqlException.getErrorCode());
System.out.println("Message: " + sqlException.getMessage());
return 0;
} else {
System.out.println("Message: " + rootCause.getMessage());
return 0;
}
}
}
public ResponseEntity<?> refundProcessOrder(String msg, int bookingId, int pid) {
try {
Map<String, Object> pay = paymentService.getPaymentById(pid);
if (pay == null || pay.isEmpty()) {
return ResponseEntity.badRequest().body("No payment found for given id");
}
String paymentId = pay.get("payment_id").toString();
double amount = Double.parseDouble(pay.get("amount") + "");
RazorpayClient razorpay = new RazorpayClient(AppConstants.key_id, AppConstants.key_secret);
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", amount * 100);
refundRequest.put("speed", "normal");
JSONObject notes = new JSONObject();
notes.put("notes_key_1", msg);
refundRequest.put("notes", notes);
com.razorpay.Refund payment = razorpay.payments.refund(paymentId, refundRequest);
JSONObject pj = payment.toJson();
if (pj.get("id") != null) {
double amt = (pj.get("amount") != null) ? (Double.parseDouble(pj.get("amount") + "") / 100) : 0;
saveRefundOrder(bookingId, pid, amt, pj.get("id").toString(), "REFUND_PROCESSED", pj.toString());
if(bookingId != 0) {
bookingService.updateBookingStatus(bookingId, "refunded");
}
} else {
saveRefundOrder(bookingId, pid, 0, "", "REJECTED", pj.toString());
}
return ResponseEntity.ok(pj.toString());
} catch (RazorpayException e) {
// ✅ This handles the already refunded case and still logs it
if (e.getMessage().contains("fully refunded")) {
System.err.println("Already refunded: " + e.getMessage());
saveRefundOrder(bookingId, pid, 0, "", "ALREADY_REFUNDED", e.getMessage());
if(bookingId != 0) {
bookingService.updateBookingStatus(bookingId, "refunded");
}
return ResponseEntity.ok("Already refunded");
}
return ResponseEntity.status(500).body("Refund failed: " + e.getMessage());
}
}
public int saveRefundOrder(int bookingId, int pid, double refundAmount, String refundId, String refundStatus, String desc) {
try {
// Insert new refund record
String sqlQuery = "INSERT INTO refund_info (bookingId, refund_amt, pid, refund_id, refund_status, r_desc) VALUES (?, ?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
int affectedRows = jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(sqlQuery, new String[]{"id"});
ps.setInt(1, bookingId);
ps.setDouble(2, refundAmount);
ps.setInt(3, pid);
ps.setString(4, refundId);
ps.setString(5, refundStatus);
ps.setString(6, desc);
return ps;
}, keyHolder);
if (affectedRows > 0) {
Number generatedId = keyHolder.getKey();
return (generatedId != null) ? generatedId.intValue() : -1; // Return new ID if available, otherwise return -1
} else {
return -1; // Indicate failure
}
} catch (EmptyResultDataAccessException e) {
System.err.println("No existing refund record found, proceeding with insert.");
} catch (DataAccessException e) {
System.err.println("Database error: " + e.getMessage());
}
return -1; // Return -1 to indicate failure
}
}

512
src/main/java/com/gcc/coworkspace/service/ReportService.java

@ -0,0 +1,512 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class ReportService {
@Autowired
private JdbcTemplate jdbcTemplate;
// public List<Map<String, Object>> getslotdateReports(String fromDate, String toDate, String type, String status, String filterBy, String type1) {
// StringBuilder sql = new StringBuilder(
// "SELECT " +
// "b.`booking_id`, b.`user_name`, b.`mobile`, b.`slotids`, b.`from_date`, b.`to_date`, " +
// "b.`no_of_person`, b.`amount`, b.`payment_status`, b.`cdate` AS bdate, sc.display_name, cl.bdate, " +
// "SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, " +
// "SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout, " +
// "CASE " +
// " WHEN CURDATE() BETWEEN b.from_date AND b.to_date THEN 'Ongoing' " +
// " WHEN b.to_date < CURDATE() THEN 'Completed' " +
// " WHEN b.from_date > CURDATE() THEN 'Upcoming' " +
// " ELSE 'Ongoing' " +
// "END AS status, " +
// "cat.name AS type, cat.display_name AS type_name, sc.display_name AS subcategory_name " +
// "FROM `booking` b " +
// "JOIN `slots` sl ON b.`slotids` = sl.`slotid` " +
// "JOIN `category` cat ON b.`cid` = cat.`cid` " +
// "JOIN `subcategory` sc ON b.`sid` = sc.`scid` " +
// "JOIN `calendar` cl ON b.`booking_id` = cl.`bookingid` "
// );
// List<Object> params = new ArrayList<>();
// // Apply filters based on `filterBy`
// if ("slot_date".equals(filterBy)) {
// sql.append("WHERE cl.bdate >= STR_TO_DATE(?, '%Y-%m-%d') AND cl.bdate <= STR_TO_DATE(?, '%Y-%m-%d') ");
// params.add(fromDate);
// params.add(toDate);
// } else if ("current_date".equals(filterBy)) {
// sql.append("WHERE DATE(b.`cdate`) >= ? AND DATE(b.`cdate`) <= ? ");
// params.add(fromDate);
// params.add(toDate);
// } else {
// sql.append("WHERE 1=1 "); // For cases where no filter is applied
// }
// // Additional filters
// if (type != null && !type.isEmpty()) {
// sql.append("AND cat.display_name = ? ");
// params.add(type);
// }
// if (type1 != null && !type1.isEmpty()) {
// sql.append("AND sc.display_name = ? ");
// params.add(type1);
// }
// if (status != null && !status.isEmpty()) {
// if ("Ongoing".equals(status)) {
// sql.append("AND CURDATE() BETWEEN b.`from_date` AND b.`to_date` ");
// } else if ("Completed".equals(status)) {
// sql.append("AND b.`to_date` < CURDATE() ");
// } else if ("Upcoming".equals(status)) {
// sql.append("AND b.`from_date` > CURDATE() ");
// }
// }
// sql.append("ORDER BY b.`cdate` DESC");
// // Debugging for SQL and Parameters
// System.out.println("Generated SQL: " + sql);
// System.out.println("Parameters: " + params);
// // Execute the query
// return jdbcTemplate.queryForList(sql.toString(), params.toArray());
// }
// public List<Map<String, Object>> getbookingdateReports(String fromDate, String toDate, String type, String status, String filterBy, String type1) {
// StringBuilder sql = new StringBuilder(
// "SELECT " +
// "b.from_date, " +
// "b.to_date, " +
// "b.booking_id, " +
// "b.user_name, " +
// "b.mobile, " +
// "b.amount, " +
// "b.payment_status, " +
// "b.no_of_person, " +
// "b.slotids, " +
// "bu.name AS buildingname, " +
// "st.name AS duration, " +
// "ca.name AS type, " +
// "ca.display_name AS type_name, " +
// "b.from_date AS bdate, " +
// "b.cdate, " +
// "sc.display_name, " +
// "SUBSTRING_INDEX(st.name, ' to ', 1) AS checkin, " +
// "SUBSTRING_INDEX(st.name, ' to ', -1) AS checkout, " +
// "CASE " +
// " WHEN CURDATE() BETWEEN DATE(b.from_date) AND DATE(b.to_date) THEN 'Ongoing' " +
// " WHEN DATE(b.to_date) < CURDATE() THEN 'Completed' " +
// " WHEN DATE(b.from_date) > CURDATE() THEN 'Upcoming' " +
// "END AS status " +
// "FROM calendar c " +
// "INNER JOIN booking b ON c.bookingid = b.booking_id " +
// "JOIN buildings bu ON b.bid = bu.bid " +
// "JOIN slots st ON b.slotids = st.slotid " +
// "JOIN `subcategory` sc ON b.sid = sc.scid " +
// "JOIN category ca ON b.cid = ca.cid " +
// "WHERE DATE(c.cdate) BETWEEN ? AND ? "
// );
// List<Object> params = new ArrayList<>();
// params.add(fromDate);
// params.add(toDate);
// // Apply filter for subcategory
// if (type1 != null && !type1.isEmpty()) {
// sql.append("AND sc.display_name = ? ");
// params.add(type1);
// }
// // Apply filter for category type
// if (type != null && !type.isEmpty()) {
// sql.append("AND ca.display_name = ? ");
// params.add(type);
// }
// // Apply filter for booking status
// if (status != null && !status.isEmpty()) {
// sql.append(
// "AND ( " +
// " (CURDATE() BETWEEN DATE(b.from_date) AND DATE(b.to_date) AND ? = 'Ongoing') OR " +
// " (DATE(b.to_date) < CURDATE() AND ? = 'Completed') OR " +
// " (DATE(b.from_date) > CURDATE() AND ? = 'Upcoming') " +
// ") "
// );
// params.add(status);
// params.add(status);
// params.add(status);
// }
// // Group and order the results
// sql.append("GROUP BY b.from_date, b.to_date, b.booking_id, b.cdate ");
// sql.append("ORDER BY b.cdate DESC ");
// System.out.println("Generated SQL: " + sql);
// // Execute the query and return results
// return jdbcTemplate.queryForList(sql.toString(), params.toArray());
// }
// /*
// public List<Map<String, Object>> abstractReportPage() {
// String sql2 = "SELECT category.display_name, subcategory.display_name, slots.name, " +
// "SUM(booking.amount) AS total_amount, SUM(booking.no_of_person) AS total_persons " +
// "FROM booking " +
// "JOIN category ON category.cid = subcategory.cid " +
// "JOIN subcategory ON booking.cid = category.cid " +
// "JOIN slots ON booking.slotids = slots.slotid " +
// "WHERE DATE(booking.cdate) = CURDATE() " +
// "GROUP BY category.display_name, subcategory.display_name, slots.name";
// return jdbcTemplate.queryForList(sql2);
// }
// */
// public List<Map<String, Object>> abstractReportPage(String fromDate, String toDate, String type, String type1) {
// // Base SQL query
// StringBuilder sql2 = new StringBuilder(
// "SELECT DATE(booking.cdate) AS created_date, " +
// "category.display_name AS category, " +
// "subcategory.display_name AS type, " +
// "slots.name AS slots, " +
// "SUM(booking.amount) AS amount, " +
// "SUM(booking.no_of_person) AS NO_of_person " +
// "FROM booking " +
// "JOIN subcategory ON booking.sid = subcategory.scid " +
// "JOIN category ON category.cid = subcategory.cid " +
// "JOIN slots ON booking.slotids = slots.slotid " +
// "WHERE booking.booking_status = 'success' "
// );
// // Parameters for the query
// List<Object> params = new ArrayList<>();
// // Handle default date to current date if no range is provided
// if ((fromDate == null || fromDate.isEmpty()) && (toDate == null || toDate.isEmpty())) {
// sql2.append("AND DATE(booking.cdate) = CURDATE() ");
// } else {
// // Use provided date range
// if (fromDate != null && !fromDate.isEmpty() && toDate != null && !toDate.isEmpty()) {
// sql2.append("AND DATE(booking.cdate) BETWEEN ? AND ? ");
// params.add(fromDate);
// params.add(toDate);
// }
// }
// // Add subcategory filter if provided
// if (type1 != null && !type1.isEmpty()) {
// sql2.append("AND subcategory.display_name = ? ");
// params.add(type1);
// }
// // Add category filter if provided
// if (type != null && !type.isEmpty()) {
// sql2.append("AND category.display_name = ? ");
// params.add(type);
// }
// // Grouping
// sql2.append("GROUP BY booking_status, category.display_name, subcategory.display_name, slots.name, DATE(booking.cdate)");
// // Execute query and return results
// return jdbcTemplate.queryForList(sql2.toString(), params.toArray());
// }
// public List<Map<String, Object>> getCalendarReport(String fromDate, String toDate) {
// StringBuilder sql = new StringBuilder();
// sql.append("SELECT ")
// .append("DATE(c.bdate) AS booking_date, ")
// .append("cat.display_name AS type, ")
// .append("SUM(b.no_of_person) AS total_booked_count, ")
// .append("SUM(c.absent_count) AS total_absent_count ")
// .append("FROM calendar c ")
// .append("LEFT JOIN booking b ON c.bookingid = b.booking_id ")
// .append("JOIN category cat ON c.cid = cat.cid ")
// .append("WHERE c.is_active = 1 AND c.is_delete = 0 ")
// .append("AND cat.display_name = 'Desk Space' ")
// .append("AND DATE(c.bdate) BETWEEN ? AND ? ")
// .append("GROUP BY DATE(c.bdate), cat.display_name ")
// .append("ORDER BY DATE(c.bdate)");
// List<Object> params = new ArrayList<>();
// params.add(fromDate);
// params.add(toDate);
// return jdbcTemplate.queryForList(sql.toString(), params.toArray());
// }
public List<Map<String, Object>> getslotdateReports(
String fromDate, String toDate,
String type, String status,
String filterBy, String type1,
Integer bid) {
StringBuilder sql = new StringBuilder(
"SELECT " +
"b.booking_id, bu.name as building_name,b.user_name,b.bid ,b.mobile, b.slotids, b.from_date, b.to_date, " +
"b.no_of_person, b.amount, b.payment_status, b.cdate AS bdate, " +
"b.bid, " +
"sc.display_name, cl.bdate, " +
"SUBSTRING_INDEX(sl.name, ' to ', 1) AS checkin, " +
"SUBSTRING_INDEX(sl.name, ' to ', -1) AS checkout, " +
"CASE " +
" WHEN CURDATE() BETWEEN b.from_date AND b.to_date THEN 'Ongoing' " +
" WHEN b.to_date < CURDATE() THEN 'Completed' " +
" WHEN b.from_date > CURDATE() THEN 'Upcoming' " +
" ELSE 'Ongoing' " +
"END AS status, " +
"cat.name AS type, cat.display_name AS type_name, sc.display_name AS subcategory_name " +
"FROM booking b " +
"JOIN buildings bu ON b.bid = bu.bid " +
"JOIN slots sl ON b.slotids = sl.slotid " +
"JOIN category cat ON b.cid = cat.cid " +
"JOIN subcategory sc ON b.sid = sc.scid " +
"JOIN calendar cl ON b.booking_id = cl.bookingid "
);
List<Object> params = new ArrayList<>();
// Main filters
if ("slot_date".equals(filterBy)) {
sql.append("WHERE cl.bdate >= STR_TO_DATE(?, '%Y-%m-%d') AND cl.bdate <= STR_TO_DATE(?, '%Y-%m-%d') ");
params.add(fromDate);
params.add(toDate);
} else if ("current_date".equals(filterBy)) {
sql.append("WHERE DATE(b.cdate) >= ? AND DATE(b.cdate) <= ? ");
params.add(fromDate);
params.add(toDate);
} else {
sql.append("WHERE 1=1 ");
}
// Additional filters
if (type != null && !type.isEmpty()) {
sql.append("AND cat.display_name = ? ");
params.add(type);
}
if (type1 != null && !type1.isEmpty()) {
sql.append("AND sc.display_name = ? ");
params.add(type1);
}
if (status != null && !status.isEmpty()) {
if ("Ongoing".equals(status)) {
sql.append("AND CURDATE() BETWEEN b.from_date AND b.to_date ");
} else if ("Completed".equals(status)) {
sql.append("AND b.to_date < CURDATE() ");
} else if ("Upcoming".equals(status)) {
sql.append("AND b.from_date > CURDATE() ");
}
}
if (bid != null) {
sql.append("AND b.bid = ? ");
params.add(bid);
}
sql.append("ORDER BY b.cdate DESC");
System.out.println("Generated SQL: " + sql);
System.out.println("Parameters: " + params);
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
// added by yogi
public List<Map<String, Object>> getbookingdateReports(
String fromDate, String toDate, String type, String status,
String filterBy, String type1, Integer bid) {
StringBuilder sql = new StringBuilder(
"SELECT " +
"b.from_date, " +
"b.to_date, " +
"b.booking_id, " +
"b.bid," +
"b.user_name, " +
"b.mobile, " +
"b.amount, " +
"b.payment_status, " +
"b.no_of_person, " +
"b.slotids, " +
"bu.name AS building_name, " +
"st.name AS duration, " +
"ca.name AS type, " +
"ca.display_name AS type_name, " +
"b.from_date AS bdate, " +
"b.cdate, " +
"sc.display_name, " +
"SUBSTRING_INDEX(st.name, ' to ', 1) AS checkin, " +
"SUBSTRING_INDEX(st.name, ' to ', -1) AS checkout, " +
"CASE " +
" WHEN CURDATE() BETWEEN DATE(b.from_date) AND DATE(b.to_date) THEN 'Ongoing' " +
" WHEN DATE(b.to_date) < CURDATE() THEN 'Completed' " +
" WHEN DATE(b.from_date) > CURDATE() THEN 'Upcoming' " +
"END AS status " +
"FROM calendar c " +
"INNER JOIN booking b ON c.bookingid = b.booking_id " +
"JOIN buildings bu ON b.bid = bu.bid " +
"JOIN slots st ON b.slotids = st.slotid " +
"JOIN subcategory sc ON b.sid = sc.scid " +
"JOIN category ca ON b.cid = ca.cid " +
"WHERE DATE(c.cdate) BETWEEN ? AND ? "
);
List<Object> params = new ArrayList<>();
params.add(fromDate);
params.add(toDate);
if (bid != null) {
sql.append("AND b.bid = ? ");
params.add(bid);
}
// Filter subcategory
if (type1 != null && !type1.isEmpty()) {
sql.append("AND sc.display_name = ? ");
params.add(type1);
}
// Filter category
if (type != null && !type.isEmpty()) {
sql.append("AND ca.display_name = ? ");
params.add(type);
}
// Filter status
if (status != null && !status.isEmpty()) {
sql.append(
"AND ( " +
"(CURDATE() BETWEEN DATE(b.from_date) AND DATE(b.to_date) AND ? = 'Ongoing') OR " +
"(DATE(b.to_date) < CURDATE() AND ? = 'Completed') OR " +
"(DATE(b.from_date) > CURDATE() AND ? = 'Upcoming') " +
") "
);
params.add(status);
params.add(status);
params.add(status);
}
sql.append("GROUP BY b.from_date, b.to_date, b.booking_id, b.cdate ");
sql.append("ORDER BY b.cdate DESC ");
System.out.println("Generated SQL: " + sql);
System.out.println("Params: " + params);
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
// added by yogi
public List<Map<String, Object>> abstractReportPage(
String fromDate, String toDate, String type, String type1, Integer bid) {
StringBuilder sql2 = new StringBuilder(
"SELECT DATE(booking.cdate) AS created_date, " +
"booking.bid AS building_id, " +
"buildings.name AS building_name, " +
"category.display_name AS category, " +
"subcategory.display_name AS type, " +
"slots.name AS slots, " +
"SUM(booking.amount) AS amount, " +
"SUM(booking.no_of_person) AS NO_of_person " +
"FROM booking " +
"JOIN buildings ON booking.bid = buildings.bid " +
"JOIN subcategory ON booking.sid = subcategory.scid " +
"JOIN category ON category.cid = subcategory.cid " +
"JOIN slots ON booking.slotids = slots.slotid " +
"WHERE booking.booking_status = 'success' "
);
List<Object> params = new ArrayList<>();
// Date filter (default to today)
if ((fromDate == null || fromDate.isEmpty()) &&
(toDate == null || toDate.isEmpty())) {
sql2.append("AND DATE(booking.cdate) = CURDATE() ");
} else if (fromDate != null && !fromDate.isEmpty() &&
toDate != null && !toDate.isEmpty()) {
sql2.append("AND DATE(booking.cdate) BETWEEN ? AND ? ");
params.add(fromDate);
params.add(toDate);
}
// Sub-category filter
if (type1 != null && !type1.isEmpty()) {
sql2.append("AND subcategory.display_name = ? ");
params.add(type1);
}
// Category filter
if (type != null && !type.isEmpty()) {
sql2.append("AND category.display_name = ? ");
params.add(type);
}
// ✅ Building (bid) filter
if (bid != null && bid > 0) {
sql2.append("AND booking.bid = ? ");
params.add(bid);
}
// Grouping
sql2.append("GROUP BY booking.bid, category.display_name, subcategory.display_name, slots.name, DATE(booking.cdate)");
return jdbcTemplate.queryForList(sql2.toString(), params.toArray());
}
// added by yogi
public List<Map<String, Object>> getCalendarReport(String fromDate, String toDate, int bid) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("DATE(c.bdate) AS booking_date, ")
.append("cat.display_name AS type, ")
.append("SUM(b.no_of_person) AS total_booked_count, ")
.append("SUM(c.absent_count) AS total_absent_count ")
.append("FROM calendar c ")
.append("LEFT JOIN booking b ON c.bookingid = b.booking_id ")
.append("JOIN category cat ON c.cid = cat.cid ")
.append("WHERE c.is_active = 1 AND c.is_delete = 0 ")
.append("AND cat.display_name = 'Desk Space' ")
.append("AND b.bid = ? ") // ✅ Filter by building ID
.append("AND DATE(c.bdate) BETWEEN ? AND ? ")
.append("GROUP BY DATE(c.bdate), cat.display_name ")
.append("ORDER BY DATE(c.bdate)");
List<Object> params = new ArrayList<>();
params.add(bid); // add bid first
params.add(fromDate); // then date start
params.add(toDate); // then date end
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
}
}

40
src/main/java/com/gcc/coworkspace/service/SMSService.java

@ -0,0 +1,40 @@
package com.gcc.coworkspace.service;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.net.HttpURLConnection;
import java.net.URL;
@Service
public class SMSService {
public String sendMsg(String msgUrl) {
System.out.println("Whatsapp URL :-"+msgUrl);
String response ="";
try{
HttpURLConnection connection =null;
URL url = new URL(msgUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
response=responseCode+"";
System.out.println("Response Code: " + responseCode);
}catch (Exception e){
e.printStackTrace();
}
return response;
}
public String sendSMS(String SMS_Url) {
System.out.println("SMS URL:- "+ SMS_Url);
RestTemplate restTemplate = new RestTemplate();
String response =restTemplate.getForObject(SMS_Url,String.class);
return response;
}
}

66
src/main/java/com/gcc/coworkspace/service/WhatsAppService.java

@ -0,0 +1,66 @@
package com.gcc.coworkspace.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class WhatsAppService {
@Autowired
private SMSService whatsappMsgService;
String password = "h2YjFNcJ";
public String sendOTP(String mobileNo, String msg) {
String msgContent ="https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+mobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Welcome+to+Mudhalvar+Padaipagam%2C+%0A%0AThe+OTP+for+your+booking+is+"+msg+"%2A";
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendELearnNmsg(String MobileNo, String noOfPerson, String bdate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Dear+Patron%2C%0AWelcome+to+Muthalvar+Padaippagam%F0%9F%99%8F++%0A%0AYou+have+booked+our+Learning+Centre+for+%2A"+noOfPerson+"%2A+number+of+persons+on+%2A"+bdate+"%2A+at+%0Atime+slot+%2A"+slot+"%2A+.%0A%0APayment+for+the+booking+is+%2ARs.+"+amount+"%2A+received.+%0A%0APlease+show+your+QR+Code+at+Reception+Desk+for+accessing+Muthalvar+Padaippagam.%0A%0AHave+a+Nice+Day%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendTLearnNmsg(String MobileNo, String noOfPerson, String bdate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%BE%E0%AE%A9+%E0%AE%B5%E0%AE%BE%E0%AE%9F%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88%E0%AE%AF%E0%AE%BE%E0%AE%B3%E0%AE%B0%E0%AF%87%2C+%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%A4%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%88+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%9F%E0%AE%A9%E0%AF%8D+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BF%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AE%A4%E0%AF%81+%F0%9F%99%8F++%0A%0A%E0%AE%A4%E0%AE%BE%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+%E0%AE%8E%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AE%BF%E0%AE%A9%E0%AF%8D+%E0%AE%95%E0%AE%B1%E0%AF%8D%E0%AE%B1%E0%AE%B2%E0%AF%8D+%E0%AE%AE%E0%AF%88%E0%AE%AF%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AF%88++%2A"+noOfPerson+"%2A+%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88+%E0%AE%A8%E0%AE%AA%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%81++%2A"+bdate+"%2A+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AF%81++%E0%AE%A8%E0%AF%87%E0%AE%B0+%E0%AE%87%E0%AE%9F%E0%AF%88%E0%AE%B5%E0%AF%86%E0%AE%B3%E0%AE%BF+%2A"+slot+"%2A+%E0%AE%B2%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8A%E0%AE%B3%E0%AF%8D%E0%AE%B3+%E0%AE%AE%E0%AF%81%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%A4%E0%AE%BF%E0%AE%B5%E0%AF%81+%E0%AE%9A%E0%AF%86%E0%AE%AF%E0%AF%8D%E0%AE%A4%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AF%80%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D.+.%0A%0A%E0%AE%87%E0%AE%A4%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BE%E0%AE%A9++%E0%AE%95%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AE%A3%E0%AE%AE%E0%AF%8D+%2A%E0%AE%B0%E0%AF%82.+"+amount+"%2A+%E0%AE%AA%E0%AF%86%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AE%A4%E0%AF%81.%0A%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4+%E0%AE%89%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+QR+%E0%AE%95%E0%AF%81%E0%AE%B1%E0%AE%BF%E0%AE%AF%E0%AF%80%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%88+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%AA%E0%AE%B1%E0%AF%88%E0%AE%AF%E0%AE%BF%E0%AE%B2%E0%AF%8D+%E0%AE%95%E0%AE%BE%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D.%0A%0A%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AF%8D+%E0%AE%87%E0%AE%A9%E0%AE%BF%E0%AE%AF+%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AE%BE%E0%AE%AF%E0%AF%8D+%E0%AE%85%E0%AE%AE%E0%AF%88%E0%AE%AF%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%8D%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendEDeskspaceNmsg(String MobileNo, String noOfPerson, String bdate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Dear+Patron%2C%0AWelcome+to+Muthalvar+Padaippagam%F0%9F%99%8F++%0A%0AYou+have+booked+our+Desk+space+for+%2A"+noOfPerson+"%2A+number+of+persons+on+%2A"+bdate+"%2A+at+time+slot+%2A"+slot+"%2A+.%0A%0APayment+for+the+booking+is+%2ARs.+"+amount+"%2A+received.+%0A%0APlease+show+your+QR+Code+at+Reception+Desk+for+accessing+Muthalvar+Padaippagam.%0A%0AHave+a+Nice+Day%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendTDeskspaceNmsg(String MobileNo, String noOfPerson, String bdate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%BE%E0%AE%A9+%E0%AE%B5%E0%AE%BE%E0%AE%9F%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88%E0%AE%AF%E0%AE%BE%E0%AE%B3%E0%AE%B0%E0%AF%87%2C+%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%A4%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%88+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%9F%E0%AE%A9%E0%AF%8D+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BF%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AE%A4%E0%AF%81%F0%9F%99%8F++%0A%0A%E0%AE%A4%E0%AE%BE%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+%E0%AE%8E%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AE%BF%E0%AE%A9%E0%AF%8D+%E0%AE%AE%E0%AF%87%E0%AE%9A%E0%AF%88+%E0%AE%87%E0%AE%9F%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%A9%E0%AF%88+%2A"+noOfPerson+"%2A+%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88+%E0%AE%A8%E0%AE%AA%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%81+%2A"+bdate+"%2A+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AF%81+%E0%AE%A8%E0%AF%87%E0%AE%B0+%E0%AE%87%E0%AE%9F%E0%AF%88%E0%AE%B5%E0%AF%86%E0%AE%B3%E0%AE%BF+%2A"+slot+"%2A+%E0%AE%B2%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8A%E0%AE%B3%E0%AF%8D%E0%AE%B3+%E0%AE%AE%E0%AF%81%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%A4%E0%AE%BF%E0%AE%B5%E0%AF%81+%E0%AE%9A%E0%AF%86%E0%AE%AF%E0%AF%8D%E0%AE%A4%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AF%80%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D.%0A%0A%E0%AE%87%E0%AE%A4%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BE%E0%AE%A9++%E0%AE%95%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AE%A3%E0%AE%AE%E0%AF%8D+%2A%E0%AE%B0%E0%AF%82.+"+amount+"%2A+%E0%AE%AA%E0%AF%86%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AE%A4%E0%AF%81.+%0A%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4+%E0%AE%89%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+QR+%E0%AE%95%E0%AF%81%E0%AE%B1%E0%AE%BF%E0%AE%AF%E0%AF%80%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%88+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%AA%E0%AE%B1%E0%AF%88%E0%AE%AF%E0%AE%BF%E0%AE%B2%E0%AF%8D+%E0%AE%95%E0%AE%BE%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D%0A%0A%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AF%8D+%E0%AE%87%E0%AE%A9%E0%AE%BF%E0%AE%AF+%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AE%BE%E0%AE%AF%E0%AF%8D+%E0%AE%85%E0%AE%AE%E0%AF%88%E0%AE%AF%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%8D%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendEMonthDeskspaceNmsg(String MobileNo, String noOfPerson, String bFromdate,String bTodate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password="+password+"&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Dear+Patron%2C%0AWelcome+to+Muthalvar+Padaippagam%F0%9F%99%8F++%0A%0AYou+have+booked+our+Desk+space+for+%2A"+noOfPerson+"%2A+number+of+persons+for+30+days+from+%2A"+bFromdate+"+to+"+bTodate+"%2A+at+time+slot+%2A"+slot+"%2A.%0A%0APayment+for+the+booking+is+%2ARs.+"+amount+"%2A+received.+%0A%0APlease+show+your+QR+Code+at+Reception+Desk+for+accessing+Muthalvar+Padaippagam.%0A%0AHave+a+Nice+Day%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendTMonthDeskspaceNmsg(String MobileNo, String noOfPerson, String bfromDate,String btoDate, String slot, String amount, String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%BE%E0%AE%A9+%E0%AE%B5%E0%AE%BE%E0%AE%9F%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88%E0%AE%AF%E0%AE%BE%E0%AE%B3%E0%AE%B0%E0%AF%87%2C+%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%A4%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%88+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%9F%E0%AE%A9%E0%AF%8D+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BF%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AE%A4%E0%AF%81+%F0%9F%99%8F++%0A%0A%E0%AE%A4%E0%AE%BE%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+%E0%AE%8E%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AE%BF%E0%AE%A9%E0%AF%8D+%E0%AE%AE%E0%AF%87%E0%AE%9A%E0%AF%88+%E0%AE%87%E0%AE%9F%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AF%88+%2A"+noOfPerson+"%2A+%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%A3%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88+%E0%AE%A8%E0%AE%AA%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%81+30+%E0%AE%A8%E0%AE%BE%E0%AE%9F%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+%2A"+bfromDate+"+%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D+"+btoDate+"%2A+%E0%AE%B5%E0%AE%B0%E0%AF%88+%E0%AE%A8%E0%AF%87%E0%AE%B0+%E0%AE%87%E0%AE%9F%E0%AF%88%E0%AE%B5%E0%AF%86%E0%AE%B3%E0%AE%BF+%2A"+slot+"%2A+%E0%AE%B2%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8A%E0%AE%B3%E0%AF%8D%E0%AE%B3+%E0%AE%AE%E0%AF%81%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%A4%E0%AE%BF%E0%AE%B5%E0%AF%81+%E0%AE%9A%E0%AF%86%E0%AE%AF%E0%AF%8D%E0%AE%A4%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AF%80%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D.%0A%0A%E0%AE%87%E0%AE%A4%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BE%E0%AE%A9++%E0%AE%95%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AE%A3%E0%AE%AE%E0%AF%8D+%2A%E0%AE%B0%E0%AF%82.+"+amount+"%2A+%E0%AE%AA%E0%AF%86%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AE%A4%E0%AF%81.%0A%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4+%E0%AE%89%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+QR+%E0%AE%95%E0%AF%81%E0%AE%B1%E0%AE%BF%E0%AE%AF%E0%AF%80%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%88+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%AA%E0%AE%B1%E0%AF%88%E0%AE%AF%E0%AE%BF%E0%AE%B2%E0%AF%8D+%E0%AE%95%E0%AE%BE%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D%0A%0A%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AF%8D+%E0%AE%87%E0%AE%A9%E0%AE%BF%E0%AE%AF+%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AE%BE%E0%AE%AF%E0%AF%8D+%E0%AE%85%E0%AE%AE%E0%AF%88%E0%AE%AF%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%8D%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendEConfeNmsg(String mobileNo, String bdate, String slot, String amount,String bookingId) {
String msgContent= "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to="+mobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Dear+Patron%2C%0AWelcome+to+Muthalvar+Padaippagam%F0%9F%99%8F++%0A%0AYou+have+booked+our+Conference+Hall+on+%2A"+bdate+"%2A+at+time+slot+%2A"+slot+"%2A+.%0A%0APayment+for+the+booking+is+%2ARs.+"+amount+"%2A+received.+%0A%0APlease+show+your+QR+Code+at+Reception+Desk+for+accessing+Muthalvar+Padaippagam.%0A%0AHave+a+Nice+Day%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
System.out.println(msgContent);
return whatsappMsgService.sendMsg(msgContent);
}
public String sendTConfeNmsg(String mobileNo, String bdate, String slot, String amount,String bookingId) {
String msgContent = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to="+mobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%BE%E0%AE%A9+%E0%AE%B5%E0%AE%BE%E0%AE%9F%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%88%E0%AE%AF%E0%AE%BE%E0%AE%B3%E0%AE%B0%E0%AF%87%2C+%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%A4%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%88+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%9F%E0%AE%A9%E0%AF%8D+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BF%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AE%A4%E0%AF%81+%F0%9F%99%8F++%0A%0A%E0%AE%A4%E0%AE%BE%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+%E0%AE%8E%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AE%BF%E0%AE%A9%E0%AF%8D+%E0%AE%95%E0%AE%B2%E0%AE%A8%E0%AF%8D%E0%AE%A4%E0%AE%BE%E0%AE%AF%E0%AF%8D%E0%AE%B5%E0%AF%81+%E0%AE%85%E0%AE%B0%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%A9%E0%AF%88+%2A"+bdate+"%2A+%E0%AE%85%E0%AE%A9%E0%AF%8D%E0%AE%B1%E0%AF%81++%E0%AE%A8%E0%AF%87%E0%AE%B0+%E0%AE%87%E0%AE%9F%E0%AF%88%E0%AE%B5%E0%AF%86%E0%AE%B3%E0%AE%BF+%2A"+slot+"%2A+%E0%AE%B2%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8A%E0%AE%B3%E0%AF%8D%E0%AE%B3+%E0%AE%AE%E0%AF%81%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%A4%E0%AE%BF%E0%AE%B5%E0%AF%81+%E0%AE%9A%E0%AF%86%E0%AE%AF%E0%AF%8D%E0%AE%A4%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AF%80%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D.+%0A%0A%E0%AE%87%E0%AE%A4%E0%AE%B1%E0%AF%8D%E0%AE%95%E0%AE%BE%E0%AE%A9++%E0%AE%95%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AE%A3%E0%AE%AE%E0%AF%8D+%2A%E0%AE%B0%E0%AF%82.+"+amount+"%2A+%E0%AE%AA%E0%AF%86%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%B3%E0%AF%8D%E0%AE%B3%E0%AE%A4%E0%AF%81.+%0A%0A%E0%AE%AE%E0%AF%81%E0%AE%A4%E0%AE%B2%E0%AF%8D%E0%AE%B5%E0%AE%B0%E0%AF%8D+%E0%AE%AA%E0%AE%9F%E0%AF%88%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AE%95%E0%AE%AE%E0%AF%8D+%E0%AE%AA%E0%AE%AF%E0%AE%A9%E0%AF%8D%E0%AE%AA%E0%AE%9F%E0%AF%81%E0%AE%A4%E0%AF%8D%E0%AE%A4+%E0%AE%89%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D+QR+%E0%AE%95%E0%AF%81%E0%AE%B1%E0%AE%BF%E0%AE%AF%E0%AF%80%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%88+%E0%AE%B5%E0%AE%B0%E0%AE%B5%E0%AF%87%E0%AE%B1%E0%AF%8D%E0%AE%AA%E0%AE%B1%E0%AF%88%E0%AE%AF%E0%AE%BF%E0%AE%B2%E0%AF%8D+%E0%AE%95%E0%AE%BE%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%99%E0%AF%8D%E0%AE%95%E0%AE%B3%E0%AF%8D%0A%0A%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AF%8D+%E0%AE%87%E0%AE%A9%E0%AE%BF%E0%AE%AF+%E0%AE%A8%E0%AE%BE%E0%AE%B3%E0%AE%BE%E0%AE%AF%E0%AF%8D+%E0%AE%85%E0%AE%AE%E0%AF%88%E0%AE%AF%E0%AE%9F%E0%AF%8D%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%8D%F0%9F%98%8A&isTemplate=true&buttonUrlParam=muthalvarpadaippagam%2FbookingQRCode%3Fbooking_id%3D"+bookingId;
return whatsappMsgService.sendMsg(msgContent);
}
}

BIN
src/main/resources/.DS_Store

11
src/main/resources/application-dev.properties

@ -0,0 +1,11 @@
spring.application.name=muthalvarpadaippagam
file.upload.directory=${user.dir}/co-workspaceDocuments
app.baseUrl=/
app.getOtpUrl=https://tmegov.onex-aura.com/api/sms?
payment.razorpay.my_key_id=rzp_test_tDkHFEqWXmuEi8
app.full_URL=http://localhost:8074

10
src/main/resources/application-prod.properties

@ -0,0 +1,10 @@
spring.application.name=muthalvarpadaippagam
file.upload.directory=${user.dir}/co-workspaceDocuments
app.baseUrl=/muthalvarpadaippagam/
app.getOtpUrl=https://tmegov.onex-aura.com/api/sms?
payment.razorpay.my_key_id=rzp_live_ySI5Ns54Y7qOcJ
#app.full_URL=https://gccservices.chennaicorporation.gov.in/muthalvarpadaippagam
app.full_URL=https://gccservices.in/muthalvarpadaippagam

11
src/main/resources/application.properties

@ -0,0 +1,11 @@
spring.application.name=conferencehall
spring.profiles.active=dev
#spring.profiles.active=prod
server.port=8074
google.api.key=AIzaSyCi7N6uW5MZaSkd50Kzw7ax2GkMN1vjE-E
google.place.id=ChIJG8YjaABlUjoRAyFklVuYvk4
complaintfile_directory=complaintfile_uploads
caretakerfileuploads_directory=caretakercomplaintfile_uploads

BIN
src/main/resources/static/.DS_Store

BIN
src/main/resources/static/assets/.DS_Store

6
src/main/resources/static/assets/js/html2pdf.bundle.min.js
File diff suppressed because it is too large
View File

BIN
src/main/resources/static/files/.DS_Store

730
src/main/resources/static/files/assets/css/component.css

@ -0,0 +1,730 @@
/* General styles for the modal */
/*
Styles for the html/body for special modal where we want 3d effects
Note that we need a container wrapping all content on the page for the
perspective effects (not including the modals and the overlay).
*/
.md-perspective,
.md-perspective body {
height: 100%;
overflow: hidden;
}
.md-perspective body {
background: #222;
-webkit-perspective: 600px;
-moz-perspective: 600px;
perspective: 600px;
}
.md-modal {
position: fixed;
top: 50%;
left: 50%;
width: 50%;
max-width: 630px;
min-width: 300px;
height: auto;
z-index: 2000;
visibility: hidden;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
}
.md-show {
visibility: visible;
}
.md-overlay {
position: fixed;
width: 100%;
height: 100%;
visibility: hidden;
top: 0;
left: 0;
z-index: 1000;
opacity: 0;
background: rgba(55, 58, 60, 0.65);
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show ~ .md-overlay {
opacity: 1;
visibility: visible;
}
/* Content styles */
.md-content {
color: #666666;
background: #fff;
position: relative;
border-radius: 3px;
margin: 0 auto;
}
.md-content h3 {
color: #fff;
margin: 0;
padding: 0.4em;
text-align: center;
font-weight: 400;
opacity: 0.8;
background: #4680ff;
border-radius: 3px 3px 0 0;
}
.md-content > div {
padding: 15px 15px 30px 15px;
margin: 0;
font-weight: 300;
font-size: 1.15em;
}
.md-content > div p {
margin: 0;
padding: 10px 0;
}
.md-content > div ul {
margin: 0;
padding: 0 0 30px 20px;
}
.md-content > div ul li {
padding: 5px 0;
}
.md-content button {
display: block;
margin: 0 auto;
font-size: 0.8em;
}
/* Individual modal styles with animations/transitions */
/* Effect 1: Fade in and scale up */
.md-effect-1 .md-content {
-webkit-transform: scale(0.7);
-moz-transform: scale(0.7);
-ms-transform: scale(0.7);
transform: scale(0.7);
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-1 .md-content {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
opacity: 1;
}
/* Effect 2: Slide from the right */
.md-effect-2 .md-content {
-webkit-transform: translateX(20%);
-moz-transform: translateX(20%);
-ms-transform: translateX(20%);
transform: translateX(20%);
opacity: 0;
-webkit-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
-moz-transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
}
.md-show.md-effect-2 .md-content {
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
opacity: 1;
}
/* Effect 3: Slide from the bottom */
.md-effect-3 .md-content {
-webkit-transform: translateY(20%);
-moz-transform: translateY(20%);
-ms-transform: translateY(20%);
transform: translateY(20%);
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-3 .md-content {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
/* Effect 4: Newspaper */
.md-effect-4 .md-content {
-webkit-transform: scale(0) rotate(720deg);
-moz-transform: scale(0) rotate(720deg);
-ms-transform: scale(0) rotate(720deg);
transform: scale(0) rotate(720deg);
opacity: 0;
}
.md-show.md-effect-4 ~ .md-overlay,
.md-effect-4 .md-content {
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.md-show.md-effect-4 .md-content {
-webkit-transform: scale(1) rotate(0deg);
-moz-transform: scale(1) rotate(0deg);
-ms-transform: scale(1) rotate(0deg);
transform: scale(1) rotate(0deg);
opacity: 1;
}
/* Effect 5: fall */
.md-effect-5.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-5 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translateZ(600px) rotateX(20deg);
-moz-transform: translateZ(600px) rotateX(20deg);
-ms-transform: translateZ(600px) rotateX(20deg);
transform: translateZ(600px) rotateX(20deg);
opacity: 0;
}
.md-show.md-effect-5 .md-content {
-webkit-transition: all 0.3s ease-in;
-moz-transition: all 0.3s ease-in;
transition: all 0.3s ease-in;
-webkit-transform: translateZ(0px) rotateX(0deg);
-moz-transform: translateZ(0px) rotateX(0deg);
-ms-transform: translateZ(0px) rotateX(0deg);
transform: translateZ(0px) rotateX(0deg);
opacity: 1;
}
/* Effect 6: side fall */
.md-effect-6.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-6 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translate(30%) translateZ(600px) rotate(10deg);
-moz-transform: translate(30%) translateZ(600px) rotate(10deg);
-ms-transform: translate(30%) translateZ(600px) rotate(10deg);
transform: translate(30%) translateZ(600px) rotate(10deg);
opacity: 0;
}
.md-show.md-effect-6 .md-content {
-webkit-transition: all 0.3s ease-in;
-moz-transition: all 0.3s ease-in;
transition: all 0.3s ease-in;
-webkit-transform: translate(0%) translateZ(0) rotate(0deg);
-moz-transform: translate(0%) translateZ(0) rotate(0deg);
-ms-transform: translate(0%) translateZ(0) rotate(0deg);
transform: translate(0%) translateZ(0) rotate(0deg);
opacity: 1;
}
/* Effect 7: slide and stick to top */
.md-effect-7{
top: 0;
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
}
.md-effect-7 .md-content {
-webkit-transform: translateY(-200%);
-moz-transform: translateY(-200%);
-ms-transform: translateY(-200%);
transform: translateY(-200%);
-webkit-transition: all .3s;
-moz-transition: all .3s;
transition: all .3s;
opacity: 0;
}
.md-show.md-effect-7 .md-content {
-webkit-transform: translateY(0%);
-moz-transform: translateY(0%);
-ms-transform: translateY(0%);
transform: translateY(0%);
border-radius: 0 0 3px 3px;
opacity: 1;
}
/* Effect 8: 3D flip horizontal */
.md-effect-8.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-8 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: rotateY(-70deg);
-moz-transform: rotateY(-70deg);
-ms-transform: rotateY(-70deg);
transform: rotateY(-70deg);
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
opacity: 0;
}
.md-show.md-effect-8 .md-content {
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
transform: rotateY(0deg);
opacity: 1;
}
/* Effect 9: 3D flip vertical */
.md-effect-9.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-9 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: rotateX(-70deg);
-moz-transform: rotateX(-70deg);
-ms-transform: rotateX(-70deg);
transform: rotateX(-70deg);
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
opacity: 0;
}
.md-show.md-effect-9 .md-content {
-webkit-transform: rotateX(0deg);
-moz-transform: rotateX(0deg);
-ms-transform: rotateX(0deg);
transform: rotateX(0deg);
opacity: 1;
}
/* Effect 10: 3D sign */
.md-effect-10.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-10 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: rotateX(-60deg);
-moz-transform: rotateX(-60deg);
-ms-transform: rotateX(-60deg);
transform: rotateX(-60deg);
-webkit-transform-origin: 50% 0;
-moz-transform-origin: 50% 0;
transform-origin: 50% 0;
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-10 .md-content {
-webkit-transform: rotateX(0deg);
-moz-transform: rotateX(0deg);
-ms-transform: rotateX(0deg);
transform: rotateX(0deg);
opacity: 1;
}
/* Effect 11: Super scaled */
.md-effect-11 .md-content {
-webkit-transform: scale(2);
-moz-transform: scale(2);
-ms-transform: scale(2);
transform: scale(2);
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-11 .md-content {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
opacity: 1;
}
/* Effect 12: Just me */
.md-effect-12 .md-content {
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
-ms-transform: scale(0.8);
transform: scale(0.8);
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-12 ~ .md-overlay {
background: #fff;
}
.md-effect-12 .md-content h3,
.md-effect-12 .md-content {
background: transparent;
}
.md-show.md-effect-12 .md-content {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
opacity: 1;
}
/* Effect 13: 3D slit */
.md-effect-13.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-13 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translateZ(-3000px) rotateY(90deg);
-moz-transform: translateZ(-3000px) rotateY(90deg);
-ms-transform: translateZ(-3000px) rotateY(90deg);
transform: translateZ(-3000px) rotateY(90deg);
opacity: 0;
}
.md-show.md-effect-13 .md-content {
-webkit-animation: slit .7s forwards ease-out;
-moz-animation: slit .7s forwards ease-out;
animation: slit .7s forwards ease-out;
}
@-webkit-keyframes slit {
50% { -webkit-transform: translateZ(-250px) rotateY(89deg); opacity: .5; -webkit-animation-timing-function: ease-out;}
100% { -webkit-transform: translateZ(0) rotateY(0deg); opacity: 1; }
}
@-moz-keyframes slit {
50% { -moz-transform: translateZ(-250px) rotateY(89deg); opacity: .5; -moz-animation-timing-function: ease-out;}
100% { -moz-transform: translateZ(0) rotateY(0deg); opacity: 1; }
}
@keyframes slit {
50% { transform: translateZ(-250px) rotateY(89deg); opacity: 1; animation-timing-function: ease-in;}
100% { transform: translateZ(0) rotateY(0deg); opacity: 1; }
}
/* Effect 14: 3D Rotate from bottom */
.md-effect-14.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-14 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translateY(100%) rotateX(90deg);
-moz-transform: translateY(100%) rotateX(90deg);
-ms-transform: translateY(100%) rotateX(90deg);
transform: translateY(100%) rotateX(90deg);
-webkit-transform-origin: 0 100%;
-moz-transform-origin: 0 100%;
transform-origin: 0 100%;
opacity: 0;
-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;
}
.md-show.md-effect-14 .md-content {
-webkit-transform: translateY(0%) rotateX(0deg);
-moz-transform: translateY(0%) rotateX(0deg);
-ms-transform: translateY(0%) rotateX(0deg);
transform: translateY(0%) rotateX(0deg);
opacity: 1;
}
/* Effect 15: 3D Rotate in from left */
.md-effect-15.md-modal {
-webkit-perspective: 1300px;
-moz-perspective: 1300px;
perspective: 1300px;
}
.md-effect-15 .md-content {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translateZ(100px) translateX(-30%) rotateY(90deg);
-moz-transform: translateZ(100px) translateX(-30%) rotateY(90deg);
-ms-transform: translateZ(100px) translateX(-30%) rotateY(90deg);
transform: translateZ(100px) translateX(-30%) rotateY(90deg);
-webkit-transform-origin: 0 100%;
-moz-transform-origin: 0 100%;
transform-origin: 0 100%;
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-15 .md-content {
-webkit-transform: translateZ(0px) translateX(0%) rotateY(0deg);
-moz-transform: translateZ(0px) translateX(0%) rotateY(0deg);
-ms-transform: translateZ(0px) translateX(0%) rotateY(0deg);
transform: translateZ(0px) translateX(0%) rotateY(0deg);
opacity: 1;
}
/* Effect 16: Blur */
.md-show.md-effect-16 ~ .md-overlay {
background: rgba(180,46,32,0.5);
}
.md-show.md-effect-16 ~ .container {
-webkit-filter: blur(3px);
-moz-filter: blur(3px);
filter: blur(3px);
}
.md-effect-16 .md-content {
-webkit-transform: translateY(-5%);
-moz-transform: translateY(-5%);
-ms-transform: translateY(-5%);
transform: translateY(-5%);
opacity: 0;
}
.md-show.md-effect-16 ~ .container,
.md-effect-16 .md-content {
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
}
.md-show.md-effect-16 .md-content {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
opacity: 1;
}
/* Effect 17: Slide in from bottom with perspective on container */
.md-show.md-effect-17 ~ .container {
height: 100%;
overflow: hidden;
-webkit-transition: -webkit-transform 0.3s;
-moz-transition: -moz-transform 0.3s;
transition: transform 0.3s;
}
.md-show.md-effect-17 ~ .container,
.md-show.md-effect-17 ~ .md-overlay {
-webkit-transform: rotateX(-2deg);
-moz-transform: rotateX(-2deg);
-ms-transform: rotateX(-2deg);
transform: rotateX(-2deg);
-webkit-transform-origin: 50% 0%;
-moz-transform-origin: 50% 0%;
transform-origin: 50% 0%;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.md-effect-17 .md-content {
opacity: 0;
-webkit-transform: translateY(200%);
-moz-transform: translateY(200%);
-ms-transform: translateY(200%);
transform: translateY(200%);
}
.md-show.md-effect-17 .md-content {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
opacity: 1;
-webkit-transition: all 0.3s 0.2s;
-moz-transition: all 0.3s 0.2s;
transition: all 0.3s 0.2s;
}
/* Effect 18: Slide from right with perspective on container */
.md-show.md-effect-18 ~ .container {
height: 100%;
overflow: hidden;
}
.md-show.md-effect-18 ~ .md-overlay {
background: rgba(55, 58, 60, 0.5);
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.md-show.md-effect-18 ~ .container,
.md-show.md-effect-18 ~ .md-overlay {
-webkit-transform-style: preserve-3d;
-webkit-transform-origin: 0% 50%;
-webkit-animation: rotateRightSideFirst 0.5s forwards ease-in;
-moz-transform-style: preserve-3d;
-moz-transform-origin: 0% 50%;
-moz-animation: rotateRightSideFirst 0.5s forwards ease-in;
transform-style: preserve-3d;
transform-origin: 0% 50%;
animation: rotateRightSideFirst 0.5s forwards ease-in;
}
@-webkit-keyframes rotateRightSideFirst {
50% { -webkit-transform: translateZ(-50px) rotateY(5deg); -webkit-animation-timing-function: ease-out; }
100% { -webkit-transform: translateZ(-200px); }
}
@-moz-keyframes rotateRightSideFirst {
50% { -moz-transform: translateZ(-50px) rotateY(5deg); -moz-animation-timing-function: ease-out; }
100% { -moz-transform: translateZ(-200px); }
}
@keyframes rotateRightSideFirst {
50% { transform: translateZ(-50px) rotateY(5deg); animation-timing-function: ease-out; }
100% { transform: translateZ(-200px); }
}
.md-effect-18 .md-content {
-webkit-transform: translateX(200%);
-moz-transform: translateX(200%);
-ms-transform: translateX(200%);
transform: translateX(200%);
opacity: 0;
}
.md-show.md-effect-18 .md-content {
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
opacity: 1;
-webkit-transition: all 0.5s 0.1s;
-moz-transition: all 0.5s 0.1s;
transition: all 0.5s 0.1s;
}
/* Effect 19: Slip in from the top with perspective on container */
.md-show.md-effect-19 ~ .container {
height: 100%;
overflow: hidden;
}
.md-show.md-effect-19 ~ .md-overlay {
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.md-show.md-effect-19 ~ .container,
.md-show.md-effect-19 ~ .md-overlay {
-webkit-transform-style: preserve-3d;
-webkit-transform-origin: 50% 100%;
-webkit-animation: OpenTop 0.5s forwards ease-in;
-moz-transform-style: preserve-3d;
-moz-transform-origin: 50% 100%;
-moz-animation: OpenTop 0.5s forwards ease-in;
transform-style: preserve-3d;
transform-origin: 50% 100%;
animation: OpenTop 0.5s forwards ease-in;
}
@-webkit-keyframes OpenTop {
50% {
-webkit-transform: rotateX(10deg);
-webkit-animation-timing-function: ease-out;
}
}
@-moz-keyframes OpenTop {
50% {
-moz-transform: rotateX(10deg);
-moz-animation-timing-function: ease-out;
}
}
@keyframes OpenTop {
50% {
transform: rotateX(10deg);
animation-timing-function: ease-out;
}
}
.md-effect-19 .md-content {
-webkit-transform: translateY(-200%);
-moz-transform: translateY(-200%);
-ms-transform: translateY(-200%);
transform: translateY(-200%);
opacity: 0;
}
.md-show.md-effect-19 .md-content {
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
opacity: 1;
-webkit-transition: all 0.5s 0.1s;
-moz-transition: all 0.5s 0.1s;
transition: all 0.5s 0.1s;
}
@media screen and (max-width: 32em) {
body { font-size: 75%; }
}

4
src/main/resources/static/files/assets/css/font-awesome.min.css
File diff suppressed because it is too large
View File

1281
src/main/resources/static/files/assets/css/jquery.mCustomScrollbar.css
File diff suppressed because it is too large
View File

536
src/main/resources/static/files/assets/css/linearicons.css

@ -0,0 +1,536 @@
@font-face {
font-family: 'Linearicons-Free';
src:url('../fonts/Linearicons-Free.hxd');
src:url('../fonts/Linearicons-Free-1.hxd') format('embedded-opentype'),
url('../fonts/Linearicons-Free.woff2') format('woff2'),
url('../fonts/Linearicons-Free.woff') format('woff'),
url('../fonts/Linearicons-Free.ttf') format('truetype'),
url('../fonts/Linearicons-Free.svg') format('svg');
font-weight: normal;
font-style: normal;
}
.lnr {
font-family: 'Linearicons-Free';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.lnr-home:before {
content: "\e800";
}
.lnr-apartment:before {
content: "\e801";
}
.lnr-pencil:before {
content: "\e802";
}
.lnr-magic-wand:before {
content: "\e803";
}
.lnr-drop:before {
content: "\e804";
}
.lnr-lighter:before {
content: "\e805";
}
.lnr-poop:before {
content: "\e806";
}
.lnr-sun:before {
content: "\e807";
}
.lnr-moon:before {
content: "\e808";
}
.lnr-cloud:before {
content: "\e809";
}
.lnr-cloud-upload:before {
content: "\e80a";
}
.lnr-cloud-download:before {
content: "\e80b";
}
.lnr-cloud-sync:before {
content: "\e80c";
}
.lnr-cloud-check:before {
content: "\e80d";
}
.lnr-database:before {
content: "\e80e";
}
.lnr-lock:before {
content: "\e80f";
}
.lnr-cog:before {
content: "\e810";
}
.lnr-trash:before {
content: "\e811";
}
.lnr-dice:before {
content: "\e812";
}
.lnr-heart:before {
content: "\e813";
}
.lnr-star:before {
content: "\e814";
}
.lnr-star-half:before {
content: "\e815";
}
.lnr-star-empty:before {
content: "\e816";
}
.lnr-flag:before {
content: "\e817";
}
.lnr-envelope:before {
content: "\e818";
}
.lnr-paperclip:before {
content: "\e819";
}
.lnr-inbox:before {
content: "\e81a";
}
.lnr-eye:before {
content: "\e81b";
}
.lnr-printer:before {
content: "\e81c";
}
.lnr-file-empty:before {
content: "\e81d";
}
.lnr-file-add:before {
content: "\e81e";
}
.lnr-enter:before {
content: "\e81f";
}
.lnr-exit:before {
content: "\e820";
}
.lnr-graduation-hat:before {
content: "\e821";
}
.lnr-license:before {
content: "\e822";
}
.lnr-music-note:before {
content: "\e823";
}
.lnr-film-play:before {
content: "\e824";
}
.lnr-camera-video:before {
content: "\e825";
}
.lnr-camera:before {
content: "\e826";
}
.lnr-picture:before {
content: "\e827";
}
.lnr-book:before {
content: "\e828";
}
.lnr-bookmark:before {
content: "\e829";
}
.lnr-user:before {
content: "\e82a";
}
.lnr-users:before {
content: "\e82b";
}
.lnr-shirt:before {
content: "\e82c";
}
.lnr-store:before {
content: "\e82d";
}
.lnr-cart:before {
content: "\e82e";
}
.lnr-tag:before {
content: "\e82f";
}
.lnr-phone-handset:before {
content: "\e830";
}
.lnr-phone:before {
content: "\e831";
}
.lnr-pushpin:before {
content: "\e832";
}
.lnr-map-marker:before {
content: "\e833";
}
.lnr-map:before {
content: "\e834";
}
.lnr-location:before {
content: "\e835";
}
.lnr-calendar-full:before {
content: "\e836";
}
.lnr-keyboard:before {
content: "\e837";
}
.lnr-spell-check:before {
content: "\e838";
}
.lnr-screen:before {
content: "\e839";
}
.lnr-smartphone:before {
content: "\e83a";
}
.lnr-tablet:before {
content: "\e83b";
}
.lnr-laptop:before {
content: "\e83c";
}
.lnr-laptop-phone:before {
content: "\e83d";
}
.lnr-power-switch:before {
content: "\e83e";
}
.lnr-bubble:before {
content: "\e83f";
}
.lnr-heart-pulse:before {
content: "\e840";
}
.lnr-construction:before {
content: "\e841";
}
.lnr-pie-chart:before {
content: "\e842";
}
.lnr-chart-bars:before {
content: "\e843";
}
.lnr-gift:before {
content: "\e844";
}
.lnr-diamond:before {
content: "\e845";
}
.lnr-linearicons:before {
content: "\e846";
}
.lnr-dinner:before {
content: "\e847";
}
.lnr-coffee-cup:before {
content: "\e848";
}
.lnr-leaf:before {
content: "\e849";
}
.lnr-paw:before {
content: "\e84a";
}
.lnr-rocket:before {
content: "\e84b";
}
.lnr-briefcase:before {
content: "\e84c";
}
.lnr-bus:before {
content: "\e84d";
}
.lnr-car:before {
content: "\e84e";
}
.lnr-train:before {
content: "\e84f";
}
.lnr-bicycle:before {
content: "\e850";
}
.lnr-wheelchair:before {
content: "\e851";
}
.lnr-select:before {
content: "\e852";
}
.lnr-earth:before {
content: "\e853";
}
.lnr-smile:before {
content: "\e854";
}
.lnr-sad:before {
content: "\e855";
}
.lnr-neutral:before {
content: "\e856";
}
.lnr-mustache:before {
content: "\e857";
}
.lnr-alarm:before {
content: "\e858";
}
.lnr-bullhorn:before {
content: "\e859";
}
.lnr-volume-high:before {
content: "\e85a";
}
.lnr-volume-medium:before {
content: "\e85b";
}
.lnr-volume-low:before {
content: "\e85c";
}
.lnr-volume:before {
content: "\e85d";
}
.lnr-mic:before {
content: "\e85e";
}
.lnr-hourglass:before {
content: "\e85f";
}
.lnr-undo:before {
content: "\e860";
}
.lnr-redo:before {
content: "\e861";
}
.lnr-sync:before {
content: "\e862";
}
.lnr-history:before {
content: "\e863";
}
.lnr-clock:before {
content: "\e864";
}
.lnr-download:before {
content: "\e865";
}
.lnr-upload:before {
content: "\e866";
}
.lnr-enter-down:before {
content: "\e867";
}
.lnr-exit-up:before {
content: "\e868";
}
.lnr-bug:before {
content: "\e869";
}
.lnr-code:before {
content: "\e86a";
}
.lnr-link:before {
content: "\e86b";
}
.lnr-unlink:before {
content: "\e86c";
}
.lnr-thumbs-up:before {
content: "\e86d";
}
.lnr-thumbs-down:before {
content: "\e86e";
}
.lnr-magnifier:before {
content: "\e86f";
}
.lnr-cross:before {
content: "\e870";
}
.lnr-menu:before {
content: "\e871";
}
.lnr-list:before {
content: "\e872";
}
.lnr-chevron-up:before {
content: "\e873";
}
.lnr-chevron-down:before {
content: "\e874";
}
.lnr-chevron-left:before {
content: "\e875";
}
.lnr-chevron-right:before {
content: "\e876";
}
.lnr-arrow-up:before {
content: "\e877";
}
.lnr-arrow-down:before {
content: "\e878";
}
.lnr-arrow-left:before {
content: "\e879";
}
.lnr-arrow-right:before {
content: "\e87a";
}
.lnr-move:before {
content: "\e87b";
}
.lnr-warning:before {
content: "\e87c";
}
.lnr-question-circle:before {
content: "\e87d";
}
.lnr-menu-circle:before {
content: "\e87e";
}
.lnr-checkmark-circle:before {
content: "\e87f";
}
.lnr-cross-circle:before {
content: "\e880";
}
.lnr-plus-circle:before {
content: "\e881";
}
.lnr-circle-minus:before {
content: "\e882";
}
.lnr-arrow-up-circle:before {
content: "\e883";
}
.lnr-arrow-down-circle:before {
content: "\e884";
}
.lnr-arrow-left-circle:before {
content: "\e885";
}
.lnr-arrow-right-circle:before {
content: "\e886";
}
.lnr-chevron-up-circle:before {
content: "\e887";
}
.lnr-chevron-down-circle:before {
content: "\e888";
}
.lnr-chevron-left-circle:before {
content: "\e889";
}
.lnr-chevron-right-circle:before {
content: "\e88a";
}
.lnr-crop:before {
content: "\e88b";
}
.lnr-frame-expand:before {
content: "\e88c";
}
.lnr-frame-contract:before {
content: "\e88d";
}
.lnr-layers:before {
content: "\e88e";
}
.lnr-funnel:before {
content: "\e88f";
}
.lnr-text-format:before {
content: "\e890";
}
.lnr-text-format-remove:before {
content: "\e891";
}
.lnr-text-size:before {
content: "\e892";
}
.lnr-bold:before {
content: "\e893";
}
.lnr-italic:before {
content: "\e894";
}
.lnr-underline:before {
content: "\e895";
}
.lnr-strikethrough:before {
content: "\e896";
}
.lnr-highlight:before {
content: "\e897";
}
.lnr-text-align-left:before {
content: "\e898";
}
.lnr-text-align-center:before {
content: "\e899";
}
.lnr-text-align-right:before {
content: "\e89a";
}
.lnr-text-align-justify:before {
content: "\e89b";
}
.lnr-line-spacing:before {
content: "\e89c";
}
.lnr-indent-increase:before {
content: "\e89d";
}
.lnr-indent-decrease:before {
content: "\e89e";
}
.lnr-pilcrow:before {
content: "\e89f";
}
.lnr-direction-ltr:before {
content: "\e8a0";
}
.lnr-direction-rtl:before {
content: "\e8a1";
}
.lnr-page-break:before {
content: "\e8a2";
}
.lnr-sort-alpha-asc:before {
content: "\e8a3";
}
.lnr-sort-amount-asc:before {
content: "\e8a4";
}
.lnr-hand:before {
content: "\e8a5";
}
.lnr-pointer-up:before {
content: "\e8a6";
}
.lnr-pointer-right:before {
content: "\e8a7";
}
.lnr-pointer-down:before {
content: "\e8a8";
}
.lnr-pointer-left:before {
content: "\e8a9";
}

612
src/main/resources/static/files/assets/css/pcoded-horizontal.min.css

@ -0,0 +1,612 @@
.pcoded-logo {
font-size: 13px;
font-weight: 600;
line-height: 35px; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item.pcoded-search-item > li.pcoded-hasmenu > a:after {
display: none; }
a:focus {
outline: none;
outline: 0 auto -webkit-focus-ring-color;
outline-offset: 0; }
.pcoded .pcoded-container {
position: relative;
background: #d5dae6; }
.pcoded .pcoded-header {
display: block;
height: 35px;
background: #e9ecf3;
color: #414141;
width: 100%;
z-index: 1024; }
.pcoded .pcoded-navbar {
display: block;
height: 50px;
width: 100%;
z-index: 1023;
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1); }
.pcoded-main-container {
display: block;
background: #f3f3f3; }
.pcoded .pcoded-content {
position: relative;
display: block; }
.pcoded .pcoded-inner-content {
padding: 10px; }
.pcoded .pcoded-header .pcoded-left-header {
float: left;
min-width: 230px;
padding: 0 10px; }
.pcoded .pcoded-header .pcoded-right-header {
padding: 0 10px; }
.pcoded .pcoded-header .pcoded-right-header .pcoded-rl-header {
float: left; }
.pcoded .pcoded-header .pcoded-right-header .pcoded-rr-header {
text-align: right; }
.pcoded .pcoded-brand {
float: left; }
.pcoded[pcoded-device-type="desktop"] .navbar-logo .mobile-menu,
.pcoded[pcoded-device-type="desktop"] .pcoded-brand .menu-toggle, .pcoded[pcoded-device-type="tablet"] .navbar-logo .mobile-menu,
.pcoded[pcoded-device-type="tablet"] .pcoded-brand .menu-toggle {
display: none; }
.pcoded[pcoded-device-type="desktop"] .p-chat-user,
.pcoded[pcoded-device-type="desktop"] .showChat_inner, .pcoded[pcoded-device-type="tablet"] .p-chat-user,
.pcoded[pcoded-device-type="tablet"] .showChat_inner {
top: 105px; }
.pcoded .pcoded-brand .menu-toggle a {
text-decoration: none; }
.pcoded .pcoded-brand .menu-toggle a i {
font-size: 18px; }
.pcoded .pcoded-navbar .pcoded-item {
display: block;
list-style: none;
margin: 0;
padding: 0;
position: relative; }
.pcoded .pcoded-navbar .pcoded-item > li {
display: block;
list-style: outside none none;
margin: 0;
padding: 0;
position: relative; }
.pcoded .pcoded-navbar .pcoded-item > li > a {
display: block;
font-size: 13px;
padding: 9px 20px;
text-decoration: none;
position: relative;
line-height: 40px;
color: #000; }
@media only screen and (max-width: 1200px) {
.pcoded .pcoded-navbar .pcoded-item > li > a {
padding: 9px 5px; } }
.pcoded .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a {
line-height: 2.3; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu {
list-style: outside none none;
margin: 0;
padding: 0;
box-shadow: 0 1px 7px -1px rgba(0, 0, 0, 0.4); }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li {
display: block;
list-style: outside none none;
margin: 0;
padding: 0;
position: relative; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li > a {
display: block;
font-size: 14px;
padding: 5px 10px;
text-decoration: none;
position: relative; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li > a .pcoded-mtext {
transition: all 0s ease-in; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li > a:before {
font-family: 'themify';
font-size: 12px; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li:hover a:before {
font-family: 'themify';
font-size: 12px; }
.pcoded .pcoded-navbar .pcoded-item > li > a > .pcoded-micon {
font-size: 14px;
padding: 0; }
.pcoded .pcoded-navbar .pcoded-item.pcoded-search-item > li > a > .pcoded-micon {
padding: 0 5px 0 7px; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li > a .pcoded-micon {
font-size: 13px;
padding-right: 5px; }
.pcoded[horizontal-layout="wide"] .pcoded-container {
width: 100%;
display: block; }
.pcoded[horizontal-layout="box"] .pcoded-container {
display: block;
margin: 0 auto;
max-width: 1200px;
width: 100%; }
.pcoded[theme-layout="horizontal"][horizontal-layout="box"] .pcoded-header[pcoded-header-position="fixed"] {
max-width: 1200px; }
.pcoded[theme-layout="horizontal"][horizontal-layout="box"] .pcoded-navbar.stickybar, .pcoded[theme-layout="horizontal"][horizontal-layout="box"] .pcoded-navbar[pcoded-navbar-position="fixed"] {
max-width: 1200px; }
.pcoded[horizontal-layout="widebox"] .pcoded-container {
width: 100%; }
.pcoded[horizontal-layout="widebox"] .pcoded-content .pcoded-wrapper,
.pcoded[horizontal-layout="widebox"] .pcoded-header .pcoded-wrapper,
.pcoded[horizontal-layout="widebox"] .pcoded-navbar .pcoded-wrapper {
display: block;
margin: 0 auto;
max-width: 1200px;
width: 100%; }
.pcoded[horizontal-layout="wide"][horizontal-placement="bottom"] .pcoded-navbar {
width: 100%; }
.pcoded[horizontal-layout="box"][horizontal-placement="bottom"] .pcoded-navbar {
margin: 0 auto;
max-width: 1200px;
width: 100%; }
.pcoded[horizontal-layout="widebox"][horizontal-placement="bottom"] .pcoded-navbar {
width: 100%; }
.pcoded .pcoded-navbar .pcoded-item > li {
float: left; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu {
position: absolute;
min-width: 200px;
z-index: 1;
border-top-style: solid;
border-top-width: 1px; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu li > a {
font-size: 14px;
font-weight: 500;
line-height: 34px;
text-align: left; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-submenu .pcoded-submenu {
position: absolute;
min-width: 250px;
z-index: 1;
left: 100%;
top: -1px; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu {
opacity: 0;
visibility: hidden;
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
transition: transform 0.3s, opacity 0.3s;
transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
transform: rotateX(-90deg);
-webkit-transform: rotateX(-90deg); }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item .pcoded-hasmenu.pcoded-trigger > .pcoded-submenu {
opacity: 1;
visibility: visible;
transform: rotateX(0deg);
-webkit-transform: rotateX(0deg); }
.pcoded[theme-layout="horizontal"] .pcoded-navbar[pcoded-navbar-position="relative"] {
position: relative; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar[pcoded-navbar-position="fixed"] {
position: fixed; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar[pcoded-navbar-position="absolute"] {
position: absolute; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu > a:after {
font-family: "themify";
font-size: 12px; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: "\e649"; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: "\e64b"; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: "\e661"; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: "\e663"; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: '\e61a'; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar li.pcoded-hasmenu{
content: '\e622'; }
.pcoded[theme-layout="horizontal"] .pcoded-header[pcoded-header-position="relative"] {
position: relative; }
.pcoded[theme-layout="horizontal"] .pcoded-header[pcoded-header-position="fixed"] {
position: fixed;
top: 0; }
.pcoded[theme-layout="horizontal"] .pcoded-header[pcoded-header-position="absolute"] {
position: absolute; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-brand.pcoded-left-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-left-item.pcoded-left-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-right-item.pcoded-left-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-search-item.pcoded-left-align {
float: left; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-brand.pcoded-right-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-left-item.pcoded-right-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-right-item.pcoded-right-align,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-search-item.pcoded-right-align {
float: right; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="dashed"] > li > a {
border-right-style: dashed; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="dotted"] > li > a {
border-right-style: dotted; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="solid"] > li > a {
border-right-style: solid; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="dashed"] .pcoded-hasmenu .pcoded-submenu li > a {
border-bottom-style: dashed; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="dotted"] .pcoded-hasmenu .pcoded-submenu li > a {
border-bottom-style: dotted; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"][item-border-style="solid"] .pcoded-hasmenu .pcoded-submenu li > a {
border-bottom-style: solid; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="false"] > li > a {
border-right-width: 0; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[item-border="true"] > li > a {
border-right-width: 1px; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[subitem-border="false"] .pcoded-hasmenu .pcoded-submenu li > a {
border-bottom-width: 0; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[subitem-border="true"] .pcoded-hasmenu .pcoded-submenu li > a {
border-bottom-width: 1px; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-submenu li.pcoded-hasmenu > a:after {
margin-left: 3px;
position: relative;
float: right;
top: 1px; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.active > a:after, .pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger > a:after,
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a:after {
font-style: normal;
margin-left: 3px;
padding-left: 5px;
position: relative; }
@-moz-document url-prefix() {
.theme-option select {
-webkit-appearance: none !important;
/*Removes default chrome and safari style*/
-moz-appearance: none !important;
/* Removes Default Firefox style*/
background: #FFF url("../images/select-arrow.png") no-repeat 95% center !important;
width: 100% !important;
/*Width of select dropdown to give space for arrow image*/
text-indent: 0.01px;
/* Removes default arrow from firefox*/
text-overflow: "";
/*Removes default arrow from firefox*/
/*My custom style for fonts*/
color: #555;
border-radius: 4px;
font: inherit;
line-height: 1.5em;
border: 1px solid #ddd !important; } }
li.edge > ul {
left: auto !important;
right: 100%; }
.stickybar {
height: 40px;
position: fixed;
top: 0;
width: 100% !important; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.edge.pcoded-trigger > .pcoded-submenu {
right: 0; }
.pcoded[horizontal-layout="box"][horizontal-placement="bottom"] .pcoded-navbar, .pcoded[horizontal-layout="wide"][horizontal-placement="bottom"] .pcoded-navbar, .pcoded[horizontal-layout="widebox"][horizontal-placement="bottom"] .pcoded-navbar {
bottom: 0;
position: fixed; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu {
bottom: 40px; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item .pcoded-submenu .pcoded-submenu {
bottom: 0;
top: auto; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu {
border-bottom-style: solid;
border-bottom-width: 1px;
border-top-width: 0; }
.pcoded[horizontal-placement="top"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger > a > .pcoded-mcaret {
background: transparent none repeat scroll 0 0;
border-bottom-style: solid;
border-bottom-width: 7px;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
bottom: 0;
display: block;
float: right;
height: 0;
margin: 0 auto;
position: absolute;
right: 50%;
width: 0; }
.pcoded[theme-layout="horizontal"][horizontal-placement="top"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger.active .pcoded-submenu {
border-top-style: solid;
border-top-width: 1px; }
.pcoded[theme-layout="horizontal"][horizontal-placement="top"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger.active > a > .pcoded-mcaret {
border-bottom-width: 7px;
border-bottom-style: solid; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger > a > .pcoded-mcaret {
background: transparent none repeat scroll 0 0;
border-top-style: solid;
border-top-width: 7px;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
top: 0;
display: block;
float: right;
height: 0;
margin: 0 auto;
position: absolute;
right: 50%;
width: 0; }
.pcoded[theme-layout="horizontal"][horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger.active > a > .pcoded-mcaret {
border-top-width: 7px;
border-top-style: solid; }
.pcoded .pcoded-navbar .pcoded-item[subitem-border="true"] .pcoded-hasmenu .pcoded-submenu > li:last-child > a {
border-bottom-color: transparent !important; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li > a {
padding: 9px; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li > a > .pcoded-micon {
display: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item.pcoded-search-item > li > a > .pcoded-micon {
display: block; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-brand.pcoded-left-align {
/* display: none; */ }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar.isCentered, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar.isCentered {
text-align: center; }
.pcoded[pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu, .pcoded[pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu {
text-align: left; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar.isCentered .pcoded-brand {
display: inline-block;
float: none;
float: unset;
margin-top: 0;
position: relative;
top: -13px; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar.isCentered .pcoded-left-item,
.pcoded[theme-layout="horizontal"] .pcoded-navbar.isCentered .pcoded-right-item,
.pcoded[theme-layout="horizontal"] .pcoded-navbar.isCentered .pcoded-search-item {
display: inline-block; }
.pcoded .pcoded-navbar.isCentered .pcoded-item > li {
display: inline-block; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-inner-navbar, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-inner-navbar {
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item, .pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop {
position: static;
position: static; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu {
min-width: 200px;
width: 100%;
left: 0;
right: 0;
top: auto; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li {
display: inline-block; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li {
position: static;
position: static; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"].pcoded-navbar .pcoded-item > li.fullwidth-drop .pcoded-submenu .pcoded-submenu, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"].pcoded-navbar .pcoded-item > li.fullwidth-drop .pcoded-submenu .pcoded-submenu {
top: 100%;
left: 0; }
.pcoded .pcoded-navbar .pcoded-item[subitem-border="true"] .pcoded-hasmenu.fullwidth-drop .pcoded-submenu li > a {
border-bottom-width: 0; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.fullwidth-drop > .pcoded-submenu {
bottom: 100%; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.fullwidth-drop > .pcoded-submenu > .pcoded-hasmenu > .pcoded-submenu {
bottom: 100%; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu.fullwidth-drop .pcoded-submenu li > a {
display: inline-block; }
.pcoded-inner-navbar {
position: relative; }
.pcoded .pcoded-navbar .pcoded-item {
position: static; }
.pcoded .pcoded-navbar .pcoded-item > li.megamenu-half {
position: static; }
.pcoded .pcoded-navbar .pcoded-item > li.megamenu-half.pcoded-hasmenu .pcoded-submenu {
left: auto;
min-width: 200px;
right: auto;
width: 50%; }
.pcoded .megamenu-half .pcoded-submenu {
padding: 10px !important;
color: #b4bcc8; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.megamenu-half > .pcoded-submenu {
bottom: 100%; }
.pcoded-inner-navbar {
position: relative; }
.pcoded .pcoded-navbar .pcoded-item {
position: static; }
.pcoded .pcoded-navbar .pcoded-item > li.megamenu-full {
position: static; }
.pcoded .pcoded-navbar .pcoded-item > li.megamenu-full.pcoded-hasmenu .pcoded-submenu {
left: 0;
min-width: 200px;
right: 0;
width: 100%; }
.pcoded .megamenu-full .pcoded-submenu {
padding: 10px !important;
color: #b4bcc8; }
.pcoded[horizontal-placement="bottom"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.megamenu-full > .pcoded-submenu {
bottom: 100%; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu ul {
margin: 0;
padding: 0; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu ul li {
display: block;
list-style: outside none none; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu ul li a {
border-bottom-width: 0 !important;
font-size: 13px;
font-weight: 500;
line-height: 23px;
padding: 0;
text-decoration: none; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu ul li a:hover {
text-decoration: none;
background: transparent !important;
color: #FFF; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu ul li.title {
display: block;
font-size: 13px;
font-weight: 600;
padding: 10px 0;
margin-bottom: 10px;
border-bottom-width: 1px;
border-bottom-style: solid; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu .pcoded-submenu.pcoded-megamenu .pcoded-gridbox {
border-radius: 2px;
font-size: 10px;
margin-bottom: 11px;
min-height: 23px;
padding-top: 5px;
text-align: center; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-header .pcoded-rl-header {
display: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-header .pcoded-right-header .pcoded-rr-header {
text-align: center; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcodedbrand-xs, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcodedbrand-xs {
height: 40px;
width: 100%;
padding: 0;
margin: 0;
position: relative;
display: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcodedbrand-xs {
height: 40px;
width: 100%;
padding: 0;
margin: 0;
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcodedbrand-xs .pcoded-brand a {
font-family: lato;
font-size: 20px !important;
font-weight: 700;
line-height: 40px;
padding: 0 10px;
text-decoration: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcodedbrand-xs .menu-toggle {
float: right; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar {
height: auto;
padding: 10px 10px 0;
position: absolute;
opacity: 0;
visibility: hidden;
transform-origin: 50% 50%;
transition: transform 0.3s, opacity 0.3s;
transform-style: preserve-3d;
transform: rotateX(-90deg); }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-inner-navbar {
height: auto;
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-brand a {
display: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar.show-menu {
opacity: 1;
visibility: visible;
transform: rotateX(0deg); }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-brand a {
font-family: lato;
font-size: 20px !important;
font-weight: 700;
line-height: 40px;
padding: 0 10px;
text-decoration: none; }
.pcoded[pcoded-device-type="desktop"] .pcoded-navbar .pcoded-brand .menu-toggle, .pcoded[pcoded-device-type="phone"] .pcoded-navbar .pcoded-brand .menu-toggle, .pcoded[pcoded-device-type="tablet"] .pcoded-navbar .pcoded-brand .menu-toggle {
display: none; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-brand {
float: unset !important;
float: none !important; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-brand .menu-toggle {
float: right; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item {
display: block;
float: none !important;
position: relative;
width: 100%;
z-index: 1; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > li {
float: none;
display: block;
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item[item-border="true"] > li > a {
border-right-width: 0;
border-bottom-width: 1px;
border-bottom-style: solid; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item[item-border="true"] > li.pcoded-trigger > a {
border-bottom-width: 0; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu {
min-width: 100%;
z-index: 2; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu.pcoded-trigger > .pcoded-submenu {
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu > .pcoded-hasmenu > .pcoded-submenu {
left: 0;
min-width: 100%;
right: 0;
top: 0;
z-index: 1; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu > .pcoded-hasmenu.pcoded-trigger > .pcoded-submenu > .pcoded-hasmenu.pcoded-trigger > .pcoded-submenu,
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu > .pcoded-hasmenu.pcoded-trigger > .pcoded-submenu {
position: relative; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > .pcoded-hasmenu > .pcoded-submenu > .pcoded-hasmenu > .pcoded-submenu > .pcoded-hasmenu > .pcoded-submenu {
left: 0;
min-width: 100%;
right: 0;
top: 0;
z-index: 1; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"][horizontal-placement="bottom"] .pcoded-navbar {
bottom: auto; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.active > a:after, .pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu.pcoded-trigger > a:after,
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a:after {
position: absolute;
right: 13px; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="phone"] .pcoded-header, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-header {
height: auto; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-submenu > li a .pcoded-badge {
top: 13px;
right: 20px; }
.pcoded-rr-header .btn {
font-size: 12px;
font-weight: 600;
margin-left: 5px; }
.pcoded-main-container {
clear: both; }
.pcoded-address span {
float: left; }
.pcoded .pcoded-navbar .pcoded-item .pcoded-hasmenu.fullwidth-drop .pcoded-submenu li > a {
display: list-item; }
.pcoded[theme-layout="horizontal"] .pcoded-navbar .pcoded-item[subitem-border="true"] .pcoded-hasmenu.fullwidth-drop .pcoded-submenu li > a {
border-bottom-width: 0; }
.pcoded[theme-layout="horizontal"][pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li, .pcoded[theme-layout="horizontal"][pcoded-device-type="tablet"] .pcoded-navbar .pcoded-item > li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li {
display: block;
float: left; }
.pcoded .pcoded-navbar .pcoded-item li.fullwidth-drop.pcoded-hasmenu .pcoded-submenu li.pcoded-hasmenu > a:after {
float: none; }
.pcoded .pcoded-header[header-theme="theme1"] {
background: #fff; }
.pcoded .pcoded-header[header-theme="theme2"] {
background: #FF7588; }
.pcoded .pcoded-header[header-theme="theme3"] {
background: #00bcd4; }
.pcoded .pcoded-header[header-theme="theme4"] {
background: #16D39A; }
.pcoded .pcoded-header[header-theme="theme5"] {
background: #2196F3; }
.pcoded .pcoded-header[header-theme="theme6"] {
background: rgb(21,69,93) }
body.horizontal-icon .pcoded .main-body, body.horizontal-icon-fixed .pcoded .main-body {
margin-top: 60px; }
body.horizontal-icon .pcoded .pcoded-navbar, body.horizontal-icon-fixed .pcoded .pcoded-navbar {
height: 70px; }
body.horizontal-icon .pcoded .pcoded-navbar .pcoded-item > li > a > .pcoded-micon, body.horizontal-icon-fixed .pcoded .pcoded-navbar .pcoded-item > li > a > .pcoded-micon {
display: block;
text-align: center;
margin: 0 auto; }
body.horizontal-icon .pcoded .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a, body.horizontal-icon-fixed .pcoded .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a {
line-height: 30px; }
body.horizontal-icon .pcoded[pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a, body.horizontal-icon-fixed .pcoded[pcoded-device-type="desktop"] .pcoded-navbar .pcoded-item > li.pcoded-hasmenu > a {
height: 70px; }
/*# sourceMappingURL=pcoded-horizontal.min.css.map */

25796
src/main/resources/static/files/assets/css/style.css
File diff suppressed because it is too large
View File

BIN
src/main/resources/static/files/assets/fonts/Linearicons-Free-1.hxd

BIN
src/main/resources/static/files/assets/fonts/Linearicons-Free.hxd

199
src/main/resources/static/files/assets/fonts/Linearicons-Free.svg

@ -0,0 +1,199 @@
<?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>
<json>
{
"fontFamily": "Linearicons-Free",
"majorVersion": 1,
"minorVersion": 0,
"description": "Designed by Perxis (https://perxis.com).\nFont generated by IcoMoon.",
"copyright": "Copyright © 2015 Perxis.com. All Rights Reserved.",
"designerURL": "https://perxis.com",
"license": "https://linearicons.com/free/license",
"fontURL": "https://linearicons.com",
"licenseURL": "https://linearicons.com/free/license",
"version": "Version 1.0",
"fontId": "Linearicons-Free",
"psName": "Linearicons-Free",
"subFamily": "Regular",
"fullName": "Linearicons-Free"
}
</json>
</metadata>
<defs>
<font id="Linearicons-Free" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="972.8" descent="-51.2" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="409.6" />
<glyph unicode="&#xe800;" d="M1017.382 349.974l-452.050 499.634c-14.051 15.533-32.992 24.086-53.333 24.086-0.002 0 0 0 0 0-20.339 0-39.282-8.555-53.334-24.086l-452.050-499.634c-9.485-10.485-8.675-26.674 1.808-36.158 4.899-4.432 11.043-6.616 17.168-6.616 6.982 0 13.938 2.838 18.992 8.426l109.016 120.491v-410.517c0-42.347 34.453-76.8 76.8-76.8h563.2c42.347 0 76.8 34.453 76.8 76.8v410.517l109.018-120.493c9.485-10.483 25.674-11.296 36.158-1.808 10.483 9.485 11.293 25.675 1.806 36.158zM614.4 0h-204.8v230.4c0 14.115 11.485 25.6 25.6 25.6h153.6c14.115 0 25.6-11.485 25.6-25.6v-230.4zM819.2 25.6c0-14.115-11.485-25.6-25.6-25.6h-128v230.4c0 42.349-34.451 76.8-76.8 76.8h-153.6c-42.347 0-76.8-34.451-76.8-76.8v-230.4h-128c-14.115 0-25.6 11.485-25.6 25.6v467.106l291.832 322.552c4.222 4.667 9.68 7.237 15.368 7.237s11.146-2.57 15.366-7.235l291.834-322.552v-467.107z" data-tags="home, building, house" />
<glyph unicode="&#xe801;" d="M716.8 665.6h51.2v-51.2h-51.2v51.2zM716.8 563.2h51.2v-51.2h-51.2v51.2zM716.8 460.8h51.2v-51.2h-51.2v51.2zM716.8 358.4h51.2v-51.2h-51.2v51.2zM716.8 153.6h51.2v-51.2h-51.2v51.2zM716.8 256h51.2v-51.2h-51.2v51.2zM307.2 665.6h51.2v-51.2h-51.2v51.2zM307.2 563.2h51.2v-51.2h-51.2v51.2zM307.2 460.8h51.2v-51.2h-51.2v51.2zM307.2 358.4h51.2v-51.2h-51.2v51.2zM307.2 153.6h51.2v-51.2h-51.2v51.2zM307.2 256h51.2v-51.2h-51.2v51.2zM204.8 665.6h51.2v-51.2h-51.2v51.2zM204.8 563.2h51.2v-51.2h-51.2v51.2zM204.8 460.8h51.2v-51.2h-51.2v51.2zM204.8 358.4h51.2v-51.2h-51.2v51.2zM204.8 153.6h51.2v-51.2h-51.2v51.2zM204.8 256h51.2v-51.2h-51.2v51.2zM409.6 665.6h51.2v-51.2h-51.2v51.2zM409.6 563.2h51.2v-51.2h-51.2v51.2zM409.6 460.8h51.2v-51.2h-51.2v51.2zM409.6 358.4h51.2v-51.2h-51.2v51.2zM409.6 153.6h51.2v-51.2h-51.2v51.2zM409.6 256h51.2v-51.2h-51.2v51.2zM947.2 0h-25.6v691.2c0 39.058-29.024 79.326-66.077 91.677l-241.123 80.374v83.949c0 8.093-3.827 15.709-10.318 20.539-6.493 4.829-14.888 6.306-22.637 3.981l-462.96-138.886c-37.73-11.32-67.285-51.043-67.285-90.434v-742.4h-25.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h921.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6zM839.333 734.304c16.259-5.419 31.067-25.965 31.067-43.104v-691.2h-256v809.282l224.933-74.978zM102.4 742.4c0 16.827 14.678 36.557 30.797 41.392l430.003 129.002v-912.794h-460.8v742.4z" data-tags="apartment, building, city, business, work, office" />
<glyph unicode="&#xe802;" d="M978.101 926.902c-28.77 28.768-67.018 44.611-107.701 44.611-40.685 0-78.933-15.843-107.701-44.611l-652.8-652.8c-2.645-2.645-4.678-5.837-5.957-9.354l-102.4-281.6c-3.4-9.347-1.077-19.818 5.957-26.85 4.885-4.888 11.43-7.499 18.104-7.499 2.933 0 5.891 0.502 8.744 1.541l281.6 102.4c3.515 1.28 6.709 3.312 9.354 5.958l652.8 652.8c28.768 28.768 44.613 67.018 44.613 107.702s-15.843 78.933-44.613 107.701zM293.114 98.917l-224.709-81.71 81.712 224.707 566.683 566.683 142.997-142.997-566.683-566.683zM941.899 747.702l-45.899-45.899-142.997 142.997 45.899 45.899c19.098 19.098 44.49 29.614 71.498 29.614s52.4-10.518 71.499-29.616c19.098-19.098 29.616-44.49 29.616-71.498s-10.52-52.4-29.616-71.498z" data-tags="pencil, write, edit" />
<glyph unicode="&#xe803;" d="M588.8 614.4c-14.139 0-25.6 11.462-25.6 25.6 0 70.579-57.421 128-128 128-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6c70.579 0 128 57.421 128 128 0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-70.579 57.421-128 128-128 14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6c-70.579 0-128-57.421-128-128 0-14.138-11.461-25.6-25.6-25.6zM527.426 793.6c25.11-15.136 46.238-36.264 61.374-61.376 15.136 25.112 36.264 46.24 61.376 61.376-25.112 15.136-46.24 36.264-61.376 61.376-15.136-25.112-36.264-46.24-61.374-61.376zM76.8 460.8c-14.138 0-25.6 11.462-25.6 25.6 0 14.115-11.485 25.6-25.6 25.6-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6c14.115 0 25.6 11.485 25.6 25.6 0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-14.115 11.485-25.6 25.6-25.6 14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-14.115 0-25.6-11.485-25.6-25.6 0-14.138-11.462-25.6-25.6-25.6zM929.101 156.704l-541.995 541.994c-14.466 14.466-33.752 22.432-54.306 22.432s-39.84-7.966-54.306-22.432l-29.992-29.992c-14.466-14.466-22.432-33.752-22.432-54.306s7.966-39.84 22.432-54.306l541.994-541.992c14.464-14.466 33.75-22.434 54.304-22.434s39.84 7.965 54.306 22.434l29.994 29.992c14.466 14.464 22.432 33.752 22.432 54.304s-7.965 39.842-22.43 54.306zM284.706 632.502l29.992 29.992c4.795 4.795 11.224 7.435 18.102 7.435s13.307-2.64 18.102-7.435l73.691-73.693-66.197-66.197-73.691 73.691c-9.982 9.984-9.982 26.224 0 36.206zM892.894 84.298l-29.994-29.992c-4.794-4.794-11.224-7.434-18.099-7.434s-13.306 2.64-18.099 7.434l-432.102 432.099 66.197 66.195 432.098-432.099c9.981-9.981 9.981-26.222 0-36.203zM179.2 716.8c-14.138 0-25.6 11.462-25.6 25.6 0 42.347-34.453 76.8-76.8 76.8-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6c42.347 0 76.8 34.453 76.8 76.8 0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8 14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6c-42.347 0-76.8-34.453-76.8-76.8 0-14.138-11.462-25.6-25.6-25.6zM153.52 844.8c9.725-7.304 18.376-15.957 25.68-25.68 7.304 9.725 15.957 18.376 25.68 25.68-9.725 7.304-18.376 15.957-25.68 25.68-7.304-9.723-15.957-18.376-25.68-25.68zM179.2 204.8c-14.138 0-25.6 11.461-25.6 25.6 0 42.347-34.453 76.8-76.8 76.8-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6c42.347 0 76.8 34.453 76.8 76.8 0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-42.347 34.453-76.8 76.8-76.8 14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6c-42.347 0-76.8-34.453-76.8-76.8 0-14.139-11.462-25.6-25.6-25.6zM153.52 332.8c9.725-7.302 18.376-15.957 25.68-25.68 7.304 9.723 15.957 18.374 25.68 25.68-9.725 7.302-18.376 15.957-25.68 25.68-7.304-9.723-15.957-18.378-25.68-25.68z" data-tags="magic-wand, tool, wizard" />
<glyph unicode="&#xe804;" d="M512-51.2c-82.619 0-159.64 33.55-216.877 94.472-58.013 61.747-89.962 146.387-89.963 238.328 0 150.678 66.979 258.499 137.893 372.653 54.789 88.197 111.443 179.397 144.248 299.683 3.038 11.138 13.155 18.864 24.699 18.864s21.661-7.726 24.699-18.864c32.813-120.317 89.56-211.536 144.438-299.752 71-114.131 138.062-221.933 138.062-372.584 0-92.131-31.749-176.763-89.395-238.301-57.085-60.938-134.437-94.499-217.805-94.499zM512.003 864.592c-34.509-90.949-80.589-165.125-125.459-237.355-69.856-112.451-130.184-209.566-130.184-345.635 0-160.539 109.902-281.6 255.64-281.6 145.944 0 256 121.061 256 281.6 0 136.027-60.4 233.117-130.338 345.539-44.95 72.254-91.112 146.461-125.659 237.451z" data-tags="drop, droplet, water, color, liquid" />
<glyph unicode="&#xe805;" d="M896 512h-35.328l-43.786 88.186c-4.325 8.707-13.208 14.214-22.93 14.214h-205.157c-14.139 0-25.6-11.462-25.6-25.6v-76.8h-62.021l-197.41 341.922c-7.069 12.243-22.725 16.443-34.97 9.37l-177.362-102.4c-12.245-7.069-16.44-22.726-9.37-34.97l204.8-354.723c4.742-8.213 13.346-12.805 22.194-12.805 4.342 0 8.746 1.107 12.776 3.434l138.962 80.23v-416.458c0-14.139 11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6v460.8c0 14.139-11.461 25.6-25.6 25.6zM870.4 204.8h-51.2v153.6h51.2v-153.6zM614.4 563.2h163.686l25.422-51.2h-189.109v51.2zM318.408 418.968l-179.2 310.382 133.021 76.8 179.2-310.382-133.021-76.8zM512 51.2v409.6h332.638c0.061 0 0.12-0.006 0.181-0.006 0.035 0 0.074 0.006 0.11 0.006h25.47v-51.2h-76.8c-14.139 0-25.6-11.461-25.6-25.6v-204.8c0-14.139 11.461-25.6 25.6-25.6h76.8v-102.4h-358.4zM793.6 665.6c-38.41 0-57.083 18.142-65.984 33.363-16.923 28.938-14.094 72.59 8.654 133.448 15.293 40.915 34.219 74.72 35.018 76.139 4.534 8.061 13.064 13.050 22.312 13.050s17.778-4.989 22.312-13.050c0.798-1.419 19.725-35.224 35.018-76.139 22.749-60.859 25.578-104.51 8.654-133.448-8.901-15.221-27.574-33.363-65.984-33.363zM793.602 837.656c-3.232-7.454-6.502-15.461-9.581-23.73-23.218-62.379-15.211-83.984-12.205-89.12 1.282-2.19 4.685-8.006 21.784-8.006 17.101 0 20.506 5.821 21.787 8.011 3.021 5.165 11.050 26.891-12.418 89.674-3.021 8.085-6.214 15.894-9.368 23.171z" data-tags="lighter, fire" />
<glyph unicode="&#xe806;" d="M873.333 291.693c-3.966 2.246-8.048 4.443-12.222 6.6 48.915 38.344 60.49 80.262 60.49 111.307 0 72.674-61.078 135.928-162.541 174.525 5.875 17.965 8.941 36.88 8.941 55.875 0 98.811-80.389 179.2-179.2 179.2-35.035 0-76.8 8.883-76.8 51.2 0 23.198 29.574 48.541 39.872 55.547 9.354 6.28 13.501 17.936 10.218 28.712s-13.224 18.141-24.49 18.141c-80.245 0-162.696-26.368-226.211-72.346-32.41-23.461-58.131-50.595-76.45-80.65-19.998-32.814-30.139-67.47-30.139-103.005 0-14.744 1.243-29.392 3.608-43.797-43.469-20.992-80.192-48.712-107.018-80.933-32.835-39.437-50.19-84.83-50.19-131.27 0-27.966 6.277-56.472 18.206-84.035-45.49-43.71-69.406-93.979-69.406-146.365 0-78.094 52.608-150.328 148.133-203.397 90.773-50.43 210.906-78.203 338.267-78.203 130.957 0 249.787 17.029 334.603 47.949 125.461 45.738 151.797 110.542 151.797 156.851 0 37.291-17.256 91.518-99.467 138.093zM803.466 44.851c-79.336-28.923-191.939-44.851-317.066-44.851-118.806 0-230.107 25.485-313.402 71.76-78.542 43.634-121.798 99.974-121.798 158.64 0 40.826 21.002 74.779 44.366 99.936 5.885-8.378 12.307-16.573 19.277-24.526 40.771-46.536 97.469-82.053 159.65-100.005 2.371-0.685 4.762-1.011 7.112-1.011 11.114 0 21.347 7.294 24.584 18.504 3.922 13.584-3.91 27.774-17.494 31.698-106.206 30.662-186.294 119.141-186.294 205.805 0 62.675 45.037 122.826 119.269 161.555 26.826-73.859 83.443-135.219 153.798-160.091 2.822-0.998 5.701-1.47 8.533-1.47 10.544 0 20.421 6.566 24.136 17.074 4.712 13.33-2.274 27.957-15.603 32.669-77.837 27.517-136.533 116.192-136.533 206.264 0 51.818 30.333 102.312 85.411 142.179 38.090 27.571 84.11 46.995 131.971 56.328-7.397-13.192-12.582-28.349-12.582-44.907 0-49.502 33.626-102.4 128-102.4 70.579 0 128-57.421 128-128 0-13.867-2.157-27.296-6.403-40.131-20.886 5.683-43.034 10.453-66.326 14.205-13.955 2.246-27.098-7.245-29.346-21.203-2.246-13.958 7.245-27.098 21.205-29.346 71.034-11.442 131.246-33.152 174.128-62.787 27.528-19.022 60.342-50.277 60.342-91.138 0-33.022-21.93-62.36-65.202-87.318-46.827 16.661-101.688 28.875-162.229 35.946-14.043 1.654-26.758-8.413-28.397-22.456s8.414-26.758 22.456-28.397c86.328-10.085 159.312-30.91 211.066-60.23 33.534-18.995 73.506-50.645 73.506-93.544 0-54.286-64.242-89.101-118.134-108.749z" data-tags="poop, toilet, feces, crap" />
<glyph unicode="&#xe807;" d="M486.4 205.178c-126.834 0-230.022 103.187-230.022 230.022s103.189 230.022 230.022 230.022 230.022-103.189 230.022-230.022-103.189-230.022-230.022-230.022zM486.4 614.022c-98.603 0-178.822-80.219-178.822-178.822s80.219-178.822 178.822-178.822 178.822 80.219 178.822 178.822-80.219 178.822-178.822 178.822zM486.4 716.8c-14.138 0-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.138-11.462-25.6-25.6-25.6zM486.4-51.2c-14.138 0-25.6 11.461-25.6 25.6v153.6c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.139-11.462-25.6-25.6-25.6zM179.2 409.6h-153.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h153.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM947.2 409.6h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h153.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM230.4 665.6c-6.552 0-13.102 2.499-18.101 7.498l-102.4 102.4c-9.998 9.998-9.998 26.206 0 36.203s26.206 9.998 36.203 0l102.4-102.4c9.998-9.998 9.998-26.206 0-36.203-4.998-4.998-11.55-7.498-18.102-7.498zM128 51.2c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c9.997 9.997 26.206 9.997 36.203 0s9.998-26.206 0-36.203l-102.4-102.4c-5-5-11.55-7.499-18.102-7.499zM844.8 51.2c-6.552 0-13.102 2.499-18.101 7.499l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l102.4-102.4c9.998-9.997 9.998-26.206 0-36.203-5-5-11.55-7.499-18.102-7.499zM742.4 665.6c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l102.4 102.4c9.997 9.998 26.206 9.998 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-102.4-102.4c-5-5-11.55-7.499-18.102-7.499z" data-tags="sun, brightness, weather" />
<glyph unicode="&#xe808;" d="M524.8-51.2c-140.179 0-271.968 54.589-371.090 153.71s-153.71 230.91-153.71 371.090c0 115.242 37 224.010 106.997 314.546 33.528 43.365 73.674 81.155 119.325 112.323 46.050 31.44 96.664 55.424 150.437 71.285 9.819 2.901 20.424-0.336 26.957-8.222s7.738-18.906 3.064-28.016c-33.006-64.339-48.379-125.702-48.379-193.115 0-239.97 195.23-435.2 435.2-435.2 67.414 0 128.776 15.371 193.115 48.378 9.107 4.674 20.13 3.469 28.016-3.064s11.12-17.134 8.224-26.957c-15.861-53.773-39.845-104.387-71.286-150.435-31.166-45.65-68.958-85.797-112.323-119.325-90.536-69.998-199.306-106.997-314.546-106.997zM336.397 902.904c-172.741-73.982-285.197-240.059-285.197-429.304 0-261.144 212.456-473.6 473.6-473.6 189.234 0 355.314 112.475 429.304 285.197-52.406-19.598-105.373-29.197-160.504-29.197-129.922 0-252.067 50.594-343.936 142.462-91.869 91.87-142.464 214.016-142.464 343.938 0 55.131 9.6 108.098 29.197 160.504z" data-tags="moon, night" />
<glyph unicode="&#xe809;" d="M819.52 153.6h-512.32c-169.39 0-307.2 137.81-307.2 307.2s137.81 307.2 307.2 307.2c82.034 0 160.589-32.917 218.104-90.866 4.483 9.947 10.048 19.469 16.643 28.403 28.87 39.112 75.093 62.462 123.653 62.462 84.696 0 153.6-68.904 153.6-153.6 0-17.957-3.118-35.523-9.096-52.051 3.126 0.142 6.267 0.211 9.416 0.211 112.75 0 204.48-91.73 204.48-204.48s-91.73-204.48-204.48-204.48zM307.2 716.8c-141.158 0-256-114.84-256-256s114.842-256 256-256h512.32c84.518 0 153.28 68.762 153.28 153.28s-68.762 153.28-153.28 153.28c-18.128 0-35.794-3.101-52.507-9.222-11.166-4.088-23.677 0.050-30.202 9.989s-5.349 23.064 2.842 31.685c18.28 19.235 28.347 44.307 28.347 70.589 0 56.464-45.936 102.4-102.4 102.4-32.858 0-62.912-15.187-82.456-41.667-11.798-15.986-18.669-34.707-19.867-54.138-0.67-10.85-8.117-20.096-18.574-23.054-10.462-2.966-21.648 1.006-27.906 9.891-5.632 7.997-11.73 15.701-18.126 22.902-48.587 54.696-118.374 86.066-191.47 86.066z" data-tags="cloud, weather" />
<glyph unicode="&#xe80a;" d="M819.52 153.6h-179.52c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h179.52c84.518 0 153.28 68.762 153.28 153.28s-68.762 153.28-153.28 153.28c-18.005 0-35.626-3.086-52.368-9.173-11.168-4.056-23.654 0.099-30.163 10.035-6.507 9.938-5.323 23.048 2.859 31.659 18.154 19.106 28.152 44.15 28.152 70.518 0 56.464-45.936 102.4-102.4 102.4-32.858 0-62.912-15.187-82.456-41.667-11.704-15.859-18.533-34.638-19.746-54.307-0.67-10.867-8.141-20.122-18.622-23.069s-21.682 1.059-27.915 9.984l-0.238 0.342c-5.49 7.795-11.549 15.443-17.952 22.653-48.587 54.694-118.374 86.064-191.47 86.064-141.158 0-256-114.842-256-256 0-141.16 114.842-256 256-256h128c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-128c-169.39 0-307.2 137.81-307.2 307.2s137.81 307.2 307.2 307.2c82.050 0 160.621-32.933 218.142-90.901 4.47 9.989 10.026 19.52 16.608 28.438 28.867 39.112 75.090 62.462 123.65 62.462 84.696 0 153.6-68.904 153.6-153.6 0-17.976-3.099-35.542-9.035-52.050 3.11 0.139 6.23 0.21 9.357 0.21 112.75 0 204.48-91.73 204.48-204.48-0.002-112.75-91.731-204.48-204.482-204.48zM658.101 350.901l-102.4 102.4c-9.997 9.997-26.206 9.997-36.203 0l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203s26.206-9.997 36.205 0l58.698 58.698v-194.195c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v194.195l58.699-58.698c4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.205 0 36.202z" data-tags="cloud-upload, cloud" />
<glyph unicode="&#xe80b;" d="M819.52 153.6h-128.32c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h128.32c84.518 0 153.28 68.762 153.28 153.28s-68.762 153.28-153.28 153.28c-18.005 0-35.626-3.086-52.368-9.173-11.168-4.056-23.654 0.099-30.163 10.035-6.507 9.938-5.323 23.048 2.859 31.659 18.154 19.106 28.152 44.15 28.152 70.518 0 56.464-45.936 102.4-102.4 102.4-32.858 0-62.912-15.187-82.456-41.667-11.704-15.859-18.533-34.638-19.746-54.307-0.67-10.867-8.141-20.122-18.622-23.069s-21.682 1.059-27.915 9.984l-0.238 0.342c-5.49 7.795-11.549 15.443-17.952 22.653-48.587 54.694-118.374 86.064-191.47 86.064-141.158 0-256-114.842-256-256 0-141.16 114.842-256 256-256h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8c-169.39 0-307.2 137.81-307.2 307.2s137.81 307.2 307.2 307.2c82.050 0 160.621-32.933 218.142-90.901 4.47 9.989 10.026 19.52 16.608 28.438 28.867 39.112 75.090 62.462 123.65 62.462 84.696 0 153.6-68.904 153.6-153.6 0-17.976-3.099-35.542-9.035-52.050 3.11 0.139 6.23 0.21 9.357 0.21 112.75 0 204.48-91.73 204.48-204.48-0.002-112.75-91.731-204.48-204.482-204.48zM658.101 299.701c-9.997 9.997-26.206 9.997-36.203 0l-58.698-58.696v194.195c0 14.139-11.461 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-194.195l-58.698 58.698c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203l102.4-102.4c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499l102.4 102.4c9.998 9.997 9.998 26.205 0 36.202z" data-tags="cloud-download, cloud" />
<glyph unicode="&#xe80c;" d="M819.52 562.56c-3.126 0-6.245-0.070-9.357-0.21 5.938 16.507 9.037 34.074 9.037 52.050 0 84.696-68.904 153.6-153.6 153.6-48.56 0-94.782-23.35-123.65-62.462-6.582-8.918-12.138-18.451-16.608-28.44-57.522 57.97-136.093 90.902-218.142 90.902-169.39 0-307.2-137.81-307.2-307.2s137.81-307.2 307.2-307.2h512.32c112.75 0 204.48 91.73 204.48 204.48s-91.73 204.48-204.48 204.48zM819.52 204.8h-512.32c-141.158 0-256 114.84-256 256 0 141.158 114.842 256 256 256 73.096 0 142.883-31.37 191.469-86.066 6.403-7.21 12.462-14.858 17.952-22.653l0.238-0.342c6.234-8.923 17.427-12.93 27.915-9.984 10.482 2.947 17.952 12.202 18.622 23.069 1.213 19.669 8.040 38.448 19.746 54.307 19.546 26.482 49.6 41.669 82.458 41.669 56.464 0 102.4-45.936 102.4-102.4 0-26.368-9.998-51.413-28.152-70.518-8.182-8.611-9.366-21.722-2.859-31.659s18.994-14.093 30.163-10.035c16.746 6.086 34.365 9.173 52.368 9.173 84.518 0 153.28-68.762 153.28-153.28s-68.762-153.28-153.28-153.28zM327.867 360.482c-6.749-1.381-13.702-2.082-20.667-2.082-56.464 0-102.4 45.936-102.4 102.4v14.997l7.499-7.499c4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.206 0 36.203l-51.2 51.2c-9.997 9.998-26.206 9.998-36.203 0l-51.2-51.2c-9.998-9.997-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l7.499 7.498v-14.997c0-84.696 68.904-153.6 153.6-153.6 10.405 0 20.81 1.050 30.928 3.118 13.853 2.834 22.784 16.362 19.95 30.213s-16.352 22.773-30.211 19.95zM468.299 453.301l-7.499-7.498v14.997c0 84.696-68.904 153.6-153.6 153.6-10.403 0-20.81-1.050-30.928-3.12-13.851-2.834-22.782-16.36-19.949-30.211s16.36-22.784 30.211-19.949c6.749 1.381 13.701 2.080 20.667 2.080 56.464 0 102.4-45.936 102.4-102.4v-14.997l-7.499 7.499c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l51.2-51.2c4.998-5 11.549-7.499 18.101-7.499s13.102 2.499 18.101 7.499l51.2 51.2c9.998 9.997 9.998 26.206 0 36.203-9.997 9.997-26.205 9.997-36.202-0.002z" data-tags="cloud-sync, cloud" />
<glyph unicode="&#xe80d;" d="M819.2 153.6h-486.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h486.4c84.696 0 153.6 68.904 153.6 153.6s-68.904 153.6-153.6 153.6c-17.576 0-34.797-2.936-51.181-8.726-11.101-3.922-23.451 0.234-29.922 10.075-6.469 9.84-5.389 22.827 2.616 31.464 17.595 18.986 27.286 43.699 27.286 69.587 0 56.464-45.936 102.4-102.4 102.4-53.997 0-98.888-42.162-102.198-95.986-0.667-10.858-8.125-20.107-18.594-23.064-10.474-2.96-21.664 1.027-27.912 9.93-47.957 68.326-126.347 109.12-209.696 109.12-141.158 0-256-114.84-256-256 0-7.77 0.352-15.611 1.045-23.301 1.269-14.082-9.117-26.525-23.198-27.795-14.080-1.278-26.525 9.117-27.795 23.198-0.83 9.211-1.251 18.598-1.251 27.898 0 169.39 137.81 307.2 307.2 307.2 82.483 0 160.917-33.286 218.149-90.933 24.093 53.746 78.16 90.933 140.251 90.933 84.696 0 153.6-68.904 153.6-153.6 0-17.71-3.024-35.056-8.818-51.386 2.931 0.123 5.87 0.186 8.818 0.186 112.926 0 204.8-91.874 204.8-204.8s-91.874-204.8-204.8-204.8zM179.2 179.2c-6.552 0-13.102 2.499-18.102 7.499l-102.4 102.4c-9.997 9.997-9.997 26.206 0 36.203s26.206 9.997 36.205 0l84.298-84.298 237.898 237.898c9.998 9.997 26.206 9.997 36.205 0 9.997-9.997 9.997-26.206 0-36.203l-256-256c-5-5-11.55-7.499-18.102-7.499z" data-tags="cloud-check, cloud" />
<glyph unicode="&#xe80e;" d="M925.040 890.421c-25.429 16.701-61.077 31.488-105.955 43.955-89.2 24.778-207.35 38.424-332.685 38.424s-243.485-13.646-332.686-38.424c-44.877-12.467-80.526-27.254-105.955-43.955-31.69-20.813-47.758-44.774-47.758-71.221v-614.4c0-26.446 16.069-50.41 47.758-71.222 25.429-16.701 61.077-31.488 105.955-43.954 89.202-24.779 207.352-38.424 332.686-38.424s243.485 13.645 332.686 38.426c44.878 12.466 80.526 27.253 105.955 43.954 31.69 20.811 47.758 44.774 47.758 71.221v614.4c0 26.446-16.069 50.408-47.76 71.221zM167.418 885.043c84.864 23.574 198.149 36.557 318.982 36.557s234.117-12.982 318.982-36.557c91.928-25.536 116.218-54.235 116.218-65.843s-24.29-40.307-116.218-65.843c-84.866-23.574-198.149-36.557-318.982-36.557s-234.118 12.982-318.982 36.557c-91.928 25.536-116.218 54.235-116.218 65.843s24.29 40.307 116.218 65.843zM805.382 138.957c-84.866-23.574-198.149-36.557-318.982-36.557s-234.117 12.982-318.982 36.557c-91.928 25.536-116.218 54.235-116.218 65.843v131.389c25.168-15.803 59.611-29.846 102.514-41.765 89.202-24.779 207.352-38.424 332.686-38.424s243.485 13.645 332.686 38.426c42.902 11.917 77.347 25.962 102.514 41.765v-131.39c0-11.608-24.29-40.307-116.218-65.843zM805.382 343.757c-84.866-23.574-198.149-36.557-318.982-36.557s-234.117 12.982-318.982 36.557c-91.928 25.536-116.218 54.235-116.218 65.843v131.39c25.168-15.803 59.611-29.848 102.514-41.766 89.202-24.778 207.352-38.424 332.686-38.424s243.485 13.646 332.686 38.424c42.902 11.918 77.347 25.963 102.514 41.766v-131.39c0-11.608-24.29-40.307-116.218-65.843zM805.382 548.557c-84.866-23.574-198.149-36.557-318.982-36.557s-234.117 12.982-318.982 36.557c-91.928 25.536-116.218 54.235-116.218 65.843v131.39c25.168-15.803 59.611-29.848 102.514-41.766 89.202-24.778 207.352-38.424 332.686-38.424s243.485 13.646 332.686 38.424c42.902 11.918 77.347 25.963 102.514 41.766v-131.39c0-11.608-24.29-40.307-116.218-65.843z" data-tags="database, storage" />
<glyph unicode="&#xe80f;" d="M742.4 563.2h-25.6v76.8c0 127.043-103.357 230.4-230.4 230.4s-230.4-103.357-230.4-230.4v-76.8h-25.6c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.347 34.453-76.8 76.8-76.8h512c42.347 0 76.8 34.453 76.8 76.8v409.6c0 42.347-34.453 76.8-76.8 76.8zM307.2 640c0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2v-76.8h-358.4v76.8zM768 76.8c0-14.115-11.485-25.6-25.6-25.6h-512c-14.115 0-25.6 11.485-25.6 25.6v409.6c0 14.115 11.485 25.6 25.6 25.6h512c14.115 0 25.6-11.485 25.6-25.6v-409.6z" data-tags="lock, privacy, encryption, security" />
<glyph unicode="&#xe810;" d="M390.71-35.955c-2.109 0-4.248 0.262-6.378 0.81-45.976 11.803-90.149 30.042-131.291 54.21-11.923 7.003-16.13 22.21-9.501 34.344 8.15 14.925 12.459 31.866 12.459 48.992 0 56.464-45.936 102.4-102.4 102.4-17.125 0-34.066-4.309-48.992-12.459-12.133-6.627-27.339-2.421-34.342 9.501-24.17 41.142-42.408 85.315-54.211 131.293-3.333 12.989 3.92 26.349 16.629 30.629 41.699 14.037 69.717 53.034 69.717 97.037s-28.018 83-69.718 97.040c-12.707 4.278-19.962 17.638-16.627 30.627 11.803 45.976 30.042 90.149 54.211 131.291 7.003 11.923 22.21 16.13 34.344 9.501 14.923-8.15 31.864-12.459 48.99-12.459 56.464 0 102.4 45.936 102.4 102.4 0 17.126-4.309 34.067-12.459 48.99-6.629 12.134-2.422 27.341 9.501 34.344 41.141 24.168 85.314 42.408 131.291 54.211 12.994 3.334 26.349-3.92 30.627-16.627 14.040-41.701 53.037-69.718 97.040-69.718s83 28.018 97.038 69.717c4.28 12.71 17.645 19.965 30.629 16.629 45.976-11.802 90.15-30.042 131.293-54.211 11.922-7.003 16.128-22.208 9.501-34.342-8.152-14.926-12.461-31.867-12.461-48.992 0-56.464 45.936-102.4 102.4-102.4 17.126 0 34.067 4.309 48.992 12.459 12.138 6.629 27.341 2.421 34.344-9.501 24.166-41.141 42.406-85.314 54.21-131.291 3.334-12.989-3.918-26.349-16.627-30.627-41.701-14.040-69.718-53.037-69.718-97.040s28.018-83 69.718-97.038c12.707-4.28 19.962-17.638 16.627-30.629-11.803-45.976-30.042-90.15-54.21-131.291-7.005-11.925-22.208-16.128-34.344-9.502-14.926 8.152-31.867 12.461-48.992 12.461-56.464 0-102.4-45.936-102.4-102.4 0-17.125 4.309-34.066 12.461-48.992 6.627-12.136 2.421-27.341-9.502-34.344-41.141-24.166-85.314-42.406-131.291-54.21-12.992-3.336-26.349 3.918-30.629 16.627-14.038 41.701-53.035 69.718-97.038 69.718s-83-28.018-97.040-69.718c-3.578-10.624-13.502-17.437-24.25-17.437zM512 102.4c57.715 0 109.693-32.138 135.917-82.029 26.637 8.218 52.507 18.875 77.299 31.846-5.541 16.077-8.416 33.075-8.416 50.182 0 84.696 68.904 153.6 153.6 153.6 17.107 0 34.106-2.875 50.181-8.418 12.971 24.792 23.63 50.662 31.846 77.299-49.89 26.226-82.027 78.203-82.027 135.918s32.138 109.691 82.029 135.918c-8.218 26.637-18.875 52.506-31.846 77.299-16.077-5.542-33.074-8.418-50.182-8.418-84.696 0-153.6 68.904-153.6 153.6 0 17.107 2.875 34.106 8.418 50.181-24.792 12.971-50.662 23.63-77.299 31.846-26.226-49.89-78.203-82.027-135.918-82.027s-109.691 32.138-135.917 82.027c-26.637-8.216-52.507-18.874-77.299-31.846 5.542-16.075 8.416-33.072 8.416-50.181 0-84.696-68.904-153.6-153.6-153.6-17.109 0-34.106 2.874-50.181 8.418-12.973-24.794-23.63-50.662-31.846-77.299 49.89-26.227 82.027-78.203 82.027-135.918s-32.138-109.693-82.027-135.917c8.216-26.637 18.875-52.507 31.846-77.299 16.075 5.541 33.074 8.416 50.181 8.416 84.696 0 153.6-68.904 153.6-153.6 0-17.109-2.875-34.106-8.418-50.181 24.794-12.971 50.662-23.63 77.299-31.846 26.227 49.89 78.203 82.027 135.918 82.027zM512 307.2c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6zM512 563.2c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4z" data-tags="cog, gear, preferences, settings, generate, control, options" />
<glyph unicode="&#xe811;" d="M793.6 870.4h-179.2v25.6c0 42.347-34.453 76.8-76.8 76.8h-102.4c-42.347 0-76.8-34.453-76.8-76.8v-25.6h-179.2c-42.347 0-76.8-34.453-76.8-76.8v-51.2c0-33.373 21.403-61.829 51.2-72.397v-644.403c0-42.349 34.453-76.8 76.8-76.8h512c42.349 0 76.8 34.451 76.8 76.8v644.403c29.797 10.568 51.2 39.024 51.2 72.397v51.2c0 42.347-34.451 76.8-76.8 76.8zM409.6 896c0 14.115 11.485 25.6 25.6 25.6h102.4c14.115 0 25.6-11.485 25.6-25.6v-25.6h-153.6v25.6zM742.4 0h-512c-14.115 0-25.6 11.485-25.6 25.6v640h563.2v-640c0-14.115-11.485-25.6-25.6-25.6zM819.2 742.4c0-14.115-11.485-25.6-25.6-25.6h-614.4c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6h614.4c14.115 0 25.6-11.485 25.6-25.6v-51.2zM640 614.4c-14.139 0-25.6-11.462-25.6-25.6v-512c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v512c0 14.138-11.461 25.6-25.6 25.6zM486.4 614.4c-14.138 0-25.6-11.462-25.6-25.6v-512c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v512c0 14.138-11.462 25.6-25.6 25.6zM332.8 614.4c-14.138 0-25.6-11.462-25.6-25.6v-512c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v512c0 14.138-11.462 25.6-25.6 25.6z" data-tags="trash, bin, remove, waste" />
<glyph unicode="&#xe812;" d="M281.6 153.6c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM281.6 358.4c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 460.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM281.6 563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 563.2c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM691.2 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 358.4c-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8zM691.2 460.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 153.6c-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8zM691.2 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM793.6 0h-614.4c-70.579 0-128 57.421-128 128v614.4c0 70.579 57.421 128 128 128h614.4c70.579 0 128-57.421 128-128v-614.4c0-70.579-57.421-128-128-128zM179.2 819.2c-42.347 0-76.8-34.453-76.8-76.8v-614.4c0-42.349 34.453-76.8 76.8-76.8h614.4c42.349 0 76.8 34.451 76.8 76.8v614.4c0 42.347-34.451 76.8-76.8 76.8h-614.4z" data-tags="dice, game, random, board-game" />
<glyph unicode="&#xe813;" d="M486.4 0c-4.283 0-8.566 1.074-12.434 3.222-4.808 2.67-119.088 66.624-235.122 171.376-68.643 61.97-123.467 125.363-162.944 188.418-50.365 80.443-75.901 160.715-75.901 238.584 0 148.218 120.582 268.8 268.8 268.8 50.173 0 103.462-18.805 150.051-52.952 27.251-19.973 50.442-44.043 67.549-69.606 17.107 25.565 40.299 49.634 67.55 69.606 46.589 34.147 99.878 52.952 150.050 52.952 148.218 0 268.8-120.582 268.8-268.8 0-77.869-25.538-158.141-75.901-238.584-39.478-63.054-94.301-126.446-162.944-188.418-116.034-104.754-230.314-168.706-235.122-171.376-3.867-2.149-8.15-3.222-12.434-3.222zM268.8 819.2c-119.986 0-217.6-97.614-217.6-217.6 0-155.624 120.302-297.077 221.224-388.338 90.131-81.504 181.44-138.658 213.976-158.042 32.536 19.384 123.845 76.538 213.976 158.042 100.922 91.261 221.224 232.714 221.224 388.338 0 119.986-97.616 217.6-217.6 217.6-87.187 0-171.856-71.725-193.314-136.096-3.485-10.453-13.267-17.504-24.286-17.504s-20.802 7.051-24.286 17.504c-21.456 64.371-106.125 136.096-193.314 136.096z" data-tags="heart, love, like, favorite" />
<glyph unicode="&#xe814;" d="M793.598 0c-4.205 0-8.422 1.034-12.258 3.126l-269.341 146.912-269.341-146.912c-8.598-4.691-19.118-4.061-27.098 1.613-7.981 5.677-12.022 15.41-10.413 25.069l49.034 294.206-195.483 195.485c-6.781 6.781-9.203 16.782-6.277 25.914s10.712 15.862 20.17 17.438l294.341 49.058 122.17 244.339c4.336 8.674 13.2 14.152 22.898 14.152s18.562-5.478 22.898-14.152l122.17-244.339 294.341-49.058c9.459-1.576 17.243-8.307 20.17-17.438s0.504-19.133-6.277-25.914l-195.483-195.485 49.034-294.206c1.61-9.659-2.434-19.392-10.413-25.069-4.419-3.144-9.621-4.739-14.84-4.739zM512 204.8c4.219 0 8.437-1.042 12.259-3.126l235.445-128.426-42.557 255.344c-1.36 8.155 1.302 16.464 7.15 22.309l169.626 169.626-258.131 43.022c-8.080 1.346-15.027 6.477-18.69 13.803l-105.102 210.205-105.102-210.205c-3.664-7.326-10.61-12.458-18.69-13.803l-258.131-43.022 169.624-169.626c5.846-5.845 8.509-14.155 7.15-22.309l-42.557-255.344 235.446 128.426c3.821 2.085 8.040 3.126 12.259 3.126z" data-tags="star, rating, favorite" />
<glyph unicode="&#xe815;" d="M793.598 0c-4.205 0-8.422 1.034-12.256 3.126l-153.595 83.778c-12.413 6.768-16.986 22.32-10.218 34.731 6.77 12.414 22.322 16.992 34.733 10.216l107.442-58.603-8.424 50.542c-2.325 13.947 7.098 27.136 21.042 29.461 13.941 2.33 27.136-7.096 29.461-21.042l17.067-102.4c1.611-9.661-2.434-19.394-10.413-25.070-4.418-3.144-9.619-4.739-14.838-4.739zM759.434 204.795c-12.29 0-23.134 8.875-25.221 21.397l-17.066 102.4c-1.36 8.155 1.302 16.464 7.15 22.309l51.2 51.2c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-41.885-41.885 14.899-89.406c2.325-13.946-7.098-27.136-21.043-29.459-1.422-0.237-2.838-0.35-4.238-0.352zM896 460.8c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l16.024 16.026-104.53 17.422c-13.947 2.325-23.368 15.514-21.043 29.461s15.533 23.368 29.459 21.043l153.6-25.6c9.459-1.576 17.243-8.307 20.17-17.438s0.504-19.133-6.277-25.914l-51.2-51.2c-5-5.003-11.55-7.502-18.102-7.502zM691.232 554.664c-1.398 0-2.814 0.115-4.238 0.352l-51.2 8.533c-8.080 1.346-15.027 6.477-18.69 13.802l-51.2 102.395c-6.323 12.646-1.198 28.024 11.448 34.346 12.643 6.323 28.024 1.197 34.346-11.448l45.37-90.736 38.341-6.39c13.947-2.325 23.368-15.514 21.043-29.461-2.085-12.518-12.933-21.392-25.219-21.392zM230.402 0c-5.221 0-10.421 1.595-14.842 4.739-7.981 5.677-12.022 15.41-10.413 25.069l49.034 294.206-195.482 195.485c-6.781 6.781-9.203 16.782-6.277 25.914s10.71 15.862 20.17 17.438l294.341 49.058 122.17 244.339c4.336 8.674 13.202 14.152 22.898 14.152 0 0 0 0 0 0 9.698 0 18.562-5.478 22.898-14.152l25.6-51.2c6.322-12.646 1.195-28.024-11.45-34.346-12.646-6.325-28.024-1.198-34.347 11.45l-2.701 5.403-105.101-210.203c-3.664-7.326-10.61-12.458-18.69-13.803l-258.133-43.022 169.626-169.626c5.846-5.845 8.509-14.155 7.149-22.309l-42.557-255.344 235.446 128.426c7.642 4.17 16.875 4.166 24.518 0l25.603-13.966c12.411-6.77 16.984-22.32 10.214-34.733-6.77-12.411-22.318-16.984-34.733-10.214l-13.344 7.278-269.341-146.912c-3.835-2.093-8.053-3.126-12.258-3.126z" data-tags="star-half, rating" />
<glyph unicode="&#xe816;" d="M281.57 546.13c-12.29 0-23.134 8.874-25.221 21.395-2.325 13.946 7.098 27.136 21.043 29.461l89.541 14.923 19.77 39.539c6.323 12.646 21.701 17.773 34.346 11.45 12.646-6.323 17.771-21.701 11.45-34.346l-25.6-51.2c-3.664-7.326-10.61-12.458-18.69-13.803l-102.4-17.067c-1.424-0.237-2.842-0.352-4.238-0.352zM128 460.8c-6.552 0-13.102 2.499-18.101 7.499l-51.2 51.2c-6.781 6.781-9.203 16.782-6.277 25.914s10.71 15.862 20.17 17.438l102.4 17.067c13.957 2.326 27.136-7.099 29.461-21.043 2.325-13.946-7.098-27.136-21.043-29.461l-53.331-8.89 16.024-16.026c9.998-9.997 9.998-26.206 0-36.203-5-4.997-11.55-7.496-18.102-7.496zM759.434 204.795c-12.29 0-23.134 8.875-25.221 21.397l-17.066 102.4c-1.36 8.155 1.302 16.464 7.15 22.309l51.2 51.2c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-41.885-41.885 14.899-89.406c2.325-13.946-7.098-27.136-21.043-29.459-1.422-0.237-2.838-0.352-4.238-0.352zM793.598 0c-4.205 0-8.422 1.034-12.256 3.126l-153.606 83.784c-12.413 6.768-16.986 22.32-10.216 34.731 6.766 12.414 22.32 16.99 34.731 10.216l107.453-58.61-8.424 50.542c-2.325 13.947 7.098 27.136 21.042 29.461 13.955 2.322 27.136-7.096 29.461-21.042l17.067-102.4c1.61-9.661-2.434-19.394-10.413-25.070-4.418-3.144-9.619-4.739-14.838-4.739zM273.098 255.995c-1.398 0-2.814 0.115-4.238 0.354-13.946 2.325-23.366 15.514-21.043 29.461l6.368 38.205-41.885 41.885c-9.998 9.997-9.998 26.206 0 36.203s26.206 9.997 36.203 0l51.2-51.2c5.846-5.845 8.509-14.155 7.15-22.31l-8.533-51.2c-2.088-12.522-12.934-21.397-25.222-21.397zM230.402 0c-5.221 0-10.421 1.595-14.842 4.739-7.981 5.677-12.022 15.41-10.413 25.069l25.6 153.598c2.325 13.947 15.514 23.368 29.461 21.043 13.946-2.323 23.366-15.514 21.043-29.459l-16.957-101.742 56.246 30.68c12.41 6.771 27.963 2.197 34.733-10.214 6.77-12.413 2.197-27.963-10.216-34.733l-102.4-55.854c-3.834-2.093-8.051-3.126-12.256-3.126zM435.222 111.704c-9.067 0-17.85 4.827-22.498 13.347-6.77 12.411-2.197 27.963 10.216 34.731l76.8 41.891c7.64 4.168 16.875 4.168 24.517 0l25.595-13.962c12.413-6.768 16.986-22.32 10.216-34.731-6.766-12.414-22.32-16.99-34.731-10.216l-13.338 7.274-64.541-35.203c-3.893-2.123-8.094-3.131-12.237-3.131zM896 460.8c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l16.024 16.026-104.53 17.422c-13.947 2.325-23.368 15.514-21.043 29.461s15.533 23.368 29.459 21.043l153.6-25.6c9.459-1.576 17.243-8.307 20.17-17.438s0.504-19.133-6.277-25.914l-51.2-51.2c-5-5.003-11.55-7.502-18.102-7.502zM691.234 554.662c-1.398 0-2.816 0.115-4.24 0.352l-51.202 8.533c-8.078 1.346-15.026 6.477-18.688 13.802l-51.2 102.395c-6.323 12.646-1.198 28.024 11.448 34.346 12.643 6.323 28.024 1.197 34.346-11.448l45.37-90.736 38.344-6.39c13.946-2.325 23.366-15.514 21.042-29.461-2.086-12.518-12.933-21.392-25.219-21.392zM460.779 716.795c-3.846 0-7.754 0.87-11.429 2.707-12.646 6.323-17.771 21.701-11.45 34.346l51.2 102.4c4.338 8.674 13.203 14.152 22.899 14.152 0 0 0 0 0 0 9.698 0 18.562-5.478 22.898-14.152l25.598-51.2c6.323-12.646 1.197-28.024-11.448-34.346-12.646-6.325-28.024-1.198-34.346 11.45l-2.702 5.403-28.301-56.603c-4.486-8.971-13.53-14.157-22.92-14.157z" data-tags="star-empty, rating" />
<glyph unicode="&#xe817;" d="M76.8 0c-14.138 0-25.6 11.461-25.6 25.6v768c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-768c0-14.139-11.462-25.6-25.6-25.6zM179.181 460.798c-5.346 0-10.734 1.667-15.341 5.122-11.31 8.483-13.603 24.53-5.12 35.838 3.45 4.6 85.789 112.64 199.68 112.64 86.715 0 144.038-30.666 194.614-57.722 44.813-23.973 83.515-44.677 138.186-44.677 112.246 0 192.389 106.49 238.093 190.344-35.736-20.317-81.411-36.744-135.693-36.744-113.005 0-171.389 58.386-222.901 109.899-50.925 50.922-94.902 94.901-186.699 94.901-113.883 0-183.629-91.238-184.32-92.16-8.483-11.31-24.53-13.603-35.84-5.12s-13.603 24.53-5.12 35.84c3.45 4.6 86.080 112.64 225.28 112.64 113.003 0 171.389-58.386 222.901-109.899 50.925-50.922 94.904-94.901 186.699-94.901 113.883 0 183.629 91.238 184.32 92.16 7.534 10.043 21.238 13.141 32.362 7.315 11.122-5.827 16.374-18.861 12.405-30.771-1.090-3.269-27.288-80.958-79.786-159.704-31.341-47.011-65.638-84.654-101.941-111.88-46.997-35.248-97.384-53.12-149.76-53.12-67.504 0-115.715 25.79-162.338 50.733-49.669 26.57-96.582 51.667-170.462 51.667-88.576 0-158.029-91.238-158.72-92.16-5.029-6.706-12.717-10.242-20.499-10.242z" data-tags="flag, report, mark" />
<glyph unicode="&#xe818;" d="M896 665.6h-819.2c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.349 34.453-76.8 76.8-76.8h819.2c42.349 0 76.8 34.451 76.8 76.8v460.8c0 42.347-34.451 76.8-76.8 76.8zM896 614.4c1.514 0 2.99-0.158 4.434-0.411l-385.632-257.090c-14.862-9.907-41.938-9.907-56.802 0l-385.634 257.090c1.443 0.253 2.92 0.411 4.434 0.411h819.2zM896 102.4h-819.2c-14.115 0-25.6 11.485-25.6 25.6v438.566l378.4-252.267c15.925-10.618 36.363-15.925 56.8-15.925s40.877 5.307 56.802 15.925l378.398 252.267v-438.566c0-14.115-11.485-25.6-25.6-25.6z" data-tags="envelope, mail, letter, email" />
<glyph unicode="&#xe819;" d="M486.4-51.2c-127.043 0-230.4 103.357-230.4 230.4v614.4c0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2v-563.2c0-70.579-57.421-128-128-128s-128 57.421-128 128v307.2c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-42.349 34.453-76.8 76.8-76.8 42.349 0 76.8 34.451 76.8 76.8v563.2c0 70.579-57.421 128-128 128s-128-57.421-128-128v-614.4c0-98.811 80.389-179.2 179.2-179.2s179.2 80.389 179.2 179.2v358.4c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-358.4c0-127.043-103.357-230.4-230.4-230.4z" data-tags="paperclip, attachment" />
<glyph unicode="&#xe81a;" d="M1001.331 441.168l-138.157 315.786c-15.272 34.906-57.075 62.246-95.174 62.246h-512c-38.099 0-79.904-27.341-95.176-62.246l-138.157-315.786c-12.71-29.056-22.667-76.658-22.667-108.368v-204.8c0-42.349 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.451 76.8 76.8v204.8c0 31.714-9.958 79.314-22.669 108.368zM207.733 736.432c7.227 16.522 30.234 31.568 48.267 31.568h512c18.034 0 41.038-15.046 48.269-31.568l138.157-315.786c1.557-3.558 3.082-7.59 4.547-11.95-3.84 0.595-7.77 0.904-11.773 0.904h-307.2c-14.139 0-25.6-11.461-25.6-25.6v-25.6c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v25.6c0 14.139-11.462 25.6-25.6 25.6h-307.2c-4.002 0-7.933-0.309-11.771-0.902 1.466 4.36 2.992 8.392 4.547 11.95l138.157 315.784zM972.8 128c0-14.115-11.485-25.6-25.6-25.6h-870.4c-14.115 0-25.6 11.485-25.6 25.6v204.8c0 14.115 11.485 25.6 25.6 25.6h281.6c0-84.696 68.904-153.6 153.6-153.6s153.6 68.904 153.6 153.6h281.6c14.115 0 25.6-11.485 25.6-25.6v-204.8z" data-tags="inbox, drawer" />
<glyph unicode="&#xe81b;" d="M1017.429 452.326c-2.429 2.698-60.515 66.826-151.349 131.706-53.587 38.277-107.499 68.826-160.234 90.8-66.837 27.848-132.056 41.968-193.846 41.968s-127.010-14.12-193.846-41.97c-52.736-21.973-106.646-52.523-160.234-90.8-90.832-64.878-148.92-129.006-151.349-131.704-8.763-9.736-8.763-24.515 0-34.251 2.429-2.699 60.517-66.827 151.349-131.707 53.587-38.277 107.498-68.827 160.234-90.8 66.837-27.848 132.056-41.968 193.846-41.968s127.010 14.12 193.846 41.968c52.734 21.973 106.645 52.523 160.234 90.8 90.834 64.88 148.92 129.008 151.349 131.706 8.762 9.736 8.762 24.517 0 34.253zM643.789 643.157c46.458-39.074 73.011-95.923 73.011-156.757 0-112.926-91.874-204.8-204.8-204.8-112.928 0-204.8 91.874-204.8 204.8 0 60.835 26.554 117.685 73.014 156.757 42.107 13.744 86.602 22.443 131.786 22.443 45.186 0 89.682-8.699 131.789-22.443zM835.418 327.387c-78.488-55.925-198.309-122.587-323.418-122.587s-244.93 66.662-323.416 122.587c-59.24 42.21-104.574 84.89-127.458 107.813 22.888 22.928 68.222 65.606 127.458 107.813 27.13 19.331 59.2 39.942 94.72 58.643-17.766-35.224-27.304-74.52-27.304-115.256 0-141.16 114.842-256 256-256 141.16 0 256 114.84 256 256 0 40.734-9.538 80.032-27.301 115.256 35.517-18.701 67.589-39.312 94.718-58.643 59.238-42.21 104.573-84.89 127.456-107.813-22.888-22.928-68.222-65.606-127.456-107.813z" data-tags="eye, vision, view" />
<glyph unicode="&#xe81c;" d="M947.2 768h-76.8v128c0 42.347-34.453 76.8-76.8 76.8h-563.2c-42.347 0-76.8-34.453-76.8-76.8v-128h-76.8c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.349 34.453-76.8 76.8-76.8h76.8v-128c0-42.347 34.453-76.8 76.8-76.8h563.2c42.347 0 76.8 34.453 76.8 76.8v128h76.8c42.349 0 76.8 34.451 76.8 76.8v460.8c0 42.347-34.451 76.8-76.8 76.8zM204.8 896c0 14.115 11.485 25.6 25.6 25.6h563.2c14.115 0 25.6-11.485 25.6-25.6v-128h-614.4v128zM793.6 0h-563.2c-14.115 0-25.6 11.485-25.6 25.6v332.8h614.4v-332.8c0-14.115-11.485-25.6-25.6-25.6zM972.8 230.4c0-14.115-11.485-25.6-25.6-25.6h-76.8v153.6h25.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-768c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h25.6v-153.6h-76.8c-14.115 0-25.6 11.485-25.6 25.6v460.8c0 14.115 11.485 25.6 25.6 25.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-460.8zM742.4 256h-460.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 153.6h-460.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 51.2h-460.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 512c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM844.8 614.4c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z" data-tags="printer, print" />
<glyph unicode="&#xe81d;" d="M914.101 683.701l-230.4 230.4c-4.8 4.802-11.312 7.499-18.101 7.499h-486.4c-42.347 0-76.8-34.453-76.8-76.8v-819.2c0-42.349 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.451 76.8 76.8v640c0 6.79-2.698 13.301-7.499 18.101zM859.797 665.6h-168.597c-14.115 0-25.6 11.485-25.6 25.6v168.597l194.197-194.197zM870.4 25.6c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h435.2v-179.2c0-42.347 34.451-76.8 76.8-76.8h179.2v-588.8z" data-tags="file-empty, file, paper, new" />
<glyph unicode="&#xe81e;" d="M914.101 683.701l-230.4 230.4c-4.8 4.802-11.312 7.499-18.101 7.499h-486.4c-42.347 0-76.8-34.453-76.8-76.8v-819.2c0-42.349 34.453-76.8 76.8-76.8h665.6c42.349 0 76.8 34.451 76.8 76.8v640c0 6.79-2.698 13.301-7.499 18.101zM859.797 665.6h-168.597c-14.115 0-25.6 11.485-25.6 25.6v168.597l194.197-194.197zM844.8 0h-665.6c-14.115 0-25.6 11.485-25.6 25.6v819.2c0 14.115 11.485 25.6 25.6 25.6h435.2v-179.2c0-42.347 34.451-76.8 76.8-76.8h179.2v-588.8c0-14.115-11.485-25.6-25.6-25.6zM588.8 307.2h-128v128c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-128h-128c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h128v-128c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v128h128c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z" data-tags="file-add, file" />
<glyph unicode="&#xe81f;" d="M896 870.4h-460.8c-42.347 0-76.8-34.453-76.8-76.8v-153.6c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v153.6c0 14.115 11.485 25.6 25.6 25.6h387.278l-196.702-84.301c-35.088-15.038-62.576-56.723-62.576-94.899v-486.4h-128c-14.115 0-25.6 11.485-25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-153.6c0-42.347 34.453-76.8 76.8-76.8h128v-76.8c0-22.181 9.234-40.99 25.331-51.606 8.886-5.861 19.243-8.814 30.171-8.814 8.867 0 18.109 1.946 27.242 5.859l264.277 113.261c35.091 15.038 62.579 56.723 62.579 94.901v614.4c0 42.347-34.451 76.8-76.8 76.8zM921.6 179.2c0-17.963-15.035-40.765-31.546-47.838l-264.277-113.261c-4.912-2.107-8.163-1.955-9.062-1.363-0.894 0.59-2.315 3.518-2.315 8.862v614.4c0 17.962 15.035 40.763 31.546 47.838l273.043 117.019c1.672-3.4 2.611-7.221 2.611-11.258v-614.4zM427.701 504.501l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0s-9.998-26.206 0-36.203l109.899-109.898h-322.197c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h322.197l-109.898-109.899c-9.998-9.997-9.998-26.206 0-36.203 4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.205 0 36.202z" data-tags="enter, door, sign-in, log-in, login" />
<glyph unicode="&#xe820;" d="M588.8 563.2c14.139 0 25.6 11.462 25.6 25.6v204.8c0 42.347-34.451 76.8-76.8 76.8h-460.8c-42.347 0-76.8-34.453-76.8-76.8v-614.4c0-38.178 27.488-79.862 62.576-94.899l264.278-113.262c9.134-3.915 18.373-5.859 27.24-5.859 10.926 0.002 21.288 2.955 30.173 8.814 16.099 10.616 25.333 29.426 25.333 51.606v76.8h128c42.349 0 76.8 34.451 76.8 76.8v204.8c0 14.139-11.461 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-204.8c0-14.115-11.485-25.6-25.6-25.6h-128v486.4c0 38.176-27.488 79.861-62.576 94.899l-196.702 84.301h387.278c14.115 0 25.6-11.485 25.6-25.6v-204.8c0-14.138 11.461-25.6 25.6-25.6zM326.854 687.838c16.51-7.075 31.546-29.877 31.546-47.838v-614.4c0-5.344-1.421-8.272-2.317-8.862-0.898-0.589-4.15-0.742-9.061 1.362l-264.278 113.262c-16.509 7.074-31.544 29.875-31.544 47.838v614.4c0 4.037 0.939 7.859 2.611 11.258l273.043-117.019zM939.701 504.501l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203l109.899-109.898h-322.197c-14.139 0-25.6-11.462-25.6-25.6s11.461-25.6 25.6-25.6h322.197l-109.899-109.899c-9.998-9.997-9.998-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.205 0 36.202z" data-tags="exit, door, sign-out, log-out, logout" />
<glyph unicode="&#xe821;" d="M955.296 613.086l-460.8 153.6c-5.254 1.752-10.936 1.752-16.19 0l-460.8-153.6c-10.454-3.485-17.506-13.267-17.506-24.286s7.051-20.802 17.504-24.286l136.096-45.365v-135.149c0-6.789 2.698-13.301 7.499-18.101 4.486-4.488 112.346-109.899 325.301-109.899 77.454 0 149.712 13.941 214.766 41.434 13.024 5.504 19.118 20.523 13.616 33.547-5.504 13.024-20.525 19.117-33.547 13.616-58.714-24.816-124.266-37.397-194.835-37.397-99.586 0-172.84 25.781-216.758 47.41-32.53 16.019-54.259 32.203-64.842 40.926v106.547l273.504-91.168c2.627-0.877 5.362-1.314 8.096-1.314s5.467 0.437 8.096 1.314l273.504 91.168v-45.686c-29.797-10.568-51.2-39.024-51.2-72.397 0-31.269 18.792-58.213 45.666-70.181l-44.901-179.61c-1.91-7.648-0.194-15.75 4.658-21.965s12.294-9.845 20.178-9.845h102.4c7.883 0 15.326 3.632 20.178 9.845s6.568 14.315 4.658 21.965l-44.901 179.61c26.874 11.968 45.666 38.912 45.666 70.181 0 33.373-21.403 61.829-51.2 72.397v62.752l136.096 45.366c10.453 3.483 17.504 13.266 17.504 24.285s-7.051 20.802-17.504 24.286zM793.6 409.6c14.115 0 25.6-11.485 25.6-25.6s-11.485-25.6-25.6-25.6-25.6 11.485-25.6 25.6 11.485 25.6 25.6 25.6zM775.187 153.6l18.413 73.648 18.413-73.648h-36.826zM791.536 563.898l-300.928 50.155c-13.952 2.322-27.136-7.099-29.461-21.042-2.325-13.947 7.098-27.138 21.043-29.461l205.533-34.256-201.323-67.11-379.846 126.616 379.846 126.616 379.845-126.616-74.709-24.902z" data-tags="graduation-hat, education, university, college, school" />
<glyph unicode="&#xe822;" d="M947.2 51.2h-870.4c-42.347 0-76.8 34.451-76.8 76.8v665.6c0 42.347 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.453 76.8-76.8v-665.6c0-42.349-34.451-76.8-76.8-76.8zM76.8 819.2c-14.115 0-25.6-11.485-25.6-25.6v-665.6c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v665.6c0 14.115-11.485 25.6-25.6 25.6h-870.4zM486.4 665.6h-307.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6zM486.4 512h-307.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM486.4 409.6h-307.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM486.4 307.2h-307.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM435.2 204.8h-256c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h256c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM918.677 637.757l-41.646 30.258-15.909 48.957h-51.475l-41.646 30.258-41.645-30.258h-51.475l-15.909-48.957-41.646-30.258 15.909-48.957-15.909-48.957 41.646-30.259 6.752-20.774c-0.077-0.794-0.123-1.597-0.123-2.41v-256c0-10.355 6.237-19.69 15.803-23.651 9.568-3.965 20.578-1.77 27.899 5.55l58.698 58.698 58.699-58.699c4.898-4.899 11.443-7.501 18.107-7.499 3.298 0 6.624 0.637 9.79 1.949 9.566 3.963 15.803 13.298 15.803 23.653v256c0 0.813-0.046 1.616-0.122 2.41l6.752 20.774 41.646 30.259-15.91 48.957 15.91 48.957zM677.514 618.2l25.010 18.17 9.554 29.4h30.912l25.011 18.173 25.011-18.171h30.912l9.554-29.4 25.010-18.17-9.554-29.402 9.554-29.4-25.010-18.171-9.554-29.4h-30.912l-25.011-18.173-25.011 18.171h-30.912l-9.554 29.4-25.010 18.171 9.554 29.402-9.554 29.4zM786.101 325.301c-9.997 9.997-26.206 9.997-36.203 0l-33.098-33.098v168.426h9.555l41.645-30.258 41.645 30.256h9.555v-168.426l-33.099 33.099z" data-tags="license, certificate" />
<glyph unicode="&#xe823;" d="M1014.803 915.654c-5.826 4.864-13.509 6.891-20.982 5.533l-563.2-102.4c-12.173-2.213-21.021-12.816-21.021-25.187v-583.632c-6.986 4.722-14.629 9.181-22.936 13.336-42.166 21.085-97.662 32.696-156.264 32.696s-114.098-11.611-156.264-32.696c-47.806-23.902-74.136-57.749-74.136-95.304s26.33-71.402 74.136-95.304c42.166-21.085 97.662-32.696 156.264-32.696s114.098 11.611 156.264 32.696c47.806 23.902 74.136 57.749 74.136 95.304v516.294l512 94.549v-426.475c-6.984 4.722-14.629 9.182-22.936 13.336-42.166 21.085-97.662 32.696-156.264 32.696s-114.098-11.611-156.264-32.696c-47.808-23.902-74.136-57.749-74.136-95.304s26.328-71.402 74.136-95.304c42.166-21.085 97.662-32.696 156.264-32.696s114.098 11.611 156.264 32.696c47.808 23.902 74.136 57.749 74.136 95.304v665.6c0 7.59-3.368 14.79-9.197 19.654zM230.4 51.2c-102.563 0-179.2 40.547-179.2 76.8s76.637 76.8 179.2 76.8 179.2-40.547 179.2-76.8-76.637-76.8-179.2-76.8zM460.8 696.362v75.874l512 93.091v-74.416l-512-94.549zM793.6 153.6c-102.565 0-179.2 40.547-179.2 76.8s76.635 76.8 179.2 76.8c102.566 0 179.2-40.547 179.2-76.8s-76.634-76.8-179.2-76.8z" data-tags="music-note, music, song, audio" />
<glyph unicode="&#xe824;" d="M383.997 204.8c-3.902 0-7.822 0.891-11.445 2.702-8.674 4.336-14.152 13.2-14.152 22.898v460.8c0 9.698 5.478 18.562 14.152 22.898 8.67 4.334 19.051 3.4 26.808-2.418l307.2-230.4c6.446-4.834 10.24-12.422 10.24-20.48s-3.794-15.645-10.24-20.48l-307.2-230.4c-4.517-3.387-9.923-5.12-15.363-5.12zM409.6 640v-358.4l238.933 179.2-238.933 179.2zM998.4 870.4h-972.8c-14.138 0-25.6-11.462-25.6-25.6v-768c0-14.139 11.462-25.6 25.6-25.6h972.8c14.139 0 25.6 11.461 25.6 25.6v768c0 14.138-11.461 25.6-25.6 25.6zM153.6 409.6h-102.4v102.4h102.4v-102.4zM153.6 563.2h-102.4v102.4h102.4v-102.4zM51.2 358.4h102.4v-102.4h-102.4v102.4zM204.8 819.2h614.4v-716.8h-614.4v716.8zM870.4 512h102.4v-102.4h-102.4v102.4zM870.4 563.2v102.4h102.4v-102.4h-102.4zM870.4 358.4h102.4v-102.4h-102.4v102.4zM972.8 716.8h-102.4v102.4h102.4v-102.4zM153.6 819.2v-102.4h-102.4v102.4h102.4zM51.2 204.8h102.4v-102.4h-102.4v102.4zM870.4 102.4v102.4h102.4v-102.4h-102.4z" data-tags="film-play, video, movie" />
<glyph unicode="&#xe825;" d="M979.496 99.669c-0.003 0-0.005 0-0.008 0-12.378 0.002-24.846 4.957-37.059 14.725l-176.038 140.832c-28.272 22.613-49.59 66.97-49.59 103.174v153.6c0 36.203 21.318 80.56 49.589 103.174l176.037 140.83c12.216 9.773 24.686 14.726 37.066 14.726 22.155 0.002 44.509-16.675 44.509-53.931v-563.2c0-14.234-3.275-26.197-9.733-35.558-8.056-11.675-20.73-18.373-34.771-18.373zM972.8 714.736l-174.427-139.542c-15.896-12.717-30.373-42.837-30.373-63.194v-153.6c0-20.358 14.477-50.478 30.371-63.194l174.429-139.542v559.072zM588.8 102.4h-512c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h512c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8zM76.8 716.8c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h512c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-512z" data-tags="camera-video, video" />
<glyph unicode="&#xe826;" d="M486.4 204.8c-127.043 0-230.4 103.357-230.4 230.4s103.357 230.4 230.4 230.4c127.043 0 230.4-103.357 230.4-230.4s-103.357-230.4-230.4-230.4zM486.4 614.4c-98.811 0-179.2-80.389-179.2-179.2s80.389-179.2 179.2-179.2 179.2 80.389 179.2 179.2-80.389 179.2-179.2 179.2zM896 51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h76.8c21.246 0 54.278 13.682 69.302 28.706l29.992 29.992c24.914 24.915 70.272 43.702 105.506 43.702h256c35.235 0 80.594-18.789 105.506-43.702l29.992-29.99c15.024-15.026 48.056-28.707 69.302-28.707h76.8c42.349 0 76.8-34.453 76.8-76.8v-512c0-42.349-34.451-76.8-76.8-76.8zM76.8 665.6c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-76.8c-35.235 0-80.594 18.789-105.506 43.702l-29.992 29.99c-15.024 15.026-48.056 28.707-69.302 28.707h-256c-21.246 0-54.278-13.682-69.302-28.706l-29.992-29.992c-24.914-24.915-70.272-43.702-105.506-43.702h-76.8z" data-tags="camera, photo" />
<glyph unicode="&#xe827;" d="M947.2-51.2h-870.4c-42.347 0-76.8 34.451-76.8 76.8v870.4c0 42.347 34.453 76.8 76.8 76.8h870.4c42.349 0 76.8-34.453 76.8-76.8v-870.4c0-42.349-34.451-76.8-76.8-76.8zM76.8 921.6c-14.115 0-25.6-11.485-25.6-25.6v-870.4c0-14.115 11.485-25.6 25.6-25.6h870.4c14.115 0 25.6 11.485 25.6 25.6v870.4c0 14.115-11.485 25.6-25.6 25.6h-870.4zM665.6 512c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4zM665.6 665.6c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM896 870.4h-768c-14.138 0-25.6-11.462-25.6-25.6v-614.4c0-14.139 11.462-25.6 25.6-25.6h768c14.139 0 25.6 11.461 25.6 25.6v614.4c0 14.138-11.461 25.6-25.6 25.6zM153.6 374.267l164.318 184.858c4.203 4.728 9.694 7.371 15.462 7.44 5.725 0.090 11.322-2.438 15.638-7.062l283.27-303.502h-478.69v118.267zM870.4 256h-168.075l-315.875 338.437c-14.269 15.288-33.312 23.605-53.691 23.325-20.354-0.246-39.214-8.992-53.107-24.621l-126.051-141.808v367.867h716.8v-563.2z" data-tags="picture, photo, polaroid" />
<glyph unicode="&#xe828;" d="M742.4 51.2h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 819.2c-14.139 0-25.6-11.462-25.6-25.6v-768c0-14.115-11.485-25.6-25.6-25.6h-563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8h460.8c42.349 0 76.8 34.451 76.8 76.8v614.4c0 42.347-34.451 76.8-76.8 76.8h-512c-42.347 0-76.8-34.453-76.8-76.8v-768c0-70.579 57.421-128 128-128h563.2c42.349 0 76.8 34.451 76.8 76.8v768c0 14.138-11.461 25.6-25.6 25.6zM179.2 870.4h512c14.115 0 25.6-11.485 25.6-25.6v-614.4c0-14.115-11.485-25.6-25.6-25.6h-460.8c-28.794 0-55.392-9.563-76.8-25.67v665.67c0 14.115 11.485 25.6 25.6 25.6z" data-tags="book, read" />
<glyph unicode="&#xe829;" d="M793.605-51.202c-7.331 0-14.482 3.155-19.442 8.941l-287.763 335.723-287.763-335.723c-6.971-8.131-18.269-11.067-28.318-7.349-10.048 3.715-16.718 13.298-16.718 24.010v921.6c0 14.138 11.462 25.6 25.6 25.6h614.4c14.139 0 25.6-11.462 25.6-25.6v-921.6c0-10.712-6.67-20.294-16.718-24.010-2.899-1.074-5.904-1.592-8.877-1.592zM486.4 358.4c7.474 0 14.573-3.266 19.437-8.939l262.163-305.858v826.797h-563.2v-826.797l262.163 305.858c4.864 5.674 11.963 8.939 19.437 8.939z" data-tags="bookmark, ribbon" />
<glyph unicode="&#xe82a;" d="M486.4 409.6c-155.275 0-281.6 126.325-281.6 281.6s126.325 281.6 281.6 281.6 281.6-126.325 281.6-281.6-126.325-281.6-281.6-281.6zM486.4 921.6c-127.043 0-230.4-103.357-230.4-230.4s103.357-230.4 230.4-230.4c127.042 0 230.4 103.357 230.4 230.4s-103.358 230.4-230.4 230.4zM896-51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8 0 3.485 0.712 86.285 62.72 168.96 36.094 48.126 85.514 86.36 146.883 113.634 74.957 33.314 168.085 50.206 276.797 50.206 108.71 0 201.838-16.893 276.797-50.206 61.37-27.275 110.789-65.507 146.883-113.634 62.008-82.675 62.72-165.475 62.72-168.96 0-42.349-34.451-76.8-76.8-76.8zM486.4 307.2c-178.52 0-310.267-48.789-381-141.093-53.011-69.174-54.195-139.904-54.2-140.61 0-14.013 11.485-25.498 25.6-25.498h819.2c14.115 0 25.6 11.485 25.6 25.6-0.006 0.603-1.189 71.333-54.198 140.507-70.734 92.304-202.483 141.093-381.002 141.093z" data-tags="user, persona, profile, avatar" />
<glyph unicode="&#xe82b;" d="M947.2 51.2h-563.2c-42.347 0-76.8 34.453-76.8 76.8 0 2.461 0.538 60.952 47.331 118.544 26.883 33.088 63.541 59.31 108.952 77.941 54.856 22.504 122.858 33.915 202.117 33.915s147.261-11.411 202.117-33.915c45.411-18.63 82.067-44.853 108.952-77.941 46.794-57.592 47.331-116.083 47.331-118.544 0-42.347-34.453-76.8-76.8-76.8zM358.4 127.869c0.072-14.056 11.528-25.469 25.6-25.469h563.2c14.072 0 25.528 11.413 25.6 25.469-0.048 1.786-1.656 45.802-37.851 88.786-49.88 59.235-143.019 90.546-269.349 90.546s-219.469-31.31-269.349-90.546c-36.194-42.984-37.803-87-37.851-88.786zM665.6 409.6c-112.926 0-204.8 91.874-204.8 204.8 0 112.928 91.874 204.8 204.8 204.8s204.8-91.872 204.8-204.8c0-112.926-91.874-204.8-204.8-204.8zM665.6 768c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM230.4 51.2h-153.6c-42.347 0-76.8 34.451-76.8 76.8 0 1.915 0.386 47.446 33.92 92.16 19.373 25.832 45.778 46.299 78.483 60.834 39.126 17.389 87.438 26.206 143.597 26.206 9.16 0 18.232-0.235 26.962-0.701 14.118-0.754 24.954-12.81 24.2-26.928-0.752-14.117-12.781-24.96-26.928-24.2-7.826 0.418-15.979 0.629-24.234 0.629-199.366 0-204.666-121.826-204.8-128.131 0.072-14.054 11.528-25.469 25.6-25.469h153.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM256 358.4c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6zM256 614.4c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4 102.4 45.936 102.4 102.4c0 56.464-45.936 102.4-102.4 102.4z" data-tags="users, group, team, people" />
<glyph unicode="&#xe82c;" d="M691.2 0h-409.6c-42.347 0-76.8 34.451-76.8 76.8v476.482l-119.904-39.968c-13.414-4.472-27.91 2.778-32.381 16.19l-51.2 153.6c-4.029 12.086 1.442 25.296 12.837 30.994l307.2 153.6c7.936 3.968 17.36 3.542 24.907-1.122s12.141-12.904 12.141-21.776c0-70.579 57.421-128 128-128s128 57.421 128 128c0 8.872 4.594 17.112 12.141 21.776 7.547 4.666 16.971 5.090 24.907 1.122l307.2-153.6c11.395-5.698 16.867-18.907 12.837-30.994l-51.2-153.6c-4.47-13.411-18.966-20.662-32.381-16.19l-119.904 39.968v-476.482c0-42.349-34.451-76.8-76.8-76.8zM230.398 614.4c5.307 0 10.555-1.65 14.97-4.832 6.675-4.811 10.632-12.539 10.632-20.768v-512c0-14.115 11.485-25.6 25.6-25.6h409.6c14.115 0 25.6 11.485 25.6 25.6v512c0 8.229 3.957 15.957 10.632 20.768 6.677 4.811 15.258 6.123 23.064 3.518l129.314-43.104 36.083 108.25-254.624 127.312c-17.946-79.995-89.538-139.944-174.869-139.944-85.333 0-156.925 59.949-174.869 139.944l-254.624-127.312 36.083-108.25 129.314 43.104c2.645 0.88 5.378 1.314 8.094 1.314z" data-tags="shirt, clothing, tee, tshirt" />
<glyph unicode="&#xe82d;" d="M921.6 486.4v51.2c0 3.974-0.925 7.894-2.702 11.448l-102.4 204.8c-4.336 8.674-13.2 14.152-22.898 14.152h-614.4c-9.698 0-18.562-5.478-22.898-14.152l-102.4-204.8c-1.778-3.554-2.702-7.474-2.702-11.448v-51.2c0-41.786 20.131-78.955 51.2-102.33v-332.87h-25.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h819.2c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-25.598v332.87c31.067 23.376 51.198 60.544 51.198 102.33zM588.8 409.6c-42.347 0-76.8 34.453-76.8 76.8v25.6h153.6v-25.6c0-42.347-34.453-76.8-76.8-76.8zM102.4 486.4v25.6h153.6v-25.6c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8zM460.8 716.8v-153.6h-146.413l38.4 153.6h108.013zM620.013 716.8l38.4-153.6h-146.413v153.6h108.013zM307.2 512h153.6v-25.6c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v25.6zM716.8 512h153.6v-25.6c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8v25.6zM854.578 563.2h-143.39l-38.4 153.6h104.99l76.8-153.6zM195.022 716.8h104.99l-38.4-153.6h-143.39l76.8 153.6zM153.6 360.974c8.274-1.686 16.835-2.574 25.6-2.574 41.827 0 79.029 20.168 102.4 51.29 23.371-31.122 60.573-51.29 102.4-51.29s79.029 20.168 102.4 51.29c18.474-24.598 45.589-42.354 76.8-48.714v-309.776h-409.6v309.774zM819.202 51.2h-204.802v309.774c31.211 6.362 58.325 24.115 76.8 48.714 23.371-31.12 60.573-51.288 102.4-51.288 8.766 0 17.326 0.89 25.602 2.576v-309.776zM716.8 230.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM230.4 204.8c-6.552 0-13.102 2.499-18.102 7.499-9.997 9.997-9.997 26.206 0 36.203l51.2 51.2c9.998 9.997 26.206 9.997 36.205 0 9.997-9.997 9.997-26.206 0-36.203l-51.2-51.2c-5-5-11.55-7.499-18.102-7.499zM281.6 102.4c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l153.6 153.6c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-153.6-153.6c-5-5-11.55-7.499-18.102-7.499zM435.2 102.4c-6.552 0-13.102 2.499-18.102 7.499-9.997 9.997-9.997 26.206 0 36.203l51.2 51.2c9.998 9.997 26.206 9.997 36.205 0s9.998-26.206 0-36.203l-51.2-51.2c-5-5-11.55-7.499-18.102-7.499z" data-tags="store, shop, market" />
<glyph unicode="&#xe82e;" d="M409.6-51.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4zM409.6 102.4c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM768-51.2c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4 102.4-45.936 102.4-102.4-45.936-102.4-102.4-102.4zM768 102.4c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2 51.2 22.968 51.2 51.2-22.968 51.2-51.2 51.2zM898.021 744.112c-12.859 15.181-32.258 23.888-53.221 23.888h-626.846l-5.085 30.506c-6.72 40.315-43.998 71.894-84.869 71.894h-51.2c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h51.2c15.722 0 31.781-13.603 34.366-29.112l85.566-513.395c6.718-40.314 43.997-71.893 84.867-71.893h512c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-512c-15.722 0-31.781 13.603-34.366 29.11l-12.63 75.784 510.206 44.366c39.69 3.451 75.907 36.938 82.458 76.234l34.366 206.194c3.448 20.677-1.952 41.243-14.813 56.424zM862.331 696.106l-34.366-206.194c-2.699-16.186-20.043-32.221-36.39-33.645l-514.214-44.714-50.874 305.246h618.314c5.968 0 10.995-2.054 14.155-5.782 3.157-3.73 4.357-9.024 3.376-14.912z" data-tags="cart, shop" />
<glyph unicode="&#xe82f;" d="M384-4.33c-20.554 0-39.84 7.966-54.306 22.43l-260.394 260.395c-14.466 14.464-22.432 33.75-22.432 54.304s7.966 39.84 22.434 54.306l439.594 439.592c24.91 24.914 70.269 43.702 105.504 43.702h230.4c42.349 0 76.8-34.453 76.8-76.8v-230.4c0-35.232-18.787-80.59-43.699-105.504l-439.595-439.595c-14.466-14.466-33.752-22.43-54.306-22.43zM614.4 819.2c-21.246 0-54.278-13.682-69.299-28.704l-439.595-439.595c-4.795-4.795-7.435-11.224-7.435-18.101s2.64-13.306 7.435-18.099l260.394-260.397c4.795-4.794 11.224-7.434 18.101-7.434s13.307 2.64 18.102 7.435l439.594 439.592c15.021 15.024 28.704 48.058 28.704 69.302v230.4c0 14.115-11.485 25.6-25.6 25.6h-230.4zM742.4 614.4c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM742.4 716.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z" data-tags="tag, price" />
<glyph unicode="&#xe830;" d="M819.2-51.2c-90.691 0-187.154 25.699-286.706 76.386-91.794 46.736-182.48 113.654-262.258 193.522-79.763 79.853-146.595 170.624-193.272 262.498-50.608 99.61-76.269 196.102-76.269 286.795 0 58.774 54.765 115.55 78.31 137.232 33.85 31.17 87.104 67.568 125.794 67.568 19.245 0 41.803-12.589 70.994-39.616 21.782-20.17 46.27-47.51 70.814-79.067 14.794-19.021 88.592-116.267 88.592-162.917 0-38.27-43.25-64.853-89.037-92.998-17.694-10.875-35.992-22.122-49.226-32.73-14.114-11.315-16.645-17.288-17.061-18.629 48.602-121.128 197.141-269.651 318.203-318.184 1.085 0.341 7.067 2.699 18.592 17.075 10.608 13.234 21.854 31.531 32.73 49.227 28.144 45.789 54.726 89.038 92.998 89.038 46.648 0 143.896-73.798 162.917-88.592 31.557-24.546 58.898-49.032 79.067-70.816 27.029-29.189 39.616-51.747 39.616-70.992 0-38.701-36.378-92.115-67.528-126.099-21.693-23.662-78.491-78.701-137.272-78.701zM204.477 921.597c-13.731-0.262-50.634-17.054-90.789-54.029-38.115-35.099-61.792-73.25-61.792-99.568 0-344.523 423.093-768 767.304-768 26.28 0 64.418 23.795 99.528 62.099 37.003 40.366 53.806 77.413 54.069 91.178-1.662 9.728-28.57 47.563-102.232 104.283-63.322 48.762-114.699 74.886-127.901 75.237-0.925-0.274-6.656-2.467-18.277-17.222-10.104-12.832-20.912-30.418-31.366-47.424-28.683-46.666-55.774-90.744-95.122-90.744-6.336 0-12.597 1.219-18.608 3.624-134.376 53.75-293.31 212.685-347.061 347.061-6.456 16.138-7.485 41.414 24.272 70.184 16.882 15.293 40.25 29.656 62.848 43.546 17.006 10.453 34.59 21.261 47.422 31.366 14.755 11.619 16.95 17.352 17.222 18.277-0.352 13.203-26.475 64.579-75.237 127.902-56.72 73.659-94.554 100.568-104.282 102.23z" data-tags="phone-handset, telephone, phone, call, contact" />
<glyph unicode="&#xe831;" d="M916.19 517.291c-53.283-0.002-149.901 19.214-180.016 49.326-18.466 18.466-22.854 41.64-26.381 60.262-4.344 22.931-6.95 29.755-17.010 34.077-46.194 19.853-112.456 31.238-181.8 31.238-68.621 0-134.16-11.189-179.81-30.699-9.939-4.248-12.499-11.050-16.741-33.938-3.459-18.672-7.765-41.91-26.234-60.381-16.814-16.813-51.976-28.36-78.512-35.086-34.218-8.674-70.85-13.646-100.502-13.646-33.982 0-56.965 6.461-70.258 19.755-20.021 20.019-32.797 47.4-35.050 75.12-1.901 23.365 2.6 57.979 34.824 90.205 52.315 52.315 122.699 93.11 209.195 121.253 79.549 25.882 170.093 39.562 261.842 39.562 92.378 0 183.67-13.848 264.006-40.048 87.304-28.472 158.35-69.688 211.163-122.499 53.766-53.765 40.451-125.102 0.629-164.928-13.173-13.17-35.856-19.571-69.347-19.573zM510.986 743.395c77.157 0 148.901-12.571 202.014-35.398 36.51-15.69 42.632-48 47.099-71.59 2.672-14.104 4.979-26.285 12.28-33.586 12.915-12.914 87.362-34.331 143.811-34.33 24.638 0 32.398 4.219 33.4 4.835 15.851 16.061 35.757 55.621-0.885 92.261-92.392 92.392-256.493 147.552-438.966 147.552-180.973 0-343.526-54.51-434.832-145.818-14.76-14.76-21.488-31.533-19.998-49.853 1.258-15.462 8.72-31.445 19.986-42.827 0.965-0.606 8.846-5 34.291-5 56.242 0 130.12 21.048 142.811 33.738 7.226 7.227 9.482 19.403 12.094 33.502 4.382 23.659 10.386 56.061 46.963 71.691 52.538 22.456 123.541 34.822 199.931 34.822zM844.8 51.2h-665.6c-34.347 0-66.043 13.509-89.248 38.040-23.206 24.531-34.936 56.928-33.032 91.222 0.218 3.928 6.024 97.307 65.029 191.453 34.904 55.694 81.181 100.088 137.541 131.946 69.658 39.374 154.613 59.339 252.51 59.339s182.853-19.965 252.509-59.339c56.363-31.858 102.637-76.251 137.542-131.946 59.005-94.146 64.811-187.525 65.030-191.453 1.904-34.296-9.827-66.691-33.034-91.222s-54.901-38.040-89.248-38.040zM512 512c-159.592 0-275.859-55.696-345.574-165.541-52.726-83.077-58.336-168.038-58.387-168.888-1.114-20.050 5.67-38.942 19.107-53.146s31.923-22.026 52.054-22.026h665.6c20.131 0 38.618 7.822 52.054 22.027 13.435 14.203 20.222 33.096 19.104 53.195-0.046 0.798-5.658 85.762-58.384 168.837-69.715 109.845-185.984 165.541-345.574 165.541zM512 153.6c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6zM512 409.6c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4z" data-tags="phone, telephone, call, contact" />
<glyph unicode="&#xe832;" d="M921.6 625.003l-270.997 270.997c-9.65 9.65-22.507 14.965-36.203 14.965s-26.554-5.314-36.203-14.965l-14.997-14.997c-14.834-14.834-25.6-40.826-25.6-61.803v-51.2c0-7.288-5.45-20.446-10.603-25.6l-142.997-142.997c-5.152-5.154-18.312-10.603-25.6-10.603h-51.2c-20.978 0-46.97-10.766-61.803-25.6l-14.997-14.997c-19.963-19.963-19.963-52.443 0-72.406l79.534-79.534-253.426-329.453c-7.84-10.192-6.902-24.619 2.189-33.71 4.966-4.966 11.522-7.499 18.109-7.499 5.477 0 10.974 1.75 15.602 5.309l329.453 253.426 79.536-79.534c9.65-9.651 22.507-14.966 36.203-14.966s26.554 5.314 36.203 14.966l14.997 14.997c14.834 14.834 25.6 40.826 25.6 61.803v51.2c0 7.288 5.45 20.446 10.603 25.6l142.997 142.997c5.154 5.154 18.312 10.603 25.6 10.603h51.2c20.976 0 46.968 10.766 61.803 25.6l14.997 14.997c9.65 9.65 14.966 22.507 14.966 36.203s-5.317 26.554-14.966 36.203zM216.757 191.158l129.688 168.594 38.906-38.906-168.594-129.688zM870.4 573.803c-5.154-5.154-18.312-10.603-25.6-10.603h-51.2c-20.976 0-46.968-10.766-61.803-25.6l-142.997-142.997c-14.834-14.834-25.6-40.826-25.6-61.803v-51.2c0-7.288-5.45-20.446-10.603-25.6l-14.93-14.958c-0.006-0.003-0.032-0.008-0.067-0.008v-0.032l-270.997 270.998 14.998 14.998c5.152 5.154 18.312 10.603 25.6 10.603h51.2c20.978 0 46.97 10.766 61.803 25.6l142.995 142.995c14.834 14.834 25.6 40.826 25.6 61.803v51.2c0 7.288 5.45 20.446 10.603 25.6l14.997 14.997 270.997-270.997-14.997-14.997z" data-tags="pushpin, pin, location" />
<glyph unicode="&#xe833;" d="M512-51.2c-7.856 0-15.277 3.606-20.13 9.784-2.931 3.73-72.587 92.864-143.229 224.51-41.581 77.491-74.742 153.568-98.565 226.118-30.043 91.499-45.277 177.758-45.277 256.387 0 169.39 137.81 307.2 307.2 307.2s307.2-137.81 307.2-307.2c0-78.629-15.234-164.888-45.278-256.386-23.822-72.55-56.984-148.629-98.565-226.118-70.64-131.646-140.298-220.781-143.229-224.51-4.851-6.179-12.272-9.786-20.128-9.786zM512 921.6c-141.158 0-256-114.842-256-256 0-166.597 74.914-341.176 137.758-458.296 46.186-86.074 92.634-154.306 118.237-189.938 25.709 35.789 72.429 104.432 118.688 190.76 62.643 116.902 137.317 291.163 137.317 457.474 0 141.158-114.84 256-256 256zM512 512c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6zM512 768c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4z" data-tags="map-marker, pin, location" />
<glyph unicode="&#xe834;" d="M960.659 917.776c-7.549 4.664-16.971 5.088-24.907 1.122l-295.752-147.875-295.752 147.875c-7.206 3.603-15.691 3.603-22.898 0l-307.2-153.6c-8.672-4.336-14.15-13.2-14.15-22.898v-768c0-8.872 4.594-17.112 12.141-21.776 4.11-2.541 8.779-3.824 13.461-3.824 3.912 0 7.834 0.898 11.446 2.702l295.752 147.875 295.752-147.875c7.206-3.603 15.693-3.603 22.899 0l307.2 153.6c8.674 4.336 14.152 13.2 14.152 22.898v768c-0.003 8.872-4.597 17.112-12.144 21.776zM307.2 143.822l-256-128v710.755l256 128v-710.755zM358.4 854.578l256-128v-710.757l-256 128v710.757zM921.6 143.822l-256-128v710.755l256 128v-710.755z" data-tags="map, guide, address" />
<glyph unicode="&#xe835;" d="M435.202-51.202c-2.205 0-4.435 0.285-6.642 0.878-11.186 3.003-18.96 13.142-18.96 24.723v384h-384c-11.581 0-21.72 7.774-24.723 18.96-3.005 11.184 1.874 22.994 11.898 28.795l972.8 563.2c10.037 5.811 22.726 4.147 30.928-4.053 8.202-8.202 9.864-20.891 4.053-30.93l-563.2-972.8c-4.658-8.045-13.186-12.774-22.154-12.774zM120.912 409.6h314.288c14.138 0 25.6-11.461 25.6-25.6v-314.288l467.346 807.234-807.234-467.346z" data-tags="location, compass, direction" />
<glyph unicode="&#xe836;" d="M947.2 870.4h-128v25.6c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-25.6h-512v25.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-25.6h-128c-42.347 0-76.8-34.453-76.8-76.8v-716.8c0-42.349 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.451 76.8 76.8v716.8c0 42.347-34.451 76.8-76.8 76.8zM76.8 819.2h128v-76.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v76.8h512v-76.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v76.8h128c14.115 0 25.6-11.485 25.6-25.6v-128h-921.6v128c0 14.115 11.485 25.6 25.6 25.6zM947.2 51.2h-870.4c-14.115 0-25.6 11.485-25.6 25.6v537.6h921.6v-537.6c0-14.115-11.485-25.6-25.6-25.6zM384 460.8h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM537.6 460.8h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 460.8h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 460.8h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM230.4 358.4h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM384 358.4h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM537.6 358.4h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 358.4h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 358.4h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM230.4 256h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM384 256h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM537.6 256h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 256h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 256h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM230.4 153.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM384 153.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM537.6 153.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 153.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 153.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="calendar-full, calendar, date, schedule" />
<glyph unicode="&#xe837;" d="M896 153.6h-819.2c-42.347 0-76.8 34.451-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.453 76.8-76.8v-409.6c0-42.349-34.451-76.8-76.8-76.8zM76.8 665.6c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-819.2zM179.2 563.2h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM844.8 563.2h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM230.4 460.8h-102.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM179.2 256h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM588.8 256h-307.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 256h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 358.4h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h128v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6zM281.6 358.4h-153.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h153.6c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM307.2 588.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM409.6 588.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM512 588.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM614.4 588.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM716.8 588.8c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM358.4 486.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM460.8 486.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM563.2 486.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM665.6 486.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM768 486.4c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM409.6 384c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM512 384c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM614.4 384c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6z" data-tags="keyboard, type, typing" />
<glyph unicode="&#xe838;" d="M230.4 256c-14.138 0-25.6-11.461-25.6-25.6v-0.070c-21.408 16.107-48.006 25.67-76.8 25.67-70.579 0-128-57.421-128-128s57.421-128 128-128c28.794 0 55.392 9.563 76.8 25.67v-0.070c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v204.8c0 14.139-11.462 25.6-25.6 25.6zM128 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM435.2 256c-28.794 0-55.392-9.563-76.8-25.67v204.87c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-409.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v0.070c21.408-16.107 48.006-25.67 76.8-25.67 70.579 0 128 57.421 128 128s-57.421 128-128 128zM435.2 51.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM742.4 0c-70.579 0-128 57.421-128 128s57.421 128 128 128c22.496 0 44.632-5.925 64.014-17.136 12.238-7.080 16.422-22.739 9.344-34.978-7.082-12.24-22.744-16.421-34.978-9.344-11.603 6.71-24.875 10.258-38.381 10.258-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8c13.509 0 26.782 3.547 38.382 10.258 12.235 7.078 27.898 2.899 34.978-9.341 7.080-12.237 2.899-27.899-9.341-34.978-19.382-11.213-41.52-17.139-64.019-17.139zM588.8 435.2c-6.552 0-13.102 2.499-18.101 7.499l-153.6 153.6c-9.997 9.998-9.997 26.206 0 36.205 9.998 9.997 26.206 9.997 36.205 0l135.496-135.499 340.299 340.298c9.997 9.997 26.206 9.997 36.203 0 9.998-9.998 9.998-26.206 0-36.205l-358.4-358.4c-5-4.998-11.55-7.498-18.102-7.498z" data-tags="spell-check, spelling" />
<glyph unicode="&#xe839;" d="M896 870.4h-819.2c-42.347 0-76.8-34.453-76.8-76.8v-512c0-42.349 34.453-76.8 76.8-76.8h384v-102.4h-179.2c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h409.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-179.2v102.4h384c42.349 0 76.8 34.451 76.8 76.8v512c0 42.347-34.451 76.8-76.8 76.8zM921.6 281.6c0-14.115-11.485-25.6-25.6-25.6h-819.2c-14.115 0-25.6 11.485-25.6 25.6v512c0 14.115 11.485 25.6 25.6 25.6h819.2c14.115 0 25.6-11.485 25.6-25.6v-512z" data-tags="screen, monitor" />
<glyph unicode="&#xe83a;" d="M537.6 51.2h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4-51.2h-460.8c-42.347 0-76.8 34.451-76.8 76.8v870.4c0 42.347 34.453 76.8 76.8 76.8h460.8c42.349 0 76.8-34.453 76.8-76.8v-870.4c0-42.349-34.451-76.8-76.8-76.8zM281.6 921.6c-14.115 0-25.6-11.485-25.6-25.6v-870.4c0-14.115 11.485-25.6 25.6-25.6h460.8c14.115 0 25.6 11.485 25.6 25.6v870.4c0 14.115-11.485 25.6-25.6 25.6h-460.8zM691.2 153.6h-358.4c-14.138 0-25.6 11.461-25.6 25.6v665.6c0 14.138 11.462 25.6 25.6 25.6h358.4c14.139 0 25.6-11.462 25.6-25.6v-665.6c0-14.139-11.461-25.6-25.6-25.6zM358.4 204.8h307.2v614.4h-307.2v-614.4z" data-tags="smartphone, mobile, phone, cellular" />
<glyph unicode="&#xe83b;" d="M844.8-51.2h-665.6c-42.347 0-76.8 34.451-76.8 76.8v870.4c0 42.347 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.453 76.8-76.8v-870.4c0-42.349-34.451-76.8-76.8-76.8zM179.2 921.6c-14.115 0-25.6-11.485-25.6-25.6v-870.4c0-14.115 11.485-25.6 25.6-25.6h665.6c14.115 0 25.6 11.485 25.6 25.6v870.4c0 14.115-11.485 25.6-25.6 25.6h-665.6zM537.6 51.2h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM793.6 153.6h-563.2c-14.138 0-25.6 11.461-25.6 25.6v665.6c0 14.138 11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.462 25.6-25.6v-665.6c0-14.139-11.461-25.6-25.6-25.6zM256 204.8h512v614.4h-512v-614.4z" data-tags="tablet, mobile" />
<glyph unicode="&#xe83c;" d="M179.2 256h665.6c42.349 0 76.8 34.451 76.8 76.8v409.6c0 42.347-34.451 76.8-76.8 76.8h-665.6c-42.347 0-76.8-34.453-76.8-76.8v-409.6c0-42.349 34.453-76.8 76.8-76.8zM153.6 742.4c0 14.115 11.485 25.6 25.6 25.6h665.6c14.115 0 25.6-11.485 25.6-25.6v-409.6c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v409.6zM998.4 204.8h-972.8c-14.138 0-25.6-11.461-25.6-25.6v-51.2c0-42.349 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.451 76.8 76.8v51.2c0 14.139-11.461 25.6-25.6 25.6zM947.2 102.4h-870.4c-14.115 0-25.6 11.485-25.6 25.6v25.6h921.6v-25.6c0-14.115-11.485-25.6-25.6-25.6z" data-tags="laptop, computer, pc" />
<glyph unicode="&#xe83d;" d="M588.8 256h-409.6c-42.347 0-76.8 34.451-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h665.6c42.349 0 76.8-34.453 76.8-76.8v-51.2c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v51.2c0 14.115-11.485 25.6-25.6 25.6h-665.6c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM588.8 51.2h-512c-42.347 0-76.8 34.453-76.8 76.8v51.2c0 14.139 11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-537.6v-25.6c0-14.115 11.485-25.6 25.6-25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM947.2 51.2h-204.8c-42.347 0-76.8 34.453-76.8 76.8v409.6c0 42.347 34.453 76.8 76.8 76.8h204.8c42.347 0 76.8-34.453 76.8-76.8v-409.6c0-42.347-34.453-76.8-76.8-76.8zM742.4 563.2c-14.115 0-25.6-11.485-25.6-25.6v-409.6c0-14.115 11.485-25.6 25.6-25.6h204.8c14.115 0 25.6 11.485 25.6 25.6v409.6c0 14.115-11.485 25.6-25.6 25.6h-204.8zM844.8 153.6c-6.736 0-13.328 2.736-18.098 7.504-4.766 4.768-7.502 11.36-7.502 18.096s2.736 13.344 7.502 18.098c4.754 4.766 11.362 7.502 18.098 7.502s13.344-2.736 18.096-7.502c4.768-4.754 7.504-11.346 7.504-18.098 0-6.736-2.736-13.344-7.504-18.096-4.768-4.768-11.36-7.504-18.096-7.504z" data-tags="laptop-phone, devices, responsive" />
<glyph unicode="&#xe83e;" d="M486.4 358.4c-14.138 0-25.6 11.461-25.6 25.6v460.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-460.8c0-14.139-11.462-25.6-25.6-25.6zM486.4 0c-102.57 0-199 39.944-271.53 112.47-72.528 72.528-112.47 168.96-112.47 271.53 0 84.395 26.859 164.478 77.674 231.594 49.15 64.915 118.979 113.394 196.624 136.501 13.55 4.034 27.805-3.683 31.838-17.234s-3.683-27.805-17.234-31.838c-139.955-41.654-237.702-172.84-237.702-319.022 0-183.506 149.294-332.8 332.8-332.8s332.8 149.294 332.8 332.8c0 146.187-97.75 277.374-237.71 319.024-13.552 4.034-21.267 18.288-17.234 31.838 4.032 13.552 18.29 21.267 31.837 17.235 77.646-23.106 147.48-71.582 196.632-136.499 50.816-67.115 77.675-147.202 77.675-231.598 0-102.57-39.942-199.002-112.47-271.53-72.528-72.526-168.96-112.47-271.53-112.47z" data-tags="power-switch, toggle" />
<glyph unicode="&#xe83f;" d="M25.6 0c-11.507 0-21.6 7.677-24.67 18.766s1.634 22.864 11.501 28.784c86.57 51.942 122.485 127.414 135.218 162.755-94.088 72.048-147.648 171.746-147.648 276.094 0 52.704 13.23 103.755 39.323 151.736 24.902 45.794 60.406 86.806 105.526 121.899 91.504 71.17 212.802 110.365 341.55 110.365s250.046-39.195 341.552-110.366c45.118-35.093 80.624-76.104 105.526-121.899 26.091-47.979 39.322-99.030 39.322-151.734 0-52.702-13.23-103.755-39.322-151.736-24.902-45.794-60.408-86.806-105.526-121.899-91.506-71.17-212.803-110.365-341.552-110.365-52.907 0-104.8 6.627-154.437 19.707-21.974-14.637-63.040-40.605-112.086-65.005-76.163-37.89-141.528-57.102-194.277-57.102zM486.4 819.2c-239.97 0-435.2-149.294-435.2-332.8 0-92.946 51.432-182.379 141.107-245.368 8.797-6.178 12.795-17.194 10.013-27.576-5.984-22.325-26.363-83.597-80.878-142.734 66.659 23.341 138.424 63.832 191.434 100.286 6.296 4.328 14.197 5.621 21.544 3.52 48.558-13.888 99.691-20.928 151.981-20.928 239.97 0 435.2 149.294 435.2 332.8s-195.23 332.8-435.2 332.8z" data-tags="bubble, chat, comment" />
<glyph unicode="&#xe840;" d="M486.4 0c-4.283 0-8.566 1.074-12.432 3.222-5.954 3.307-147.285 82.464-274.914 208.987-10.040 9.954-10.11 26.163-0.157 36.203s26.163 10.11 36.203 0.157c101.349-100.472 214.307-171.323 251.293-193.35 37 22.054 150.123 93.045 251.304 193.352 10.042 9.952 26.248 9.882 36.205-0.158 9.954-10.040 9.883-26.25-0.158-36.205-127.629-126.52-268.958-205.678-274.912-208.986-3.866-2.149-8.149-3.222-12.432-3.222zM65.478 409.584c-9.61 0-18.821 5.437-23.182 14.709-28.066 59.659-42.296 119.314-42.296 177.307 0 148.218 120.582 268.8 268.8 268.8 50.173 0 103.461-18.805 150.051-52.952 27.251-19.973 50.442-44.043 67.549-69.606 17.107 25.565 40.299 49.634 67.55 69.606 46.589 34.147 99.878 52.952 150.050 52.952 148.218 0 268.8-120.582 268.8-268.8 0-57.992-14.23-117.645-42.294-177.301-6.018-12.794-21.267-18.29-34.061-12.267-12.794 6.018-18.286 21.267-12.269 34.061 24.834 52.786 37.424 105.107 37.424 155.507 0 119.986-97.616 217.6-217.6 217.6-87.187 0-171.856-71.725-193.314-136.096-3.485-10.453-13.267-17.504-24.286-17.504s-20.802 7.051-24.286 17.504c-21.456 64.371-106.125 136.096-193.314 136.096-119.986 0-217.6-97.614-217.6-217.6 0-50.4 12.592-102.723 37.426-155.512 6.019-12.794 0.526-28.043-12.267-34.061-3.522-1.659-7.23-2.443-10.88-2.443zM538.346 204.776c-0.232 0-0.456 0.002-0.678 0.006-10.35 0.218-29.122 5.598-38.552 39.194l-62.291 221.915-41.328-167.894c-8.106-32.933-26.902-39.813-37.387-40.982-10.483-1.173-30.334 1.397-45.504 31.733l-31.005 62.010c-1.475 2.952-2.85 4.834-3.893 6-0.171-0.229-0.355-0.483-0.546-0.765-18.939-27.816-61.053-48.792-97.962-48.792h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c21.554 0 47.152 13.942 55.638 26.408 11.397 16.739 28.026 25.638 45.629 24.48 19.142-1.286 36.246-14.274 46.928-35.634l22.781-45.562 47.93 194.71c8.069 32.784 24.658 39.907 37.15 40.109 12.512 0.24 29.302-6.379 38.43-38.888l65.763-234.286 60.323 184.738c10.504 32.168 29.779 37.707 40.334 38.144 10.542 0.435 30.224-3.482 43.357-34.672l37.062-88.026c6.946-16.496 29.573-31.522 47.474-31.522h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-76.8c-38.24 0-79.822 27.608-94.662 62.853l-30.301 71.968-65.208-199.699c-10.598-32.454-29-37.546-39.483-37.546z" data-tags="heart-pulse, health, heart-rate" />
<glyph unicode="&#xe841;" d="M1024 716.808v76.792c0 14.138-11.461 25.6-25.6 25.6h-179.192c-0.005 0-0.011 0-0.016 0h-255.984c-0.005 0-0.011 0-0.016 0h-255.984c-0.005 0-0.011 0-0.016 0h-281.592c-14.138 0-25.6-11.462-25.6-25.6v-307.2c0-14.139 11.462-25.6 25.6-25.6h76.8v-307.2h-25.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.138 0 25.6 11.461 25.6 25.6s-11.462 25.6-25.6 25.6h-25.6v153.6h512v-153.6h-25.6c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-25.6v307.2h76.8c14.139 0 25.6 11.461 25.6 25.6v230.392c0 0.005 0 0.011 0 0.016zM972.8 727.403l-215.403-215.403h-183.594l256 256h142.997v-40.597zM317.803 512l256 256h183.594l-256-256h-183.594zM61.803 512l256 256h183.594l-256-256h-183.594zM245.397 768l-194.197-194.197v194.197h194.197zM153.6 153.6v307.2h51.2v-307.2h-51.2zM256 358.4v102.4h512v-102.4h-512zM870.4 153.6h-51.2v307.2h51.2v-307.2zM829.803 512l142.997 142.997v-142.997h-142.997z" data-tags="construction, road-sign" />
<glyph unicode="&#xe842;" d="M435.2-51.2c-116.246 0-225.534 45.269-307.733 127.467s-127.467 191.488-127.467 307.733c0 116.246 45.269 225.534 127.467 307.733s191.486 127.467 307.733 127.467c14.138 0 25.6-11.462 25.6-25.6v-384h384c14.139 0 25.6-11.461 25.6-25.6 0-116.245-45.269-225.534-127.467-307.733s-191.488-127.467-307.733-127.467zM409.6 767.157c-199.842-13.226-358.4-180.026-358.4-383.157 0-211.739 172.262-384 384-384 203.131 0 369.931 158.558 383.157 358.4h-383.157c-14.138 0-25.6 11.461-25.6 25.6v383.157zM947.2 460.8h-409.6c-14.139 0-25.6 11.462-25.6 25.6v409.6c0 14.138 11.461 25.6 25.6 25.6 116.245 0 225.534-45.269 307.733-127.467s127.467-191.486 127.467-307.733c0-14.138-11.461-25.6-25.6-25.6zM563.2 512h357.557c-12.664 191.374-166.184 344.891-357.557 357.557v-357.557z" data-tags="pie-chart, chart, statistics" />
<glyph unicode="&#xe843;" d="M896-51.2h-819.2c-42.347 0-76.8 34.451-76.8 76.8v819.2c0 42.347 34.453 76.8 76.8 76.8h819.2c42.349 0 76.8-34.453 76.8-76.8v-819.2c0-42.349-34.451-76.8-76.8-76.8zM76.8 870.4c-14.115 0-25.6-11.485-25.6-25.6v-819.2c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v819.2c0 14.115-11.485 25.6-25.6 25.6h-819.2zM332.8 102.4h-102.4c-14.138 0-25.6 11.461-25.6 25.6v460.8c0 14.138 11.462 25.6 25.6 25.6h102.4c14.138 0 25.6-11.462 25.6-25.6v-460.8c0-14.139-11.462-25.6-25.6-25.6zM256 153.6h51.2v409.6h-51.2v-409.6zM537.6 102.4h-102.4c-14.138 0-25.6 11.461-25.6 25.6v614.4c0 14.138 11.462 25.6 25.6 25.6h102.4c14.139 0 25.6-11.462 25.6-25.6v-614.4c0-14.139-11.461-25.6-25.6-25.6zM460.8 153.6h51.2v563.2h-51.2v-563.2zM742.4 102.4h-102.4c-14.139 0-25.6 11.461-25.6 25.6v256c0 14.139 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.461 25.6-25.6v-256c0-14.139-11.461-25.6-25.6-25.6zM665.6 153.6h51.2v204.8h-51.2v-204.8z" data-tags="chart-bars, chart, statistics" />
<glyph unicode="&#xe844;" d="M947.2 716.8h-153.67c16.107 21.408 25.67 48.006 25.67 76.8 0 70.579-57.421 128-128 128-71.181 0-130.869-56.381-160.112-89.987-17.707-20.35-32.954-42.136-44.686-63.208-11.733 21.070-26.981 42.858-44.688 63.208-29.245 33.606-88.931 89.987-160.114 89.987-70.579 0-128-57.421-128-128 0-28.794 9.563-55.392 25.669-76.8h-153.669c-14.138 0-25.6-11.462-25.6-25.6v-153.6c0-14.138 11.462-25.6 25.6-25.6h25.6v-486.4c0-42.349 34.453-76.8 76.8-76.8h716.8c42.349 0 76.8 34.451 76.8 76.8v486.4h25.6c14.139 0 25.6 11.462 25.6 25.6v153.6c0 14.138-11.461 25.6-25.6 25.6zM569.712 798.003c40.035 46.010 84.317 72.397 121.488 72.397 42.349 0 76.8-34.453 76.8-76.8s-34.451-76.8-76.8-76.8h-172.946c8.854 22.621 26.758 52.818 51.458 81.203zM563.2 0h-153.6v665.6h153.6v-665.6zM204.8 793.6c0 42.347 34.453 76.8 76.8 76.8 37.173 0 81.453-26.387 121.488-72.397 24.699-28.386 42.603-58.582 51.458-81.203h-172.946c-42.347 0-76.8 34.453-76.8 76.8zM51.2 665.6h307.2v-102.4h-307.2v102.4zM102.4 25.6v486.4h256v-512h-230.4c-14.115 0-25.6 11.485-25.6 25.6zM870.4 25.6c0-14.115-11.485-25.6-25.6-25.6h-230.4v512h256v-486.4zM921.6 563.2h-307.2v102.4h307.2v-102.4z" data-tags="gift, birthday, prize, box" />
<glyph unicode="&#xe845;" d="M967.68 604.16l-153.6 204.8c-3.95 5.267-9.776 8.81-16.272 9.891l-307.2 51.2c-2.786 0.464-5.632 0.464-8.418 0l-307.2-51.2c-6.494-1.082-12.322-4.626-16.27-9.891l-153.6-204.8c-7.339-9.786-6.731-23.395 1.451-32.486l460.8-512c4.856-5.394 11.771-8.474 19.029-8.474s14.173 3.080 19.029 8.475l460.8 512c8.182 9.091 8.79 22.699 1.451 32.485zM654.65 614.4l-168.25-462.691-168.251 462.691h336.501zM343.405 665.6l142.995 142.995 142.995-142.995h-285.99zM560.989 806.416l189.349-31.558-63.115-94.674-126.234 126.232zM285.579 680.184l-63.117 94.674 189.349 31.558-126.232-126.232zM239.096 657.606l-152.813-30.563 91.688 122.25 61.125-91.686zM265.058 610.584l152.285-418.784-342.642 380.712 190.357 38.072zM707.744 610.584l190.357-38.072-342.643-380.712 152.286 418.784zM733.704 657.606l61.125 91.688 91.688-122.25-152.813 30.562z" data-tags="diamond, jewelry" />
<glyph unicode="&#xe846;" d="M998.4 153.6h-25.6c-29.667 0-51.2-32.299-51.2-76.8 0-14.115-11.485-25.6-25.6-25.6s-25.6 11.485-25.6 25.6v51.2c0 14.139-11.461 25.6-25.6 25.6-7.074 0-13.475-2.869-18.109-7.504-10.027 4.806-21.248 7.504-33.091 7.504-42.349 0-76.8-34.451-76.8-76.8 0-8.974 1.563-17.587 4.403-25.6h-55.603c-20.762 0-52.194 14.162-65.949 29.71l-53.472 60.445 471.395 532.882c8.221 9.294 8.459 22.888 1.238 32.41l-153.533 204.714c-4.834 6.446-12.422 10.24-20.48 10.24h-665.6c-8.058 0-15.645-3.794-20.48-10.24l-153.539-204.718c-7.216-9.522-6.974-23.112 1.245-32.403l471.395-532.882-53.472-60.446c-14.802-16.733-40.723-29.71-53.149-29.71h-12.8v25.6c0 42.349-34.453 76.8-76.8 76.8-14.413 0-27.906-3.998-39.442-10.931-6.52 6.925-14.97 10.931-24.558 10.931-15.762 0-27.496-12.459-35.957-23.314-7.773-9.97-15.813-22.981-22.638-36.634l-5.405-10.81v45.157c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-51.2c0-14.115-11.485-25.6-25.6-25.6s-25.6 11.485-25.6 25.6v153.6c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6v-153.6c0-42.347 34.453-76.8 76.8-76.8 14.413 0 27.906 3.998 39.442 10.933 6.518-6.926 14.97-10.933 24.558-10.933 15.762 0 27.496 12.459 35.957 23.314 7.773 9.97 15.813 22.981 22.638 36.634l5.405 10.81v-45.157c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v51.2c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-51.2c0-14.139 11.462-25.6 25.6-25.6h38.4c28.467 0 67.803 20.2 91.498 46.986l49.302 55.733 49.301-55.731c23.696-26.787 68.534-46.987 104.299-46.987h128c19.654 0 37.602 7.43 51.2 19.618 13.598-12.187 31.546-19.618 51.2-19.618 42.349 0 76.8 34.451 76.8 76.8 0 12.749 3.099 21.594 5.278 25.6h20.322c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6zM58.6 692.533l133.4 177.867h640l133.4-177.867-453.4-512.539-453.4 512.539zM793.6 51.2c-14.115 0-25.6 11.485-25.6 25.6s11.485 25.6 25.6 25.6 25.6-11.485 25.6-25.6-11.485-25.6-25.6-25.6zM128 204.8c6.736 0 13.344 2.736 18.096 7.504 4.768 4.768 7.504 11.36 7.504 18.096s-2.736 13.328-7.504 18.098c-4.752 4.766-11.36 7.502-18.096 7.502s-13.328-2.736-18.096-7.502c-4.768-4.754-7.504-11.362-7.504-18.098s2.736-13.344 7.504-18.096c4.768-4.768 11.36-7.504 18.096-7.504z" data-tags="linearicons, perxis, diamond" />
<glyph unicode="&#xe847;" d="M409.6 947.2c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-66.843 12.915-122.715 23.293-167.608 10.112-43.749 18.099-78.302 6.637-92.718-9.525-11.978-36.712-18.942-80.938-20.778-0.114 8.314-0.189 16.669-0.19 25.109v204.795c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-204.803c0.002-8.426-0.072-16.768-0.182-25.069-44.099 1.898-71.219 8.901-80.76 20.893-11.52 14.477-3.542 49.086 6.557 92.902 10.328 44.818 23.184 100.594 23.184 167.277 0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-60.859-12.131-113.488-21.878-155.776-13.198-57.259-23.622-102.485 3.27-136.283 19.97-25.096 56.374-37.542 119.458-40.192-5.741-142.84-26.443-265.747-43.589-367.451-22.816-135.354-37.888-224.77 0.605-270.298 15.934-18.845 39.531-28.4 70.134-28.4 30.608 0 54.208 9.558 70.147 28.406 38.52 45.554 23.438 135.051 0.611 270.526-17.126 101.638-37.808 224.466-43.584 367.184 63.213 2.57 99.656 14.973 119.629 40.090 26.837 33.747 16.395 78.923 3.173 136.117-9.79 42.358-21.976 95.074-21.976 156.077zM312.651 10.266c-3.726-4.406-11-10.266-31.051-10.266-20.045 0-27.312 5.854-31.035 10.258-23.154 27.384-7.426 120.69 10.786 228.728 6.581 39.038 13.68 81.157 20.28 126.326 6.589-45.082 13.672-87.115 20.238-126.090 18.224-108.144 33.962-201.544 10.782-228.957zM813.158 247.731c-20.104 119.326-45.13 267.832-45.158 443.472v255.997c0 11.608-7.811 21.763-19.032 24.742-11.218 2.979-23.035-1.963-28.795-12.042-103.387-180.926-154.437-457.246-156.562-468.922-1.358-7.469 0.667-15.155 5.533-20.982 4.866-5.829 12.064-9.197 19.654-9.197h114.443c-8.957-79.045-20.954-150.25-31.581-213.302-22.819-135.354-37.891-224.77 0.605-270.298 15.936-18.845 39.531-28.4 70.134-28.4 30.608 0 54.208 9.558 70.147 28.406 38.518 45.554 23.437 135.051 0.611 270.525zM620.062 512c12.688 59.962 45.166 198.998 96.738 323.424v-144.227c0.010-63.296-3.242-123.046-8.334-179.197h-88.403zM773.451 10.266c-3.726-4.406-11-10.266-31.051-10.266-20.043 0-27.312 5.854-31.034 10.258-23.157 27.384-7.429 120.691 10.784 228.73 6.581 39.038 13.68 81.155 20.28 126.326 6.589-45.083 13.674-87.118 20.238-126.093 18.224-108.144 33.963-201.542 10.782-228.955z" data-tags="dinner, food, fork, knife" />
<glyph unicode="&#xe848;" d="M512 204.8c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6 153.6-68.904 153.6-153.6-68.904-153.6-153.6-153.6zM512 460.8c-56.464 0-102.4-45.936-102.4-102.4s45.936-102.4 102.4-102.4c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4zM814.302 867.542l-9.050 36.195c-9.682 38.726-48.534 69.062-88.453 69.062h-409.6c-39.918 0-78.771-30.336-88.454-69.062l-9.048-36.195c-32.32-9.062-56.098-38.768-56.098-73.942v-51.2c0-33.925 22.118-62.762 52.685-72.899l46.133-645.853c2.947-41.272 39.008-74.848 80.382-74.848h358.4c41.376 0 77.435 33.576 80.382 74.846l46.131 645.853c30.568 10.139 52.686 38.976 52.686 72.901v51.2c0 35.174-23.778 64.88-56.098 73.942zM307.2 921.6h409.6c16.334 0 34.821-14.434 38.781-30.28l5.23-20.92h-497.622l5.23 20.92c3.96 15.846 22.446 30.28 38.781 30.28zM762.45 614.4h-500.898l-3.658 51.2h508.213l-3.658-51.2zM729.536 153.6h-435.070l-29.258 409.6h493.584l-29.256-409.6zM691.2 0h-358.4c-14.834 0-28.256 12.499-29.312 27.294l-5.365 75.106h427.755l-5.365-75.106c-1.058-14.795-14.48-27.294-29.314-27.294zM819.2 742.4c0-14.115-11.485-25.6-25.6-25.6h-563.2c-14.115 0-25.6 11.485-25.6 25.6v51.2c0 14.093 11.446 25.558 25.531 25.597 0.030 0 0.059-0.003 0.090-0.003 0.050 0 0.099 0.006 0.149 0.006h563.030c14.115 0 25.6-11.485 25.6-25.6v-51.2z" data-tags="coffee-cup, drink, coffee" />
<glyph unicode="&#xe849;" d="M1017.987 963.683c-4.862 5.779-12.030 9.115-19.582 9.117l-26.114 0.008c-258.027 0.091-461.854 0.163-611.93-35.728-80.627-19.283-142.987-48.411-190.643-89.051-51.387-43.819-86.445-101.243-107.178-175.549-13.771-49.363-20.213-138.478 6.96-227.178 10.043-32.787 25.696-63.682 46.584-92.093-62.246-97.517-116.085-226.014-116.085-378.81 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 235.789 139.654 410.651 222.901 493.899 59.741 59.739 127.301 110.166 195.378 145.824 63.373 33.195 123.933 51.477 170.522 51.477 14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6c-55.506 0-122.686-19.822-194.278-57.323-72.603-38.030-144.467-91.621-207.822-154.976-26.726-26.726-58.899-62.346-90.824-105.994-12.403 19.496-21.998 40.173-28.619 61.79-25.597 83.555-16.19 164.038-6.597 198.422 73.206 262.397 351.32 263.072 855.925 262.89-60.16-321.93-172.331-530.309-333.613-619.571-149.582-82.786-298.008-37.613-354.877-14.346-12.005 4.912-24.051 10.949-35.802 17.944-12.147 7.227-27.858 3.243-35.091-8.904-7.232-12.149-3.245-27.859 8.902-35.093 13.923-8.288 28.256-15.464 42.602-21.334 31.843-13.027 83.144-29.706 146.704-35.184 14.034-1.21 27.928-1.814 41.672-1.814 75.189 0 145.893 18.077 210.682 53.934 82.37 45.587 153.675 119.736 211.938 220.384 68.315 118.018 119.699 274.534 152.723 465.205 1.29 7.443-0.774 15.074-5.637 20.853z" data-tags="leaf, nature, green, plant" />
<glyph unicode="&#xe84a;" d="M153.6 358.4c-57.421 0-102.4 67.712-102.4 154.155s44.979 154.155 102.4 154.155 102.4-67.712 102.4-154.155-44.979-154.155-102.4-154.155zM153.6 615.509c-24.168 0-51.2-44.030-51.2-102.955s27.032-102.954 51.2-102.954 51.2 44.030 51.2 102.955-27.032 102.954-51.2 102.954zM358.299 563.2c-57.365 0-102.299 67.469-102.299 153.6s44.934 153.6 102.299 153.6 102.299-67.469 102.299-153.6-44.934-153.6-102.299-153.6zM358.299 819.2c-24.122 0-51.099-43.792-51.099-102.4s26.978-102.4 51.099-102.4 51.099 43.792 51.099 102.4-26.978 102.4-51.099 102.4zM614.4 563.2c-57.421 0-102.4 67.469-102.4 153.6s44.979 153.6 102.4 153.6 102.4-67.469 102.4-153.6-44.979-153.6-102.4-153.6zM614.4 819.2c-24.168 0-51.2-43.792-51.2-102.4s27.032-102.4 51.2-102.4 51.2 43.792 51.2 102.4-27.032 102.4-51.2 102.4zM819.2 358.4c-57.421 0-102.4 67.712-102.4 154.155s44.979 154.155 102.4 154.155 102.4-67.712 102.4-154.155-44.979-154.155-102.4-154.155zM819.2 615.509c-24.168 0-51.2-44.030-51.2-102.955s27.032-102.954 51.2-102.954 51.2 44.030 51.2 102.955-27.032 102.954-51.2 102.954zM665.6 51.2c-44.434 0-74.482 15.032-100.99 28.293-24.573 12.291-45.792 22.907-78.21 22.907-32.298 0-53.52-10.606-78.093-22.888-26.555-13.27-56.654-28.312-101.107-28.312-28.446 0-55.258 15.501-73.557 42.53-32.104 47.421-32.619 119.362-1.413 197.378 56.152 140.381 148.794 220.893 254.17 220.893s198.018-80.512 254.168-220.893c31.206-78.018 30.693-149.958-1.413-197.378-18.298-27.029-45.109-42.53-73.555-42.53zM486.4 153.6c44.507 0 74.582-15.043 101.115-28.317 24.546-12.278 45.742-22.883 78.085-22.883 11.182 0 22.539 7.301 31.16 20.034 22.096 32.635 20.701 88.582-3.728 149.658-47.971 119.928-123.285 188.709-206.632 188.709-83.346 0-158.661-68.781-206.632-188.707-24.43-61.075-25.824-117.022-3.728-149.658 8.621-12.734 19.978-20.035 31.16-20.035 32.371 0 53.618 10.618 78.218 22.912 26.533 13.259 56.605 28.288 100.982 28.288z" data-tags="paw, pet, print" />
<glyph unicode="&#xe84b;" d="M691.2 512c-70.579 0-128 57.421-128 128s57.421 128 128 128 128-57.421 128-128-57.421-128-128-128zM691.2 716.8c-42.347 0-76.8-34.453-76.8-76.8s34.453-76.8 76.8-76.8 76.8 34.453 76.8 76.8-34.453 76.8-76.8 76.8zM25.603-51.2c-6.675 0-13.219 2.613-18.106 7.499-7.034 7.034-9.355 17.502-5.957 26.85 78.781 216.648 161.613 326.499 246.195 326.499 27.883 0 53.979-11.96 77.566-35.546 37.283-37.283 38.611-74.394 33.162-98.96-17.125-77.187-126.171-152.822-324.115-224.802-2.853-1.038-5.813-1.541-8.746-1.541zM247.736 258.446c-25.354 0-55.19-22.214-86.282-64.237-30.578-41.33-61.274-100.205-91.525-175.477 68.352 27.478 123.302 55.379 163.806 83.205 54.648 37.542 70.808 66.562 74.742 84.294 3.944 17.779-2.395 34.682-19.382 51.667-13.826 13.826-27.354 20.547-41.36 20.547zM998.4 972.8c-132.848 0-251.256-22.534-351.939-66.981-82.997-36.638-154.075-88.075-211.258-152.882-10.674-12.098-20.552-24.334-29.691-36.586-44.142-2.942-89.275-20.47-134.362-52.221-38.13-26.851-76.459-64.014-113.923-110.458-62.965-78.054-101.706-154.987-103.325-158.226-5.605-11.211-2.25-24.814 7.904-32.166 4.501-3.258 9.758-4.856 14.992-4.856 6.573 0 13.109 2.52 18.064 7.434 0.243 0.24 24.714 24.299 66.469 47.926 34.41 19.474 87.461 42.336 151.613 46.384 16.219-41.541 62.662-91.181 84.954-113.47 22.291-22.291 71.931-68.734 113.472-84.955-4.046-64.152-26.91-117.202-46.382-151.611-23.629-41.757-47.686-66.227-47.89-66.432-8.878-8.878-10.006-22.885-2.666-33.070 4.952-6.87 12.77-10.634 20.782-10.634 3.867 0 7.779 0.877 11.434 2.704 3.237 1.619 80.17 40.36 158.226 103.325 46.443 37.464 83.606 75.794 110.458 113.922 31.75 45.088 49.278 90.221 52.221 134.363 12.251 9.139 24.49 19.019 36.586 29.693 64.806 57.181 116.243 128.259 152.883 211.258 44.443 100.682 66.979 219.091 66.979 351.939v25.6h-25.6zM159.102 470.613c48.797 70.8 123.384 158.595 207.446 186.232-33.222-58.203-50.422-111.691-56.611-145.555-59.323-3.626-110.467-20.89-150.835-40.677zM521.87 108.019c19.762 40.35 36.995 91.453 40.619 150.718 33.859 6.187 87.336 23.384 145.528 56.597-27.658-83.92-115.381-158.49-186.147-207.315zM770.262 422.395c-106.48-93.952-216.794-115.195-232.662-115.195-0.102 0-10.581 0.23-38.867 20.136-19.728 13.883-42.682 33.618-64.63 55.566-21.95 21.95-41.683 44.902-55.566 64.632-19.906 28.285-20.136 38.763-20.136 38.866 0 15.869 21.243 126.182 115.197 232.662 112.416 127.406 284.533 197.059 498.894 202.227-5.17-214.358-74.822-386.477-202.229-498.894z" data-tags="rocket, spaceship, space, fast" />
<glyph unicode="&#xe84c;" d="M947.2 716.8h-230.4v76.8c0 42.347-34.453 76.8-76.8 76.8h-256c-42.347 0-76.8-34.453-76.8-76.8v-76.8h-230.4c-42.347 0-76.8-34.453-76.8-76.8v-563.2c0-42.349 34.453-76.8 76.8-76.8h870.4c42.349 0 76.8 34.451 76.8 76.8v563.2c0 42.347-34.451 76.8-76.8 76.8zM358.4 793.6c0 14.115 11.485 25.6 25.6 25.6h256c14.115 0 25.6-11.485 25.6-25.6v-76.8h-307.2v76.8zM76.8 665.6h870.4c14.115 0 25.6-11.485 25.6-25.6v-384h-102.4v25.6c0 14.139-11.461 25.6-25.6 25.6h-102.4c-14.139 0-25.6-11.461-25.6-25.6v-25.6h-409.6v25.6c0 14.139-11.462 25.6-25.6 25.6h-102.4c-14.138 0-25.6-11.461-25.6-25.6v-25.6h-102.4v384c0 14.115 11.485 25.6 25.6 25.6zM819.2 256v-51.2h-51.2v51.2h51.2zM256 256v-51.2h-51.2v51.2h51.2zM947.2 51.2h-870.4c-14.115 0-25.6 11.485-25.6 25.6v128h102.4v-25.6c0-14.139 11.462-25.6 25.6-25.6h102.4c14.138 0 25.6 11.461 25.6 25.6v25.6h409.6v-25.6c0-14.139 11.461-25.6 25.6-25.6h102.4c14.139 0 25.6 11.461 25.6 25.6v25.6h102.4v-128c0-14.115-11.485-25.6-25.6-25.6z" data-tags="briefcase, suitcase, luggage" />
<glyph unicode="&#xe84d;" d="M281.6 153.6c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM742.4 153.6c-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8zM742.4 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 716.8h-358.4c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h358.4c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM793.6 665.6h-563.2c-14.138 0-25.6-11.462-25.6-25.6v-256c0-14.139 11.462-25.6 25.6-25.6h255.89c0.030 0 0.059-0.003 0.088-0.003 0.034 0 0.069 0.003 0.102 0.003h255.81c0.030 0 0.058-0.003 0.088-0.003 0.034 0 0.069 0.003 0.102 0.003h51.12c14.139 0 25.6 11.461 25.6 25.6v256c0 14.138-11.461 25.6-25.6 25.6zM256 614.4h512v-204.8h-17.85l-147.15 98.101c-11.763 7.84-27.658 4.664-35.501-7.101-7.843-11.763-4.664-27.658 7.101-35.501l83.25-55.499h-163.699l-147.15 98.101c-11.763 7.84-27.659 4.664-35.501-7.101-7.842-11.763-4.664-27.658 7.101-35.501l83.25-55.499h-145.85v204.8zM799.514 881.523c-69.808 26.594-166.541 40.077-287.514 40.077s-217.706-13.483-287.514-40.077c-100.906-38.44-122.086-96.874-122.086-139.123v-563.2c0-61.814 44.045-113.531 102.4-125.426v-53.774c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v51.2h307.2v-51.2c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v53.774c58.355 11.894 102.4 63.611 102.4 125.426v563.2c0 42.25-21.181 100.683-122.086 139.123zM307.2 0h-51.2v51.2h51.2v-51.2zM716.8 0v51.2h51.2v-51.2h-51.2zM870.4 179.2c0-42.349-34.451-76.8-76.8-76.8h-563.2c-42.347 0-76.8 34.451-76.8 76.8v563.2c0 38.040 29.982 68.75 89.114 91.277 63.064 24.024 156.182 36.723 269.286 36.723s206.224-12.699 269.286-36.723c59.131-22.526 89.114-53.237 89.114-91.277v-563.2z" data-tags="bus, travel" />
<glyph unicode="&#xe84e;" d="M281.6 153.6c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM742.4 153.6c-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8zM742.4 256c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM868.256 363.158c-6.646 40.557-28.301 164.576-51.76 211.491-15.627 31.256-55.694 55.139-119.088 70.987-51.496 12.874-117.342 19.963-185.408 19.963s-133.912-7.090-185.408-19.965c-63.394-15.848-103.461-39.733-119.090-70.987-23.458-46.915-45.112-170.933-51.758-211.491-35.778-24.512-53.344-59.99-53.344-107.157v-128c0-33.373 21.403-61.829 51.2-72.397v-55.603c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v51.2h409.6v-51.2c0-28.232 22.968-51.2 51.2-51.2h51.2c28.232 0 51.2 22.968 51.2 51.2v55.603c29.797 10.566 51.2 39.024 51.2 72.397v128c0 47.166-17.566 82.645-53.344 107.158zM253.298 551.752c15.186 30.37 111.014 62.648 258.702 62.648s243.517-32.278 258.702-62.648c14.718-29.437 31.026-107.306 41.139-162.966-4.998 1.472-10.166 2.845-15.512 4.118-13.656 3.251-28.434 5.862-44.2 7.971l-148.421 106.334c-11.494 8.237-27.485 5.59-35.72-5.901-8.234-11.493-5.592-27.485 5.901-35.72l80.166-57.435c-43.517 1.443-91.251 1.446-142.056 1.446-5.998 0-11.942 0-17.854-0.003l-147.146 98.102c-11.765 7.843-27.658 4.664-35.501-7.099s-4.666-27.658 7.099-35.501l84.178-56.122c-68.654-1.237-128.362-4.946-175.107-16.075-5.347-1.274-10.517-2.648-15.517-4.12 10.115 55.654 26.418 133.515 41.146 162.97zM256 0h-51.2v51.2h51.2v-51.2zM768 0v51.2h51.2v-51.2h-51.2zM870.4 128c0-14.115-11.485-25.6-25.6-25.6h-665.6c-14.115 0-25.6 11.485-25.6 25.6v128c0 47.331 24.896 72.565 85.93 87.098 64.275 15.302 160.757 15.302 272.47 15.302s208.194 0 272.47-15.302c61.034-14.533 85.93-39.766 85.93-87.098v-128z" data-tags="car, travel, automobile" />
<glyph unicode="&#xe84f;" d="M742.4 204.8h-512c-70.579 0-128 57.421-128 128v512c0 70.579 57.421 128 128 128h512c70.579 0 128-57.421 128-128v-512c0-70.579-57.421-128-128-128zM230.4 921.6c-42.347 0-76.8-34.453-76.8-76.8v-512c0-42.349 34.453-76.8 76.8-76.8h512c42.349 0 76.8 34.451 76.8 76.8v512c0 42.347-34.451 76.8-76.8 76.8h-512zM970.098-14.152l-102.4 204.8c-6.32 12.645-21.696 17.77-34.346 11.448-12.645-6.322-17.771-21.699-11.448-34.346l7.075-14.152h-685.157l7.075 14.152c6.323 12.645 1.197 28.024-11.45 34.346-12.645 6.322-28.024 1.198-34.346-11.448l-102.4-204.8c-6.323-12.645-1.197-28.024 11.45-34.346 3.675-1.837 7.581-2.709 11.429-2.709 9.39 0 18.432 5.187 22.917 14.158l18.525 37.048h838.757l18.525-37.048c4.485-8.971 13.525-14.158 22.917-14.158 3.846 0 7.754 0.872 11.429 2.709 12.645 6.323 17.771 21.701 11.448 34.346zM92.622 51.2l25.6 51.2h736.357l25.6-51.2h-787.557zM281.6 307.2c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM281.6 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM691.2 307.2c-42.349 0-76.8 34.451-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.451-76.8-76.8-76.8zM691.2 409.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM640 819.2h-307.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h307.2c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 768h-512c-14.138 0-25.6-11.462-25.6-25.6v-204.8c0-14.138 11.462-25.6 25.6-25.6h512c14.139 0 25.6 11.462 25.6 25.6v204.8c0 14.138-11.461 25.6-25.6 25.6zM256 716.8h204.8v-153.6h-204.8v153.6zM716.8 563.2h-204.8v153.6h204.8v-153.6z" data-tags="train, travel, metro" />
<glyph unicode="&#xe850;" d="M281.6 511.898c-42.405 0-76.902 34.499-76.902 76.902s34.499 76.902 76.902 76.902 76.902-34.499 76.902-76.902-34.498-76.902-76.902-76.902zM281.6 614.502c-14.173 0-25.702-11.531-25.702-25.702s11.531-25.702 25.702-25.702 25.702 11.531 25.702 25.702-11.53 25.702-25.702 25.702zM486.4 102.4c-14.138 0-25.6 11.461-25.6 25.6v153.498c0 39.531 29.77 79.022 67.774 89.902l76.795 21.984-166.909 111.274-87.56-87.56c-4.8-4.802-11.312-7.499-18.101-7.499h-102.502c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h91.899l94.901 94.901c8.629 8.629 22.149 9.966 32.302 3.2l187.798-125.2c28.149-18.765 28.066-40.824 26.723-49.437s-7.974-29.653-40.498-38.966l-80.758-23.118c-16.048-4.595-30.666-23.986-30.666-40.68v-153.498c0-14.139-11.462-25.6-25.6-25.6zM768-51.2c-112.926 0-204.8 91.874-204.8 204.8s91.874 204.8 204.8 204.8 204.8-91.874 204.8-204.8-91.874-204.8-204.8-204.8zM768 307.2c-84.696 0-153.6-68.904-153.6-153.6s68.904-153.6 153.6-153.6 153.6 68.904 153.6 153.6-68.904 153.6-153.6 153.6zM204.749-51.2c-112.899 0-204.749 91.85-204.749 204.749s91.85 204.749 204.749 204.749 204.749-91.85 204.749-204.749-91.851-204.749-204.749-204.749zM204.749 307.098c-84.667 0-153.549-68.882-153.549-153.549s68.882-153.549 153.549-153.549 153.549 68.882 153.549 153.549-68.882 153.549-153.549 153.549z" data-tags="bicycle, exercise, travel, bike" />
<glyph unicode="&#xe851;" d="M914.101 299.701c-9.997 9.997-26.206 9.997-36.203 0l-33.344-33.342-139.749 135.987c-0.082 0.078-0.17 0.144-0.251 0.222-0.366 0.346-0.746 0.67-1.13 0.994-0.282 0.235-0.56 0.478-0.848 0.701-0.33 0.254-0.674 0.488-1.016 0.726-0.362 0.251-0.718 0.507-1.090 0.739-0.288 0.178-0.586 0.336-0.88 0.502-0.434 0.246-0.864 0.498-1.309 0.715-0.282 0.139-0.573 0.258-0.861 0.386-0.461 0.206-0.92 0.419-1.389 0.597-0.347 0.131-0.701 0.234-1.054 0.352-0.418 0.138-0.832 0.286-1.254 0.4-0.45 0.125-0.909 0.216-1.366 0.314-0.336 0.072-0.667 0.158-1.005 0.218-0.518 0.091-1.043 0.146-1.57 0.205-0.29 0.032-0.576 0.077-0.867 0.099-0.51 0.038-1.029 0.045-1.546 0.053-0.32 0.005-0.64 0.021-0.962 0.014-0.45-0.010-0.902-0.048-1.355-0.083-0.402-0.030-0.803-0.054-1.203-0.102-0.374-0.046-0.749-0.114-1.123-0.178-0.483-0.080-0.965-0.165-1.442-0.272-0.114-0.026-0.229-0.035-0.342-0.064l-201.984-48.779c-5.45-1.314-10.174-0.683-13.304 1.781-3.13 2.467-4.854 6.91-4.854 12.515v86.4h179.2c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6h-179.2v156.176c8.275-1.686 16.834-2.576 25.6-2.576 70.579 0 128 57.421 128 128s-57.421 128-128 128-128-57.421-128-128c0-41.786 20.131-78.954 51.2-102.331v-316.869c0-21.32 8.888-40.544 24.386-52.744 11.181-8.802 25.104-13.402 39.779-13.4 5.664 0 11.442 0.686 17.214 2.080l188.248 45.462 147.72-143.746c4.971-4.838 11.413-7.253 17.851-7.253 6.555 0 13.109 2.502 18.102 7.499l51.2 51.2c9.998 9.997 9.998 26.205 0 36.202zM486.4 870.4c42.347 0 76.8-34.453 76.8-76.8s-34.453-76.8-76.8-76.8c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8zM384-51.2c-183.506 0-332.8 149.294-332.8 332.8 0 79.186 28.286 155.91 79.65 216.043 50.784 59.454 121 99.285 197.712 112.155 13.947 2.336 27.144-7.069 29.483-21.011 2.339-13.944-7.067-27.144-21.011-29.483-135.955-22.81-234.634-139.602-234.634-277.704 0-155.275 126.325-281.6 281.6-281.6 138.104 0 254.898 98.678 277.706 234.635 2.339 13.944 15.541 23.347 29.483 21.011 13.944-2.339 23.35-15.539 21.011-29.483-12.87-76.712-52.701-146.93-112.155-197.714-60.133-51.362-136.858-79.65-216.045-79.65z" data-tags="wheelchair, disabled, accessibility" />
<glyph unicode="&#xe852;" d="M281.6 204.8h-204.8c-42.347 0-76.8 34.451-76.8 76.8v614.4c0 42.347 34.453 76.8 76.8 76.8h716.8c42.349 0 76.8-34.453 76.8-76.8v-358.4c0-14.138-11.461-25.6-25.6-25.6s-25.6 11.462-25.6 25.6v358.4c0 14.115-11.485 25.6-25.6 25.6h-716.8c-14.115 0-25.6-11.485-25.6-25.6v-614.4c0-14.115 11.485-25.6 25.6-25.6h204.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM665.608-51.206c-10.16 0-19.773 6.090-23.776 16.099l-86.882 217.203-151.685-173.354c-7.022-8.027-18.285-10.859-28.269-7.106-9.986 3.75-16.597 13.298-16.597 23.963v768c0 10.133 5.976 19.312 15.243 23.411 9.266 4.101 20.078 2.347 27.576-4.469l563.2-512c7.827-7.114 10.472-18.309 6.658-28.173s-13.301-16.37-23.877-16.37h-218.187l88.357-220.893c5.251-13.128-1.134-28.027-14.261-33.277l-128-51.2c-3.118-1.246-6.338-1.837-9.501-1.837zM563.198 256c1.432 0 2.874-0.12 4.31-0.366 8.781-1.501 16.152-7.456 19.459-15.726l92.893-232.232 80.462 32.184-92.893 232.232c-3.155 7.888-2.192 16.826 2.57 23.859s12.704 11.25 21.2 11.25h189.782l-471.382 428.53v-641.997l134.334 153.525c4.904 5.606 11.954 8.742 19.264 8.742z" data-tags="select, cursor" />
<glyph unicode="&#xe853;" d="M874.038 822.838c-96.704 96.704-225.278 149.962-362.038 149.962s-265.334-53.258-362.038-149.962c-96.704-96.704-149.962-225.278-149.962-362.038s53.258-265.334 149.962-362.038c96.704-96.704 225.278-149.962 362.038-149.962s265.334 53.258 362.038 149.962c96.704 96.704 149.962 225.278 149.962 362.038s-53.258 265.334-149.962 362.038zM941.918 626.622c-9.989 17.987-35.050 26.512-67.853 37.661-35.182 11.957-47.608 48.122-61.994 89.997-12.49 36.35-25.398 73.874-56.069 97.238 83.898-52.584 149.733-131.406 185.915-224.896zM798.235 451.043c3.872-34.683 7.875-70.546-35.163-118.874-11.629-13.056-18.44-31.238-25.653-50.49-16.701-44.582-32.486-86.709-99.642-87.325-1.882 2.262-7.242 10.734-11.981 37.533-4.366 24.698-6.886 56.606-9.555 90.389-4.093 51.834-8.731 110.582-21.544 159.32-16.382 62.325-43.867 99.141-84.026 112.554-17.522 5.853-35.411 8.698-54.693 8.698-14.211 0-27.125-1.522-38.517-2.864-8.875-1.045-17.258-2.034-24.341-2.034 0 0-0.002 0-0.003 0-11.987 0-25.573 0-42.278 38.29-24.021 55.053-6.304 143.267 64.202 189.787 38.661 25.509 65.336 36.392 89.2 36.392 19.026 0 39.581-6.622 68.73-22.146 34.418-18.33 61.379-20.68 81.026-20.68 7.789 0 14.85 0.419 21.682 0.826 5.726 0.339 11.134 0.661 16.139 0.661 11.259 0 20.387-1.467 31.088-8.776 19.723-13.472 29.936-43.195 40.747-74.664 16.392-47.715 34.973-101.798 93.941-121.837 7.925-2.693 21.576-7.333 31.216-11.366-8.328-8.608-22.285-21.067-35.92-33.24-8.808-7.862-18.789-16.773-29.851-26.858-31.965-29.133-28.16-63.221-24.803-93.296zM51.25 464.73c5.52-0.992 11.493-2.141 17.605-3.446 28.776-6.141 42.235-11.686 48.117-14.798-2.706-5.277-8.187-13.056-11.81-18.195-12.669-17.976-28.435-40.349-22.437-64.984 4.046-16.618 0.632-37.032-5.248-55.883-16.994 48.005-26.277 99.624-26.277 153.378 0 1.314 0.038 2.618 0.050 3.93zM512 0c-175.379 0-328.173 98.494-406.014 243.062 13.422 25.554 38.314 82.054 26.68 131.547 0.806 4.97 9.248 16.95 14.349 24.186 13.874 19.688 31.141 44.189 18.35 70.152-8.976 18.222-32.957 30.534-80.181 41.17-10.939 2.464-21.594 4.47-30.65 6.019 27.424 228.090 222.107 405.464 457.466 405.464 80.776 0 156.749-20.918 222.83-57.582-16.33 7.134-31.154 8.266-43.014 8.266-6.523 0-12.957-0.382-19.176-0.752-6.085-0.362-12.374-0.734-18.645-0.734-14.542 0-32.682 1.742-56.958 14.67-37.056 19.734-64.808 28.155-92.795 28.155-34.635 0-69.744-13.414-117.397-44.856-41.197-27.181-72.229-68.779-87.381-117.133-14.779-47.166-13.2-95.418 4.448-135.867 20.824-47.728 48.336-69.013 89.203-69.014 0.003 0 0.003 0 0.006 0 10.090 0 19.923 1.158 30.333 2.386 10.482 1.235 21.32 2.512 32.525 2.512 13.869 0 26.094-1.926 38.472-6.061 22.488-7.512 39.082-32.701 50.728-77.008 11.648-44.31 16.098-100.638 20.021-150.334 3.274-41.454 6.366-80.61 13.176-110.126 4.136-17.923 9.494-31.538 16.379-41.621 10.283-15.058 25.032-23.35 41.526-23.35 45.269 0 81.429 14.594 107.47 43.374 21.659 23.934 32.722 53.466 41.613 77.194 5.245 14.003 10.67 28.482 15.941 34.402 58.219 65.373 52.203 119.258 47.813 158.603-3.226 28.888-3.285 39.123 8.408 49.781 10.864 9.904 20.741 18.722 29.454 26.499 18.568 16.576 31.984 28.554 41.397 38.83 6.464 7.058 21.603 23.584 17.395 44.28-0.037 0.184-0.088 0.358-0.126 0.539 17.558-48.701 27.154-101.174 27.154-155.851 0-254.086-206.714-460.8-460.8-460.8z" data-tags="earth, globe, international, language" />
<glyph unicode="&#xe854;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM332.8 563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM332.8 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM640 563.2c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM640 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM486.4 102.4c-183.506 0-332.8 149.294-332.8 332.8 0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-155.275 126.325-281.6 281.6-281.6s281.6 126.325 281.6 281.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6c0-183.506-149.294-332.8-332.8-332.8z" data-tags="smile, emoticon" />
<glyph unicode="&#xe855;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM332.8 563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM332.8 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM640 563.2c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM640 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM281.562 204.798c-5.352 0-10.747 1.672-15.355 5.133-11.304 8.491-13.586 24.539-5.094 35.843 25.686 34.195 59.344 62.531 97.338 81.941 39.858 20.362 82.907 30.685 127.95 30.685s88.091-10.323 127.949-30.685c37.992-19.408 71.653-47.742 97.339-81.938 8.491-11.304 6.211-27.352-5.094-35.843-11.307-8.493-27.352-6.21-35.843 5.094-44 58.576-111.194 92.171-184.35 92.171s-140.35-33.597-184.35-92.174c-5.029-6.696-12.712-10.227-20.488-10.227z" data-tags="sad, emoticon" />
<glyph unicode="&#xe856;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM691.2 307.2h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM640 563.2c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM640 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM332.8 563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM332.8 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z" data-tags="neutral, emoticon" />
<glyph unicode="&#xe857;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM332.8 563.2c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM332.8 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM640 563.2c-42.349 0-76.8 34.453-76.8 76.8s34.451 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.451-76.8-76.8-76.8zM640 665.6c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM815.258 346.448c-5.658 8.979-16.27 13.53-26.678 11.454-9.582-1.917-18.819-2.888-27.454-2.888-0.002 0-0.006 0-0.010 0-44.645 0.003-71.763 25.77-100.47 53.053-27.28 25.925-55.49 52.733-97.445 52.733-30.563 0-58.021-13.475-76.8-34.776-18.779 21.301-46.237 34.776-76.8 34.776-41.954 0-70.163-26.808-97.443-52.733-28.709-27.283-55.826-53.051-100.47-53.051-8.643 0-17.883 0.97-27.466 2.888-10.402 2.083-21.019-2.475-26.678-11.454s-5.19-20.517 1.178-29.008c59.243-78.992 135.293-95.573 188.658-95.573 31.79 0 57.109 5.984 69.373 9.552 27.166 7.902 52.106 27.757 69.648 52.627 17.542-24.87 42.482-44.723 69.648-52.627 12.266-3.566 37.587-9.554 69.374-9.552 53.366 0.002 129.416 16.584 188.656 95.573 6.371 8.49 6.84 20.029 1.181 29.006zM402.45 280.581c-9.646-2.806-29.63-7.514-55.070-7.514-29.939 0-69.050 6.722-105.958 33.501 47.877 9.141 79.642 39.328 106.006 64.384 25.213 23.962 41.706 38.648 62.173 38.648 28.232 0 51.2-22.968 51.2-51.2 0-31.275-28.358-69.094-58.35-77.819zM625.422 273.067c-25.437-0.002-45.424 4.706-55.070 7.514-29.994 8.725-58.352 46.544-58.352 77.819 0 28.232 22.968 51.2 51.2 51.2 20.469 0 36.962-14.686 62.176-38.646 26.365-25.053 58.13-55.238 106.005-64.382-36.907-26.781-76.019-33.504-105.958-33.504z" data-tags="mustache, emoticon, perxis, hipster" />
<glyph unicode="&#xe858;" d="M860.171 199.65c-58.576 44-92.171 111.194-92.171 184.35v153.6c0 128.661-86.733 237.442-204.798 270.954l-0.002 36.246c0 42.347-34.451 76.8-76.8 76.8-42.347 0-76.8-34.453-76.8-76.8v-36.245c-118.067-33.512-204.8-142.294-204.8-270.955v-153.6c0-73.157-33.595-140.349-92.171-184.35-8.808-6.616-12.395-18.125-8.907-28.573 3.486-10.448 13.267-17.496 24.283-17.496h232.982c-1.709-8.384-2.587-16.955-2.587-25.581 0-70.579 57.421-128 128-128s128 57.421 128 128c0 8.626-0.878 17.197-2.584 25.581h232.981c11.016 0 20.795 7.046 24.283 17.496s-0.101 21.957-8.909 28.573zM460.8 844.8c0 14.115 11.485 25.6 25.6 25.6s25.6-11.485 25.6-25.6v-26.774c-8.435 0.763-16.97 1.176-25.6 1.176s-17.166-0.413-25.6-1.176v26.774zM563.2 128c0-42.347-34.453-76.8-76.8-76.8s-76.8 34.453-76.8 76.8c0 8.76 1.515 17.411 4.394 25.581h144.813c2.878-8.168 4.394-16.821 4.394-25.581zM191.571 204.781c13.075 15.826 24.437 33.051 33.744 51.27 20.362 39.858 30.685 82.906 30.685 127.949v153.6c0 127.043 103.357 230.4 230.4 230.4s230.4-103.357 230.4-230.4v-153.6c0-45.043 10.323-88.091 30.685-127.949 9.307-18.219 20.669-35.445 33.744-51.27h-589.658z" data-tags="alarm, bell" />
<glyph unicode="&#xe859;" d="M992.694 814.118c-29.611 88.835-68.928 107.482-96.694 107.482-0.584 0-1.176-0.011-1.771-0.029-28.322-0.598-78.627-15.33-153.997-37.41-157.898-46.258-396.514-116.162-637.832-116.162-58.378 0-102.4-77.038-102.4-179.2s44.022-179.2 102.4-179.2c18.891 0 37.765-0.429 56.584-1.24l85.306-339.347c9.73-38.699 48.608-69.013 88.51-69.013h67.2c22.17 0 40.986 9.23 51.622 25.322 10.635 16.091 11.75 37.019 3.061 57.416l-131.926 309.634c160.552-23.672 308.307-66.95 417.474-98.931 75.37-22.082 125.675-36.813 153.997-37.411 0.595-0.018 1.187-0.029 1.771-0.029 27.766 0 67.083 18.646 96.694 107.482 20.19 60.563 31.307 140.582 31.307 225.318 0 84.734-11.117 164.755-31.306 225.318zM819.2 588.8c0 26.266 1.122 51.965 3.285 76.616 26.291-2.642 47.915-36.642 47.915-76.616s-21.624-73.974-47.915-76.616c-2.163 24.651-3.285 50.35-3.285 76.616zM51.2 588.8c0 78.136 30.325 128 51.2 128 58.117 0 115.915 3.888 172.422 10.445-12.142-38.794-18.822-86.912-18.822-138.445 0-51.549 6.68-99.658 18.821-138.443-56.507 6.555-114.306 10.443-172.421 10.443-20.875 0-51.2 49.864-51.2 128zM407.579 62.669c2.099-4.928 1.93-8.208 1.328-9.117s-3.55-2.352-8.907-2.352h-67.2c-16.349 0-34.869 14.44-38.856 30.296l-81.33 323.53c17.157-1.379 34.235-3.046 51.213-4.966l143.752-337.39zM332.24 442.749c-15.587 35.173-25.040 89.509-25.040 146.051 0 57.422 9.238 110.73 25.011 146.046 163.054 24.2 312.094 67.861 422.414 100.179 21.243 6.224 41.526 12.165 59.938 17.344-5.285-11.019-10.402-23.686-15.256-38.253-20.19-60.562-31.307-140.582-31.307-225.317s11.117-164.755 31.306-225.318c4.854-14.566 9.971-27.234 15.256-38.253-18.411 5.181-38.694 11.122-59.938 17.346-110.314 32.317-259.341 75.974-422.384 100.174zM944.122 379.672c-19.107-57.325-39.832-72.472-48.122-72.472s-29.014 15.147-48.122 72.472c-8.024 24.069-14.48 51.678-19.222 81.701 24.888 2.87 48.298 16.95 65.33 39.658 17.808 23.744 27.614 54.914 27.614 87.77 0 32.854-9.806 64.026-27.614 87.768-17.034 22.709-40.442 36.789-65.33 39.659 4.742 30.024 11.198 57.632 19.222 81.699 19.109 57.326 39.832 72.474 48.122 72.474s29.013-15.147 48.122-72.472c18.494-55.482 28.678-129.75 28.678-209.128s-10.184-153.646-28.678-209.128z" data-tags="bullhorn, megaphone" />
<glyph unicode="&#xe85a;" d="M699.050 210.907c-7.438 0-14.816 3.227-19.875 9.446-8.922 10.968-7.262 27.093 3.704 36.014 54.096 44.003 85.122 109.187 85.122 178.832s-31.026 134.827-85.12 178.834c-10.968 8.922-12.627 25.046-3.704 36.014s25.046 12.626 36.014 3.702c66.099-53.771 104.010-133.43 104.010-218.55 0-85.122-37.91-164.779-104.011-218.55-4.749-3.862-10.462-5.742-16.139-5.742zM795.915 91.693c-7.438 0-14.814 3.227-19.875 9.446-8.922 10.966-7.264 27.091 3.704 36.014 90.152 73.338 141.856 181.971 141.856 298.046 0 116.077-51.704 224.71-141.854 298.046-10.968 8.922-12.627 25.046-3.704 36.013 8.92 10.968 25.045 12.627 36.014 3.704 102.155-83.101 160.744-206.211 160.744-337.763 0-131.55-58.589-254.661-160.746-337.766-4.747-3.861-10.462-5.741-16.139-5.741zM602.19 330.123c-7.438 0-14.814 3.227-19.875 9.446-8.922 10.966-7.264 27.093 3.704 36.014 18.037 14.672 28.381 36.4 28.381 59.616 0 23.218-10.346 44.949-28.382 59.621-10.966 8.922-12.627 25.046-3.704 36.014s25.045 12.626 36.014 3.704c30.040-24.44 47.272-60.645 47.272-99.339 0-38.691-17.23-74.898-47.27-99.334-4.747-3.861-10.462-5.742-16.139-5.742zM417.291 808.584c-12.64 0-25.318-5.33-37.682-15.838l-209.819-178.346h-92.99c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h92.989l209.821-178.346c12.363-10.509 25.040-15.838 37.68-15.838 0 0 0 0 0.002 0 13.931 0 26.429 6.762 34.288 18.55 6.118 9.178 9.221 20.898 9.221 34.834v640c0 36.877-21.853 53.384-43.509 53.384zM51.2 332.8v204.8c0 14.115 11.485 25.6 25.6 25.6h76.8v-256h-76.8c-14.115 0-25.6 11.485-25.6 25.6zM409.6 119.358l-204.8 174.080v283.523l204.8 174.078v-631.682z" data-tags="volume-high, speaker" />
<glyph unicode="&#xe85b;" d="M699.050 210.907c-7.438 0-14.816 3.227-19.875 9.446-8.922 10.968-7.262 27.093 3.704 36.014 54.096 44.003 85.122 109.187 85.122 178.832s-31.026 134.827-85.12 178.834c-10.968 8.922-12.627 25.046-3.704 36.014s25.046 12.626 36.014 3.702c66.099-53.771 104.010-133.43 104.010-218.55 0-85.122-37.91-164.779-104.011-218.55-4.749-3.862-10.462-5.742-16.139-5.742zM602.19 330.123c-7.438 0-14.814 3.227-19.875 9.446-8.922 10.966-7.264 27.093 3.704 36.014 18.037 14.672 28.381 36.4 28.381 59.616 0 23.218-10.346 44.949-28.382 59.621-10.966 8.922-12.627 25.046-3.704 36.014s25.045 12.626 36.014 3.704c30.040-24.44 47.272-60.645 47.272-99.339 0-38.691-17.23-74.898-47.27-99.334-4.747-3.861-10.462-5.742-16.139-5.742zM417.291 808.584c-12.64 0-25.318-5.33-37.682-15.838l-209.819-178.346h-92.99c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h92.989l209.821-178.346c12.363-10.509 25.040-15.838 37.68-15.838 0 0 0 0 0.002 0 13.931 0 26.429 6.762 34.288 18.55 6.118 9.178 9.221 20.898 9.221 34.834v640c0 36.877-21.853 53.384-43.509 53.384zM51.2 332.8v204.8c0 14.115 11.485 25.6 25.6 25.6h76.8v-256h-76.8c-14.115 0-25.6 11.485-25.6 25.6zM409.6 119.358l-204.8 174.080v283.523l204.8 174.078v-631.682z" data-tags="volume-medium, speaker" />
<glyph unicode="&#xe85c;" d="M602.19 330.123c-7.438 0-14.814 3.227-19.875 9.446-8.922 10.966-7.264 27.093 3.704 36.014 18.037 14.672 28.381 36.4 28.381 59.616 0 23.218-10.346 44.949-28.382 59.621-10.966 8.922-12.627 25.046-3.704 36.014s25.045 12.626 36.014 3.704c30.040-24.44 47.272-60.645 47.272-99.339 0-38.691-17.23-74.898-47.27-99.334-4.747-3.861-10.462-5.742-16.139-5.742zM417.291 808.584c-12.64 0-25.318-5.33-37.682-15.838l-209.819-178.346h-92.99c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h92.989l209.821-178.346c12.363-10.509 25.040-15.838 37.68-15.838 0 0 0 0 0.002 0 13.931 0 26.429 6.762 34.288 18.55 6.118 9.178 9.221 20.898 9.221 34.834v640c0 36.877-21.853 53.384-43.509 53.384zM51.2 332.8v204.8c0 14.115 11.485 25.6 25.6 25.6h76.8v-256h-76.8c-14.115 0-25.6 11.485-25.6 25.6zM409.6 119.358l-204.8 174.080v283.523l204.8 174.078v-631.682z" data-tags="volume-low, speaker" />
<glyph unicode="&#xe85d;" d="M417.291 808.584c-12.64 0-25.318-5.33-37.682-15.838l-209.819-178.346h-92.99c-42.347 0-76.8-34.453-76.8-76.8v-204.8c0-42.349 34.453-76.8 76.8-76.8h92.989l209.821-178.346c12.363-10.509 25.040-15.838 37.68-15.838 0 0 0 0 0.002 0 13.931 0 26.429 6.762 34.288 18.55 6.118 9.178 9.221 20.898 9.221 34.834v640c0 36.877-21.853 53.384-43.509 53.384zM51.2 332.8v204.8c0 14.115 11.485 25.6 25.6 25.6h76.8v-256h-76.8c-14.115 0-25.6 11.485-25.6 25.6zM409.6 119.358l-204.8 174.080v283.523l204.8 174.078v-631.682z" data-tags="volume, speaker" />
<glyph unicode="&#xe85e;" d="M486.4 256c-98.811 0-179.2 80.389-179.2 179.2v307.2c0 98.811 80.389 179.2 179.2 179.2s179.2-80.389 179.2-179.2v-307.2c0-98.811-80.389-179.2-179.2-179.2zM486.4 870.4c-70.579 0-128-57.421-128-128v-307.2c0-70.579 57.421-128 128-128s128 57.421 128 128v307.2c0 70.579-57.421 128-128 128zM819.2 435.2c0 14.139-11.461 25.6-25.6 25.6s-25.6-11.461-25.6-25.6c0-155.275-126.325-281.6-281.6-281.6s-281.6 126.325-281.6 281.6c0 14.139-11.462 25.6-25.6 25.6s-25.6-11.461-25.6-25.6c0-174.894 135.608-318.71 307.2-331.826v-103.374h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-76.8v103.374c171.59 13.115 307.2 156.931 307.2 331.826z" data-tags="mic, voice, record" />
<glyph unicode="&#xe85f;" d="M819.2 793.6v25.6c0 20.061-12.354 37.533-36.715 51.933-17.598 10.402-42.042 19.557-72.651 27.21-59.995 14.997-139.344 23.258-223.434 23.258-84.088 0-163.438-8.261-223.432-23.259-30.61-7.653-55.053-16.806-72.653-27.21-24.362-14.398-36.715-31.87-36.715-51.931v-25.6c0-134.691 81.574-255.944 204.795-307.288v-102.222c-123.221-51.346-204.795-172.598-204.795-307.29v-25.6c0-20.059 12.354-37.533 36.715-51.933 17.6-10.402 42.043-19.557 72.653-27.21 59.994-14.998 139.344-23.258 223.432-23.258 84.090 0 163.438 8.259 223.434 23.258 30.61 7.653 55.053 16.808 72.651 27.21 24.362 14.4 36.715 31.874 36.715 51.933v25.6c0 134.691-81.573 255.944-204.794 307.29v102.222c123.221 51.344 204.794 172.597 204.794 307.288zM287.322 851.491c54.56 12.194 125.261 18.909 199.078 18.909 73.819 0 144.52-6.715 199.080-18.909 58.867-13.157 76.701-27.336 81.366-32.291-4.666-4.955-22.499-19.134-81.366-32.291-54.56-12.194-125.261-18.909-199.080-18.909-73.818 0-144.518 6.715-199.078 18.909-58.869 13.157-76.702 27.336-81.37 32.291 4.667 4.955 22.501 19.134 81.37 32.291zM580.275 342.382c112.285-39.69 187.725-146.419 187.725-265.582v-24.238c-2.141-2.909-16.598-18.92-82.52-33.653-54.56-12.194-125.261-18.909-199.080-18.909-73.818 0-144.52 6.715-199.078 18.907-65.915 14.731-80.378 30.741-82.522 33.653v24.24c0 119.163 75.442 225.893 187.726 265.582 10.229 3.616 17.067 13.286 17.067 24.136v137.363c0 10.85-6.838 20.522-17.069 24.136-101.195 35.768-172.453 125.992-185.544 230.693 15.342-6.923 34.075-13.174 55.986-18.653 59.995-14.997 139.346-23.258 223.434-23.258 84.090 0 163.438 8.261 223.434 23.259 21.91 5.477 40.642 11.73 55.986 18.653-13.093-104.699-84.35-194.923-185.544-230.693-10.23-3.616-17.069-13.288-17.069-24.136v-137.363c0-10.851 6.838-20.522 17.069-24.138zM699.734 126.536c-115.798 40.933-187.734 139.586-187.734 257.464v154.872c30.741 3.022 60.315 11.496 88.202 25.355 12.661 6.293 17.824 21.658 11.531 34.318s-21.658 17.826-34.318 11.531c-28.408-14.118-59.030-21.277-91.014-21.277s-62.605 7.158-91.013 21.278c-12.659 6.29-28.026 1.13-34.318-11.531s-1.13-28.026 11.531-34.318c27.885-13.859 57.461-22.333 88.2-25.355v-154.874c0-117.878-71.936-216.531-187.734-257.464-10.762-3.803-17.706-14.272-17.022-25.666 0.682-11.394 8.826-20.96 19.963-23.453 50.294-11.254 126.824-26.218 210.394-26.218s160.099 14.963 210.394 26.218c11.139 2.494 19.282 12.059 19.965 23.453 0.68 11.394-6.261 21.862-17.024 25.666zM486.4 102.4c-44.885 0-87.093 4.464-124.762 10.478 34.070 21.573 63.706 48.766 87.586 80.626 15.019 20.035 27.45 41.557 37.174 64.211 9.726-22.654 22.155-44.174 37.174-64.211 23.88-31.858 53.515-59.051 87.586-80.626-37.666-6.014-79.874-10.478-124.758-10.478z" data-tags="hourglass, loading" />
<glyph unicode="&#xe860;" d="M896.533 742.933c-82.198 82.198-191.488 127.467-307.733 127.467s-225.534-45.269-307.733-127.467-127.467-191.486-127.467-307.733v-66.197l-109.899 109.899c-9.997 9.997-26.206 9.997-36.203 0s-9.998-26.206 0-36.203l153.6-153.6c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.206 0 36.203s-26.206 9.997-36.203 0l-109.898-109.899v66.197c0 211.738 172.262 384 384 384 211.739 0 384-172.262 384-384s-172.261-384-384-384c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c116.245 0 225.534 45.269 307.733 127.467s127.467 191.488 127.467 307.733c0 116.246-45.269 225.534-127.467 307.733z" data-tags="undo, ccw, arrow" />
<glyph unicode="&#xe861;" d="M127.467 742.933c82.198 82.198 191.488 127.467 307.733 127.467 116.246 0 225.534-45.269 307.733-127.467s127.467-191.486 127.467-307.733v-66.197l109.899 109.899c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-153.6-153.6c-5-5-11.55-7.499-18.102-7.499s-13.102 2.499-18.101 7.499l-153.6 153.6c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l109.898-109.899v66.197c0 211.738-172.262 384-384 384-211.739 0-384-172.262-384-384 0-211.739 172.261-384 384-384 14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6c-116.245 0-225.534 45.269-307.733 127.467s-127.467 191.488-127.467 307.733c0 116.246 45.269 225.534 127.467 307.733z" data-tags="redo, cw, arrow" />
<glyph unicode="&#xe862;" d="M1016.501 530.102c-9.997 9.997-26.206 9.997-36.203 0l-58.832-58.832c-2.63 105.486-44.947 204.27-119.835 279.16-77.362 77.365-180.222 119.97-289.63 119.97-152.28 0-291.122-83.699-362.342-218.435-6.606-12.499-1.83-27.989 10.669-34.597 12.498-6.606 27.989-1.83 34.597 10.669 62.33 117.914 183.826 191.163 317.077 191.163 194.014 0 352.501-154.966 358.224-347.619l-58.522 58.522c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.998-9.998-26.206 0-36.205l102.4-102.4c4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499l102.4 102.4c9.998 9.997 9.998 26.205 0 36.203zM863.674 304.234c-12.502 6.603-27.99 1.832-34.597-10.669-62.328-117.915-183.826-191.165-317.077-191.165-194.016 0-352.502 154.966-358.224 347.621l58.522-58.522c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.102 7.499c9.997 9.997 9.997 26.206 0 36.203l-102.4 102.4c-9.998 9.997-26.206 9.997-36.205 0l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203s26.206-9.997 36.205 0l58.83 58.832c2.63-105.488 44.946-204.272 119.835-279.162 77.365-77.363 180.224-119.97 289.632-119.97 152.28 0 291.12 83.699 362.342 218.435 6.608 12.501 1.829 27.99-10.669 34.598z" data-tags="sync, spinner, loading, arrows" />
<glyph unicode="&#xe863;" d="M874.038 822.838c-96.704 96.704-225.278 149.962-362.038 149.962-158.432 0-305.912-72.984-402.094-194.938v66.938c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-152.154c0-11.71 7.946-21.928 19.296-24.811 4.941-1.256 9.979-0.979 14.555 0.581v-0.003l146.096 49.754c13.384 4.558 20.538 19.102 15.979 32.486s-19.099 20.539-32.486 15.979l-76.304-25.987c86.443 113.066 221.208 180.955 366.158 180.955 254.086 0 460.8-206.714 460.8-460.8s-206.714-460.8-460.8-460.8c-169.778 0-325.323 92.936-405.938 242.541-6.706 12.446-22.235 17.099-34.68 10.392s-17.099-22.234-10.394-34.68c89.56-166.205 262.378-269.453 451.011-269.453 136.76 0 265.334 53.258 362.038 149.962s149.962 225.278 149.962 362.038c0 136.76-53.258 265.334-149.962 362.038zM512 435.2c-4.277 0-8.558 1.069-12.432 3.222l-230.4 128c-12.36 6.866-16.813 22.451-9.946 34.81s22.451 16.813 34.81 9.946l217.080-120.6 268.744 171.021c11.925 7.59 27.75 4.078 35.342-7.854 7.59-11.928 4.074-27.75-7.854-35.341l-281.6-179.2c-4.182-2.662-8.962-4.003-13.744-4.003z" data-tags="history, archive, clock, backward, ccw" />
<glyph unicode="&#xe864;" d="M835.574 96.629c88.534 91.234 137.226 211.154 137.226 338.571 0 121.352-44.152 235.912-124.834 325.36l35.234 35.237 33.101-33.099c4.997-4.998 11.547-7.498 18.099-7.498s13.102 2.499 18.099 7.499c10 9.997 10 26.206 0 36.203l-102.4 102.4c-9.995 9.998-26.208 9.998-36.205 0s-9.998-26.206 0-36.203l33.102-33.099-35.237-35.235c-89.45 80.683-204.008 124.835-325.36 124.835s-235.91-44.152-325.36-124.835l-35.237 35.235 33.098 33.098c9.998 9.997 9.998 26.206 0 36.203s-26.206 9.998-36.203 0l-102.4-102.4c-9.998-9.997-9.998-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l33.099 33.098 35.237-35.237c-80.685-89.45-124.837-204.008-124.837-325.36 0-127.418 48.691-247.336 137.226-338.57l-104.128-104.125c-9.998-9.997-9.998-26.21 0-36.205 5-5.002 11.55-7.501 18.102-7.501s13.102 2.499 18.101 7.501l105.448 105.446c87.304-73.114 196.41-112.947 311.651-112.947s224.349 39.834 311.651 112.946l105.443-105.445c5-5 11.554-7.501 18.102-7.501s13.102 2.499 18.099 7.501c10 9.995 10 26.208 0 36.205l-104.122 104.123zM51.2 435.2c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2zM774.611 601.6c-7.069 12.245-22.728 16.435-34.966 9.37l-251.917-145.445-196.344 137.482c-11.582 8.11-27.547 5.294-35.654-6.286-8.11-11.582-5.294-27.546 6.286-35.654l209.702-146.834c0.042-0.030 0.085-0.053 0.126-0.082 0.448-0.309 0.906-0.603 1.37-0.883 0.106-0.064 0.21-0.13 0.315-0.192 0.458-0.264 0.923-0.512 1.394-0.75 0.102-0.051 0.203-0.11 0.307-0.163 0.518-0.25 1.046-0.485 1.579-0.699 0.328-0.133 0.659-0.246 0.99-0.366 0.219-0.075 0.435-0.16 0.656-0.232 0.36-0.117 0.722-0.222 1.085-0.322 0.2-0.056 0.4-0.109 0.6-0.163 0.366-0.091 0.733-0.174 1.101-0.251 0.213-0.042 0.426-0.083 0.64-0.12 0.355-0.064 0.71-0.125 1.067-0.171 0.258-0.035 0.515-0.059 0.774-0.090 0.315-0.034 0.629-0.070 0.944-0.091 0.466-0.034 0.933-0.045 1.4-0.053 0.104 0 0.208-0.011 0.314-0.011 0.005 0 0.011 0.002 0.016 0.002 0.010 0 0.021-0.002 0.030-0.002 0.957 0 1.917 0.062 2.875 0.171 0.045 0.003 0.091 0.006 0.134 0.013 0.93 0.109 1.854 0.28 2.776 0.496 0.086 0.021 0.173 0.035 0.259 0.059 0.867 0.213 1.728 0.472 2.579 0.779 0.146 0.050 0.29 0.104 0.434 0.163 0.795 0.302 1.581 0.637 2.358 1.029 0.184 0.094 0.365 0.197 0.549 0.294 0.269 0.144 0.542 0.278 0.81 0.434l266.043 153.6c12.24 7.069 16.435 22.725 9.366 34.97z" data-tags="clock, time" />
<glyph unicode="&#xe865;" d="M760.499 478.899c-9.995 9.997-26.206 9.997-36.203 0l-212.296-212.294v578.195c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-578.195l-212.298 212.294c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.995-9.997-26.206 0-36.203l256-256c5-4.997 11.55-7.496 18.102-7.496s13.102 2.499 18.102 7.501l256 256c9.997 9.995 9.997 26.203-0.003 36.198zM896 0h-819.2c-42.347 0-76.8 34.451-76.8 76.8v102.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-42.349-34.451-76.8-76.8-76.8z" data-tags="download, down, arrow" />
<glyph unicode="&#xe866;" d="M896 0h-819.2c-42.347 0-76.8 34.451-76.8 76.8v102.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h819.2c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-42.349-34.451-76.8-76.8-76.8zM760.501 530.102l-256 256c-9.998 9.997-26.206 9.997-36.205 0l-256-256c-9.997-9.998-9.997-26.206 0-36.203s26.206-9.997 36.205 0l212.299 212.298v-526.997c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v526.997l212.299-212.298c4.998-5 11.549-7.499 18.101-7.499s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.205 0 36.203z" data-tags="upload, up, arrow" />
<glyph unicode="&#xe867;" d="M658.101 376.501c-9.997 9.997-26.206 9.997-36.203 0l-109.898-109.898v629.397c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-629.397l-109.899 109.899c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.205 0 36.202zM793.6-51.2h-614.4c-42.347 0-76.8 34.451-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h204.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h614.4c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c42.349 0 76.8-34.453 76.8-76.8v-512c0-42.349-34.451-76.8-76.8-76.8z" data-tags="enter-down, down, download, arrow" />
<glyph unicode="&#xe868;" d="M793.6-51.2h-614.4c-42.347 0-76.8 34.453-76.8 76.8v512c0 42.347 34.453 76.8 76.8 76.8h204.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-204.8c-14.115 0-25.6-11.485-25.6-25.6v-512c0-14.115 11.485-25.6 25.6-25.6h614.4c14.115 0 25.6 11.485 25.6 25.6v512c0 14.115-11.485 25.6-25.6 25.6h-204.8c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h204.8c42.347 0 76.8-34.453 76.8-76.8v-512c0-42.347-34.453-76.8-76.8-76.8zM658.099 786.101l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203s26.206-9.998 36.203 0l109.901 109.899v-578.197c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v578.197l109.901-109.898c4.997-5 11.547-7.499 18.099-7.499s13.102 2.499 18.099 7.499c10 9.997 10 26.205 0 36.202z" data-tags="exit-up, up, upload, arrow" />
<glyph unicode="&#xe869;" d="M896 358.4h-77.544c-3.19 56.282-16.878 110.243-39.965 158.814 53.056 15.624 91.909 64.739 91.909 122.786 0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-38.984-29.205-71.254-66.88-76.138-8.928 13.632-18.678 26.68-29.259 39.026-5.515 6.435-11.203 12.6-17.032 18.525 7.147 22.477 10.771 45.877 10.771 69.787 0 127.043-103.357 230.4-230.4 230.4s-230.4-103.357-230.4-230.4c0-23.909 3.624-47.309 10.77-69.787-5.829-5.923-11.515-12.090-17.032-18.525-10.582-12.346-20.331-25.394-29.259-39.026-37.674 4.883-66.878 37.154-66.878 76.138 0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6c0-58.046 38.853-107.162 91.907-122.784-23.086-48.573-36.773-102.534-39.965-158.816h-77.542c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h77.544c3.19-56.283 16.878-110.243 39.965-158.816-53.056-15.622-91.909-64.738-91.909-122.784 0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 38.984 29.205 71.254 66.88 76.138 8.928-13.632 18.677-26.68 29.259-39.026 62.965-73.458 147.013-113.912 236.661-113.912s173.698 40.454 236.661 113.912c10.581 12.346 20.331 25.394 29.258 39.026 37.677-4.883 66.882-37.152 66.882-76.138 0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6c0 58.046-38.853 107.163-91.907 122.784 23.086 48.571 36.773 102.533 39.965 158.816h77.542c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6zM486.4 870.4c98.811 0 179.2-80.389 179.2-179.2 0-10.986-0.99-21.824-2.933-32.458-52.312 37.811-112.885 58.058-176.267 58.058s-123.955-20.246-176.267-58.058c-1.942 10.634-2.933 21.472-2.933 32.458 0 98.811 80.389 179.2 179.2 179.2zM204.8 332.8c0 173.306 112.678 316.072 256 331.41v-662.821c-143.322 15.339-256 158.106-256 331.411zM512 1.389v662.821c143.322-15.338 256-158.104 256-331.41s-112.678-316.072-256-331.411z" data-tags="bug, insect, virus" />
<glyph unicode="&#xe86a;" d="M256 204.8c-6.552 0-13.102 2.499-18.101 7.499l-204.8 204.8c-9.998 9.997-9.998 26.206 0 36.203l204.8 204.8c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-186.699-186.699 186.698-186.699c9.998-9.997 9.998-26.206 0-36.203-4.998-4.998-11.549-7.498-18.101-7.498zM768 204.8c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l186.698 186.698-186.698 186.699c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l204.8-204.8c9.998-9.997 9.998-26.206 0-36.203l-204.8-204.8c-5-5-11.55-7.499-18.102-7.499zM383.976 204.797c-4.634 0-9.325 1.258-13.544 3.894-11.989 7.494-15.634 23.288-8.141 35.278l256 409.6c7.493 11.984 23.283 15.634 35.278 8.141 11.989-7.494 15.634-23.288 8.141-35.278l-256-409.6c-4.858-7.77-13.202-12.035-21.734-12.035z" data-tags="code, embed" />
<glyph unicode="&#xe86b;" d="M546.917 307.288c-48.275 0-96.55 18.376-133.301 55.128-9.998 9.997-9.998 26.206 0 36.203s26.205 9.997 36.203 0c53.539-53.541 140.656-53.541 194.197 0l186.166 186.166c53.539 53.539 53.539 140.656 0 194.197-53.541 53.539-140.656 53.538-194.197 0l-157.082-157.083c-9.998-9.997-26.206-9.997-36.203 0-9.998 9.998-9.998 26.206 0 36.205l157.083 157.083c73.502 73.501 193.101 73.501 266.603 0s73.502-193.101 0-266.603l-186.168-186.168c-36.752-36.752-85.027-55.128-133.302-55.128zM239.717 0.088c-48.275 0-96.55 18.376-133.302 55.128-73.501 73.502-73.501 193.101 0 266.603l186.166 186.166c73.501 73.501 193.101 73.501 266.603 0 9.998-9.998 9.998-26.206 0-36.203-9.997-9.998-26.206-9.998-36.203 0-53.541 53.541-140.656 53.541-194.197 0l-186.165-186.166c-53.539-53.541-53.539-140.656 0-194.197s140.656-53.541 194.195 0l157.083 157.083c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-157.083-157.083c-36.75-36.752-85.026-55.128-133.301-55.128z" data-tags="link, url" />
<glyph unicode="&#xe86c;" d="M691.2 384c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l157.083 157.083c25.936 25.936 40.221 60.421 40.221 97.099s-14.285 71.162-40.221 97.098c-53.539 53.538-140.654 53.541-194.197 0l-157.083-157.082c-9.997-9.998-26.206-9.998-36.203 0-9.998 9.997-9.998 26.206 0 36.203l157.083 157.083c73.504 73.502 193.104 73.499 266.603 0 35.608-35.606 55.218-82.947 55.218-133.302s-19.61-97.696-55.218-133.302l-157.083-157.082c-5-5.002-11.55-7.501-18.102-7.501zM239.717-0.002c-50.355 0-97.696 19.61-133.302 55.218-73.501 73.501-73.501 193.101 0 266.603l157.083 157.083c9.997 9.998 26.206 9.998 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-157.082-157.083c-53.538-53.541-53.538-140.658 0-194.197 25.936-25.936 60.419-40.221 97.098-40.221s71.162 14.285 97.098 40.221l157.083 157.083c9.997 9.997 26.206 9.997 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-157.083-157.083c-35.605-35.608-82.946-55.218-133.301-55.218zM281.6 614.4c-6.552 0-13.102 2.499-18.101 7.499l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.998 26.206 9.998 36.203 0l102.4-102.4c9.998-9.997 9.998-26.206 0-36.203-5-5-11.55-7.499-18.102-7.499zM384 665.6c-14.138 0-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.138-11.462-25.6-25.6-25.6zM230.4 512h-153.6c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h153.6c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6zM793.6 102.4c-6.552 0-13.102 2.499-18.101 7.499l-102.4 102.4c-9.998 9.997-9.998 26.206 0 36.203 9.997 9.997 26.206 9.997 36.203 0l102.4-102.4c9.998-9.997 9.998-26.206 0-36.203-5-5-11.55-7.499-18.102-7.499zM896.002 307.2h-153.602c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h153.602c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM588.8 0c-14.139 0-25.6 11.461-25.6 25.6v153.6c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-153.6c0-14.139-11.461-25.6-25.6-25.6z" data-tags="unlink, url" />
<glyph unicode="&#xe86d;" d="M968.517 398.949c22.662 26.155 35.565 69.381 35.565 110.541 0 27.17-5.899 50.974-17.056 68.842-14.526 23.259-37.762 36.069-65.426 36.069h-134.053c72.966 132.683 91.408 232.587 54.766 297.302-25.534 45.096-72.366 61.098-104.714 61.098-12.811 0-23.65-9.469-25.368-22.165-9.147-67.554-60.811-148.131-141.742-221.074-77.518-69.869-172.765-125.768-270.642-159.208-12.317 26.010-38.811 44.046-69.448 44.046h-153.6c-42.347 0-76.8-34.453-76.8-76.8v-460.8c0-42.347 34.453-76.8 76.8-76.8h153.6c32.437 0 60.222 20.226 71.459 48.718 100.421-12.57 138.195-32.754 174.794-52.314 45.802-24.482 89.062-47.605 230.547-47.605 36.854 0 71.587 9.624 97.8 27.101 25.61 17.074 41.968 41.006 47.4 68.755 20.414 8.283 38.544 27.426 52.454 55.893 13.53 27.688 22.272 63.077 22.272 90.166 0 5.069-0.296 9.726-0.89 14.014 12.944 9.528 24.56 24.243 34.152 43.592 13.837 27.912 22.099 62.866 22.099 93.494 0 21.694-4.027 39.802-11.968 53.822-0.645 1.128-1.312 2.234-2.003 3.31zM230.4 51.2h-153.6c-14.115 0-25.6 11.485-25.6 25.6v460.8c0 14.115 11.485 25.6 25.6 25.6h153.6c14.115 0 25.6-11.485 25.6-25.6v-460.738c0-0.022 0-0.043 0-0.066-0.002-14.114-11.486-25.597-25.6-25.597zM938.944 446.786c-7.739-15.546-15.57-21.186-18.944-21.186-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6c2.149 0 3.699 0 5.971-4.008 3.378-5.965 5.315-16.382 5.315-28.582 0-22.77-6.427-49.883-16.771-70.754-10.131-20.437-20.451-27.856-24.915-27.856-14.139 0-25.6-11.461-25.6-25.6 0-9.067 4.715-17.034 11.827-21.582 1.581-16.206-5.976-59.629-25.627-87.947-7.438-10.722-15.238-16.87-21.4-16.87-14.139 0-25.6-11.461-25.6-25.6 0-45.072-49.765-65.6-96-65.6-128.659 0-164.691 19.259-206.413 41.56-38.992 20.84-82.864 44.29-193.587 58.085v419.179c107.558 35.258 212.589 96.114 297.566 172.704 81.554 73.502 135.12 152.979 153.286 226.603 13.933-4.477 29.651-13.896 39.706-31.656 17.096-30.192 29.896-107.299-76.43-284.506-4.746-7.909-4.87-17.758-0.325-25.784s13.053-12.987 22.277-12.987h178.32c10.17 0 16.749-3.586 21.998-11.99 5.986-9.586 9.283-24.402 9.283-41.72 0-21.733-5.211-45.174-13.938-62.702z" data-tags="thumbs-up, like" />
<glyph unicode="&#xe86e;" d="M968.517 522.651c22.662-26.155 35.565-69.381 35.565-110.541 0-27.17-5.899-50.974-17.056-68.842-14.526-23.259-37.762-36.069-65.426-36.069h-134.053c72.966-132.683 91.408-232.587 54.766-297.302-25.534-45.096-72.366-61.098-104.714-61.098-12.811 0-23.65 9.469-25.368 22.165-9.147 67.554-60.811 148.131-141.742 221.074-77.518 69.869-172.765 125.768-270.642 159.208-12.317-26.010-38.811-44.046-69.448-44.046h-153.6c-42.347 0-76.8 34.453-76.8 76.8v460.8c0 42.347 34.453 76.8 76.8 76.8h153.6c32.437 0 60.222-20.226 71.459-48.718 100.421 12.57 138.195 32.754 174.794 52.314 45.802 24.482 89.062 47.605 230.547 47.605 36.854 0 71.587-9.624 97.8-27.101 25.61-17.074 41.968-41.006 47.4-68.755 20.414-8.283 38.544-27.426 52.454-55.893 13.53-27.688 22.272-63.077 22.272-90.166 0-5.069-0.296-9.726-0.89-14.014 12.944-9.528 24.56-24.243 34.152-43.592 13.837-27.912 22.099-62.866 22.099-93.494 0-21.694-4.027-39.802-11.968-53.822-0.645-1.128-1.312-2.234-2.003-3.31zM230.4 870.4h-153.6c-14.115 0-25.6-11.485-25.6-25.6v-460.8c0-14.115 11.485-25.6 25.6-25.6h153.6c14.115 0 25.6 11.485 25.6 25.6v460.738c0 0.022 0 0.043 0 0.066-0.002 14.114-11.486 25.597-25.6 25.597zM938.944 474.814c-7.739 15.546-15.57 21.186-18.944 21.186-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6c2.149 0 3.699 0 5.971 4.008 3.378 5.965 5.315 16.382 5.315 28.582 0 22.77-6.427 49.883-16.771 70.754-10.131 20.437-20.451 27.856-24.915 27.856-14.139 0-25.6 11.461-25.6 25.6 0 9.067 4.715 17.034 11.827 21.582 1.581 16.206-5.976 59.629-25.627 87.947-7.438 10.722-15.238 16.87-21.4 16.87-14.139 0-25.6 11.461-25.6 25.6 0 45.072-49.765 65.6-96 65.6-128.659 0-164.691-19.259-206.413-41.56-38.992-20.84-82.864-44.29-193.587-58.085v-419.179c107.558-35.258 212.589-96.114 297.566-172.704 81.554-73.502 135.12-152.979 153.286-226.603 13.933 4.477 29.651 13.896 39.706 31.656 17.096 30.192 29.896 107.299-76.43 284.506-4.746 7.909-4.87 17.758-0.325 25.784s13.053 12.987 22.277 12.987h178.32c10.17 0 16.749 3.586 21.998 11.99 5.986 9.586 9.283 24.402 9.283 41.72 0 21.733-5.211 45.174-13.938 62.702z" data-tags="thumbs-down, dislike" />
<glyph unicode="&#xe86f;" d="M966.070-8.301l-304.302 331.965c68.573 71.754 106.232 165.549 106.232 265.136 0 102.57-39.942 199-112.47 271.53s-168.96 112.47-271.53 112.47-199-39.942-271.53-112.47-112.47-168.96-112.47-271.53 39.942-199.002 112.47-271.53 168.96-112.47 271.53-112.47c88.362 0 172.152 29.667 240.043 84.248l304.285-331.947c5.050-5.507 11.954-8.301 18.878-8.301 6.179 0 12.378 2.226 17.293 6.728 10.421 9.555 11.126 25.749 1.571 36.171zM51.2 588.8c0 183.506 149.294 332.8 332.8 332.8s332.8-149.294 332.8-332.8-149.294-332.8-332.8-332.8-332.8 149.294-332.8 332.8z" data-tags="magnifier, search" />
<glyph unicode="&#xe870;" d="M548.203 435.2l289.099 289.098c9.998 9.998 9.998 26.206 0 36.205-9.997 9.997-26.206 9.997-36.203 0l-289.099-289.099-289.098 289.099c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.998-9.997-26.206 0-36.205l289.099-289.098-289.099-289.099c-9.997-9.997-9.997-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.102 7.499l289.098 289.098 289.099-289.099c4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.206 0 36.203l-289.098 289.098z" data-tags="cross, cancel" />
<glyph unicode="&#xe871;" d="M896 665.6h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 153.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="menu, options, list" />
<glyph unicode="&#xe872;" d="M998.4 153.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM998.4 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM998.4 665.6h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM76.8 614.4c-42.347 0-76.8 34.453-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.453 76.8-76.8-34.453-76.8-76.8-76.8zM76.8 716.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM76.8 358.4c-42.347 0-76.8 34.451-76.8 76.8 0 42.347 34.453 76.8 76.8 76.8s76.8-34.453 76.8-76.8c0-42.349-34.453-76.8-76.8-76.8zM76.8 460.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6zM76.8 102.4c-42.347 0-76.8 34.451-76.8 76.8s34.453 76.8 76.8 76.8 76.8-34.451 76.8-76.8-34.453-76.8-76.8-76.8zM76.8 204.8c-14.115 0-25.6-11.485-25.6-25.6s11.485-25.6 25.6-25.6 25.6 11.485 25.6 25.6-11.485 25.6-25.6 25.6z" data-tags="list, options, menu" />
<glyph unicode="&#xe873;" d="M0 204.8c0-6.552 2.499-13.102 7.499-18.101 9.997-9.998 26.206-9.998 36.203 0l442.698 442.698 442.699-442.698c9.997-9.998 26.206-9.998 36.203 0s9.998 26.206 0 36.203l-460.8 460.8c-9.997 9.998-26.206 9.998-36.203 0l-460.8-460.8c-5-5-7.499-11.55-7.499-18.102z" data-tags="chevron-up, up" />
<glyph unicode="&#xe874;" d="M0 665.6c0 6.552 2.499 13.102 7.499 18.101 9.997 9.998 26.206 9.998 36.203 0l442.698-442.698 442.699 442.698c9.997 9.998 26.206 9.998 36.203 0s9.998-26.206 0-36.203l-460.8-460.8c-9.997-9.998-26.206-9.998-36.203 0l-460.8 460.8c-5 5-7.499 11.55-7.499 18.102z" data-tags="chevron-down, down" />
<glyph unicode="&#xe875;" d="M716.8-51.2c6.552 0 13.102 2.499 18.101 7.499 9.998 9.997 9.998 26.206 0 36.203l-442.698 442.698 442.698 442.699c9.998 9.997 9.998 26.206 0 36.203s-26.206 9.998-36.203 0l-460.8-460.8c-9.998-9.997-9.998-26.206 0-36.203l460.8-460.8c5-5 11.55-7.499 18.102-7.499z" data-tags="chevron-left, left" />
<glyph unicode="&#xe876;" d="M256-51.2c-6.552 0-13.102 2.499-18.101 7.499-9.998 9.997-9.998 26.206 0 36.203l442.698 442.698-442.698 442.699c-9.998 9.997-9.998 26.206 0 36.203s26.206 9.998 36.203 0l460.8-460.8c9.998-9.997 9.998-26.206 0-36.203l-460.8-460.8c-5-5-11.55-7.499-18.102-7.499z" data-tags="chevron-right, right" />
<glyph unicode="&#xe877;" d="M468.299 939.701l-307.2-307.2c-9.997-9.997-9.997-26.206 0-36.203 9.998-9.998 26.206-9.998 36.205 0l263.496 263.498v-834.195c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v834.195l263.499-263.496c9.997-9.998 26.206-9.998 36.203 0 4.998 4.998 7.498 11.549 7.498 18.101s-2.499 13.102-7.499 18.101l-307.2 307.2c-9.997 9.998-26.205 9.998-36.202 0z" data-tags="arrow-up, up" />
<glyph unicode="&#xe878;" d="M504.501-18.101l307.2 307.2c9.997 9.997 9.997 26.206 0 36.203-9.998 9.998-26.206 9.998-36.205 0l-263.496-263.498v834.195c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-834.195l-263.499 263.496c-9.997 9.998-26.206 9.998-36.203 0-4.998-4.998-7.498-11.549-7.498-18.101s2.499-13.102 7.499-18.101l307.2-307.2c9.997-9.998 26.205-9.998 36.202 0z" data-tags="arrow-down, down" />
<glyph unicode="&#xe879;" d="M33.099 453.301l307.2 307.2c9.997 9.997 26.206 9.997 36.203 0 9.998-9.998 9.998-26.206 0-36.205l-263.498-263.496h834.195c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-834.195l263.496-263.499c9.998-9.997 9.998-26.206 0-36.203-4.998-4.998-11.549-7.498-18.101-7.498s-13.102 2.499-18.101 7.499l-307.2 307.2c-9.998 9.997-9.998 26.205 0 36.202z" data-tags="arrow-left, left" />
<glyph unicode="&#xe87a;" d="M990.901 453.301l-307.2 307.2c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.998-9.998-26.206 0-36.205l263.498-263.496h-834.195c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h834.195l-263.496-263.499c-9.998-9.997-9.998-26.206 0-36.203 4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499l307.2 307.2c9.998 9.997 9.998 26.205 0 36.202z" data-tags="arrow-right, right" />
<glyph unicode="&#xe87b;" d="M939.701 453.301l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203l109.899-109.898h-347.797v347.797l109.899-109.898c4.998-5 11.549-7.499 18.101-7.499s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.206 0 36.203l-153.6 153.6c-9.997 9.998-26.206 9.998-36.203 0l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203s26.206-9.998 36.203 0l109.899 109.898v-347.797h-347.797l109.898 109.899c9.998 9.997 9.998 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0l-153.6-153.6c-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.206 0 36.203l-109.898 109.898h347.797v-347.797l-109.899 109.899c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l153.6-153.6c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.206 0 36.203-9.997 9.997-26.206 9.997-36.203 0l-109.898-109.899v347.797h347.797l-109.899-109.899c-9.998-9.997-9.998-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l153.6 153.6c9.998 9.997 9.998 26.205 0 36.202z" data-tags="move, arrows" />
<glyph unicode="&#xe87c;" d="M947.2 0h-921.6c-9.094 0-17.507 4.826-22.099 12.677s-4.672 17.547-0.214 25.474l460.8 819.2c4.536 8.061 13.066 13.050 22.314 13.050s17.778-4.989 22.312-13.050l460.8-819.2c4.459-7.926 4.376-17.624-0.214-25.474-4.592-7.851-13.002-12.677-22.098-12.677zM69.371 51.2h834.056l-417.027 741.382-417.029-741.382zM486.4 256c-14.138 0-25.6 11.461-25.6 25.6v256c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-256c0-14.139-11.462-25.6-25.6-25.6zM486.4 102.4c-14.138 0-25.6 11.461-25.6 25.6v51.2c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-51.2c0-14.139-11.462-25.6-25.6-25.6z" data-tags="warning, alert" />
<glyph unicode="&#xe87d;" d="M830.338 779.136c-91.869 91.869-214.016 142.464-343.938 142.464s-252.067-50.595-343.936-142.464-142.464-214.014-142.464-343.936 50.595-252.069 142.464-343.938 214.014-142.462 343.936-142.462 252.069 50.594 343.938 142.462 142.462 214.016 142.462 343.938-50.594 252.067-142.462 343.936zM486.4 0c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2zM486.4 204.8c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6 98.811 0 179.2 80.389 179.2 179.2s-80.389 179.2-179.2 179.2-179.2-80.389-179.2-179.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 127.043 103.357 230.4 230.4 230.4 127.042 0 230.4-103.357 230.4-230.4 0-118.389-89.763-216.211-204.8-228.987v-78.213c0-14.139-11.462-25.6-25.6-25.6zM486.4 51.2c-0.002 0 0 0 0 0-14.139 0-25.6 11.462-25.6 25.6v51.2c0 14.138 11.462 25.6 25.6 25.6 0 0 0 0 0 0 14.139 0 25.6-11.462 25.6-25.6v-51.2c0-14.138-11.464-25.6-25.6-25.6z" data-tags="question-circle, help" />
<glyph unicode="&#xe87e;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM742.4 563.2h-512c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 409.6h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM742.4 256h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="menu-circle, menu" />
<glyph unicode="&#xe87f;" d="M486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2zM384 230.4c-6.552 0-13.102 2.499-18.102 7.499l-153.6 153.6c-9.997 9.997-9.997 26.206 0 36.203 9.998 9.997 26.206 9.997 36.205 0l135.498-135.498 340.299 340.298c9.997 9.997 26.206 9.997 36.203 0 9.998-9.998 9.998-26.206 0-36.205l-358.4-358.4c-5-4.998-11.55-7.498-18.102-7.498z" data-tags="checkmark-circle, checkmark" />
<glyph unicode="&#xe880;" d="M733.808 249.534l-208.874 185.666 208.874 185.667c10.566 9.394 11.518 25.574 2.126 36.141-9.394 10.566-25.574 11.522-36.142 2.126l-213.392-189.682-213.392 189.68c-10.568 9.392-26.749 8.44-36.141-2.126-9.394-10.566-8.442-26.749 2.126-36.141l208.874-185.666-208.875-185.666c-10.566-9.394-11.518-25.574-2.126-36.142 5.059-5.691 12.085-8.592 19.142-8.592 6.048 0 12.122 2.131 16.998 6.466l213.394 189.683 213.392-189.683c4.878-4.334 10.949-6.466 16.998-6.466 7.058 0 14.086 2.902 19.144 8.592 9.392 10.568 8.44 26.749-2.126 36.142zM486.4-51.2c-129.922 0-252.067 50.594-343.936 142.464s-142.464 214.014-142.464 343.936c0 129.923 50.595 252.067 142.464 343.936s214.013 142.464 343.936 142.464c129.922 0 252.067-50.595 343.936-142.464s142.464-214.014 142.464-343.936-50.594-252.067-142.464-343.936c-91.869-91.87-214.014-142.464-343.936-142.464zM486.4 870.4c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2 435.2 195.23 435.2 435.2-195.23 435.2-435.2 435.2z" data-tags="cross-circle, cross" />
<glyph unicode="&#xe881;" d="M830.338 779.136c-91.869 91.869-214.016 142.464-343.938 142.464s-252.067-50.595-343.936-142.464-142.464-214.014-142.464-343.936 50.595-252.069 142.464-343.938 214.014-142.462 343.936-142.462 252.069 50.594 343.938 142.462 142.462 214.016 142.462 343.938-50.594 252.067-142.462 343.936zM486.4 0c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2zM793.6 460.8h-281.6v281.6c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-281.6h-281.6c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h281.6v-281.6c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v281.6h281.6c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z" data-tags="plus-circle, plus, cross" />
<glyph unicode="&#xe882;" d="M830.338 779.136c-91.869 91.869-214.016 142.464-343.938 142.464s-252.067-50.595-343.936-142.464-142.464-214.014-142.464-343.936 50.595-252.069 142.464-343.938 214.014-142.462 343.936-142.462 252.069 50.594 343.938 142.462 142.462 214.016 142.462 343.938-50.594 252.067-142.462 343.936zM486.4 0c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2zM793.6 409.6h-614.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h614.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="circle-minus, minus" />
<glyph unicode="&#xe883;" d="M142.464 779.138c-91.869-91.869-142.464-214.016-142.464-343.938s50.595-252.067 142.464-343.936 214.014-142.464 343.936-142.464 252.069 50.595 343.938 142.464 142.462 214.014 142.462 343.936-50.594 252.069-142.462 343.938-214.016 142.462-343.938 142.462-252.067-50.594-343.936-142.462zM921.6 435.2c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2zM468.301 734.899l-204.8-204.8c-9.998-9.995-9.998-26.206 0-36.203 9.997-9.998 26.206-9.998 36.203 0l161.096 161.101v-526.997c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v526.997l161.101-161.096c9.995-9.998 26.206-9.998 36.203 0 4.997 4.997 7.496 11.547 7.496 18.099s-2.499 13.102-7.501 18.099l-204.8 204.8c-9.997 10-26.202 10-36.198 0z" data-tags="arrow-up-circle, up" />
<glyph unicode="&#xe884;" d="M830.336 91.262c91.869 91.869 142.464 214.016 142.464 343.938s-50.595 252.067-142.464 343.936-214.014 142.464-343.936 142.464-252.069-50.595-343.938-142.464-142.462-214.014-142.462-343.936 50.594-252.069 142.462-343.938 214.016-142.462 343.938-142.462 252.067 50.594 343.936 142.462zM51.2 435.2c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2zM504.499 135.501l204.8 204.8c9.998 9.995 9.998 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0l-161.096-161.101v526.997c0 14.138-11.461 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-526.997l-161.101 161.096c-9.995 9.998-26.206 9.998-36.203 0-4.997-4.997-7.496-11.547-7.496-18.099s2.499-13.102 7.501-18.099l204.8-204.8c9.997-10 26.202-10 36.198 0z" data-tags="arrow-down-circle, down" />
<glyph unicode="&#xe885;" d="M142.462 779.136c91.869 91.869 214.016 142.464 343.938 142.464s252.067-50.595 343.936-142.464 142.464-214.014 142.464-343.936-50.595-252.069-142.464-343.938-214.014-142.462-343.936-142.462-252.069 50.594-343.938 142.462-142.462 214.016-142.462 343.938 50.594 252.067 142.462 343.936zM486.4 0c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2zM186.701 453.299l204.8 204.8c9.995 9.998 26.206 9.998 36.203 0 9.998-9.997 9.998-26.206 0-36.203l-161.101-161.096h526.997c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-526.997l161.096-161.101c9.998-9.995 9.998-26.206 0-36.203-4.997-4.997-11.547-7.496-18.099-7.496s-13.102 2.499-18.099 7.501l-204.8 204.8c-10 9.997-10 26.202 0 36.198z" data-tags="arrow-left-circle, left" />
<glyph unicode="&#xe886;" d="M830.338 779.136c-91.869 91.869-214.016 142.464-343.938 142.464s-252.067-50.595-343.936-142.464-142.464-214.014-142.464-343.936 50.595-252.069 142.464-343.938 214.014-142.462 343.936-142.462 252.069 50.594 343.938 142.462 142.462 214.016 142.462 343.938-50.594 252.067-142.462 343.936zM486.4 0c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2zM786.099 453.299l-204.8 204.8c-9.995 9.998-26.206 9.998-36.203 0-9.998-9.997-9.998-26.206 0-36.203l161.101-161.096h-526.997c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h526.997l-161.096-161.101c-9.998-9.995-9.998-26.206 0-36.203 4.997-4.997 11.547-7.496 18.099-7.496s13.102 2.499 18.099 7.501l204.8 204.8c10 9.997 10 26.202 0 36.198z" data-tags="arrow-right-circle, right" />
<glyph unicode="&#xe887;" d="M142.464 779.138c-91.869-91.869-142.464-214.016-142.464-343.938s50.595-252.067 142.464-343.936 214.014-142.464 343.936-142.464 252.069 50.595 343.938 142.464 142.462 214.014 142.462 343.936-50.594 252.069-142.462 343.938-214.016 142.462-343.938 142.462-252.067-50.594-343.936-142.462zM921.6 435.2c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2zM768 358.4c0-6.552-2.499-13.102-7.499-18.102-9.997-9.997-26.206-9.997-36.203 0l-237.898 237.898-237.898-237.898c-9.998-9.997-26.206-9.997-36.205 0-9.997 9.998-9.997 26.206 0 36.205l256 256c9.997 9.998 26.206 9.998 36.203 0l256-256c5-5 7.499-11.55 7.499-18.102z" data-tags="chevron-up-circle, up" />
<glyph unicode="&#xe888;" d="M830.336 91.262c91.869 91.869 142.464 214.016 142.464 343.938s-50.595 252.067-142.464 343.936-214.014 142.464-343.936 142.464-252.069-50.595-343.938-142.464-142.462-214.014-142.462-343.936 50.594-252.069 142.462-343.938 214.016-142.462 343.938-142.462 252.067 50.594 343.936 142.462zM51.2 435.2c0 239.97 195.23 435.2 435.2 435.2s435.2-195.23 435.2-435.2c0-239.97-195.23-435.2-435.2-435.2s-435.2 195.23-435.2 435.2zM204.8 512c0 6.552 2.499 13.102 7.499 18.102 9.997 9.997 26.206 9.997 36.203 0l237.898-237.898 237.898 237.898c9.998 9.997 26.206 9.997 36.205 0 9.997-9.998 9.997-26.206 0-36.205l-256-256c-9.997-9.998-26.206-9.998-36.203 0l-256 256c-5 5-7.499 11.55-7.499 18.102z" data-tags="chevron-down-circle, down" />
<glyph unicode="&#xe889;" d="M142.462 779.136c91.869 91.869 214.016 142.464 343.938 142.464s252.067-50.595 343.936-142.464 142.464-214.014 142.464-343.936-50.595-252.069-142.464-343.938-214.014-142.462-343.936-142.462-252.069 50.594-343.938 142.462-142.462 214.016-142.462 343.938 50.594 252.067 142.462 343.936zM486.4 0c239.97 0 435.2 195.23 435.2 435.2s-195.23 435.2-435.2 435.2c-239.97 0-435.2-195.23-435.2-435.2s195.23-435.2 435.2-435.2zM563.2 153.6c6.552 0 13.102 2.499 18.102 7.499 9.997 9.997 9.997 26.206 0 36.203l-237.898 237.898 237.898 237.898c9.997 9.998 9.997 26.206 0 36.205-9.998 9.997-26.206 9.997-36.205 0l-256-256c-9.998-9.997-9.998-26.206 0-36.203l256-256c5-5 11.55-7.499 18.102-7.499z" data-tags="chevron-left-circle, left" />
<glyph unicode="&#xe88a;" d="M830.338 779.136c-91.869 91.869-214.016 142.464-343.938 142.464s-252.067-50.595-343.936-142.464-142.464-214.014-142.464-343.936 50.595-252.069 142.464-343.938 214.014-142.462 343.936-142.462 252.069 50.594 343.938 142.462 142.462 214.016 142.462 343.938-50.594 252.067-142.462 343.936zM486.4 0c-239.97 0-435.2 195.23-435.2 435.2s195.23 435.2 435.2 435.2c239.97 0 435.2-195.23 435.2-435.2s-195.23-435.2-435.2-435.2zM409.6 153.6c-6.552 0-13.102 2.499-18.102 7.499-9.997 9.997-9.997 26.206 0 36.203l237.898 237.898-237.898 237.898c-9.997 9.998-9.997 26.206 0 36.205 9.998 9.997 26.206 9.997 36.205 0l256-256c9.998-9.997 9.998-26.206 0-36.203l-256-256c-5-5-11.55-7.499-18.102-7.499z" data-tags="chevron-right-circle, right" />
<glyph unicode="&#xe88b;" d="M998.4 204.8h-153.6c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h153.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM640 204.8h-358.4c-14.138 0-25.6 11.461-25.6 25.6v358.4c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-332.8h332.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM281.6 768c-14.138 0-25.6 11.462-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-153.6c0-14.138-11.462-25.6-25.6-25.6zM742.4-51.2c-14.139 0-25.6 11.461-25.6 25.6v691.2h-691.2c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h716.8c14.139 0 25.6-11.462 25.6-25.6v-716.8c0-14.139-11.461-25.6-25.6-25.6z" data-tags="crop, cut" />
<glyph unicode="&#xe88c;" d="M947.2 614.4c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.139 0-25.6 11.462-25.6 25.6s11.461 25.6 25.6 25.6h102.4c42.349 0 76.8-34.453 76.8-76.8v-102.4c0-14.138-11.461-25.6-25.6-25.6zM25.6 614.4c-14.138 0-25.6 11.462-25.6 25.6v102.4c0 42.347 34.453 76.8 76.8 76.8h102.4c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.138-11.462-25.6-25.6-25.6zM179.2 51.2h-102.4c-42.347 0-76.8 34.451-76.8 76.8v102.4c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h102.4c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM896 51.2h-102.4c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-102.4c0-42.349-34.451-76.8-76.8-76.8z" data-tags="frame-expand, maximize, view, rectangle" />
<glyph unicode="&#xe88d;" d="M742.4 512h-102.4c-42.349 0-76.8 34.451-76.8 76.8v102.4c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-102.4c0-14.115 11.485-25.6 25.6-25.6h102.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM332.8 512h-102.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h102.4c14.115 0 25.6 11.485 25.6 25.6v102.4c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-102.4c0-42.349-34.453-76.8-76.8-76.8zM588.8 153.6c-14.139 0-25.6 11.461-25.6 25.6v102.4c0 42.349 34.451 76.8 76.8 76.8h102.4c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-102.4c-14.115 0-25.6-11.485-25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6zM384 153.6c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.115-11.485 25.6-25.6 25.6h-102.4c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h102.4c42.347 0 76.8-34.451 76.8-76.8v-102.4c0-14.139-11.462-25.6-25.6-25.6z" data-tags="frame-contract, minimize" />
<glyph unicode="&#xe88e;" d="M512 358.4c-3.379 0-6.758 0.669-9.934 2.006l-486.4 204.8c-9.493 3.997-15.666 13.293-15.666 23.594s6.173 19.597 15.666 23.594l486.4 204.8c6.354 2.675 13.517 2.675 19.869 0l486.4-204.8c9.493-3.997 15.666-13.293 15.666-23.594s-6.173-19.597-15.666-23.594l-486.4-204.8c-3.176-1.338-6.555-2.006-9.934-2.006zM91.57 588.8l420.43-177.024 420.43 177.024-420.43 177.024-420.43-177.024zM512 204.8c-3.379 0-6.758 0.669-9.934 2.006l-486.4 204.8c-13.030 5.486-19.146 20.498-13.659 33.528s20.498 19.146 33.528 13.659l476.466-200.618 476.466 200.618c13.029 5.483 28.042-0.63 33.528-13.659 5.488-13.032-0.63-28.042-13.659-33.528l-486.4-204.8c-3.176-1.338-6.555-2.006-9.934-2.006zM512 51.2c-3.379 0-6.758 0.669-9.934 2.006l-486.4 204.8c-13.030 5.486-19.146 20.498-13.659 33.528s20.498 19.144 33.528 13.659l476.466-200.618 476.466 200.618c13.029 5.483 28.042-0.63 33.528-13.659 5.488-13.032-0.63-28.042-13.659-33.528l-486.4-204.8c-3.176-1.338-6.555-2.006-9.934-2.006z" data-tags="layers, stack" />
<glyph unicode="&#xe88f;" d="M830.966 803.472c-20.294 13.707-48.59 25.803-84.106 35.95-69.917 19.976-162.418 30.978-260.461 30.978-98.045 0-190.544-11.002-260.461-30.978-35.515-10.147-63.813-22.243-84.104-35.95-32.594-22.016-39.435-45.363-39.435-61.072v-25.6c0-21.894 16.451-58.026 32.701-82.4l250.398-375.598c12.838-19.259 24.101-56.456 24.101-79.602v-153.6c0-8.872 4.594-17.112 12.141-21.776 4.11-2.541 8.778-3.824 13.459-3.824 3.912 0 7.835 0.898 11.448 2.702l102.4 51.2c8.674 4.336 14.152 13.2 14.152 22.898v102.4c0 23.146 11.262 60.342 24.099 79.602l250.4 375.598c16.251 24.373 32.701 60.504 32.701 82.4v25.6c0 15.709-6.842 39.056-39.434 61.072zM240.005 790.194c65.47 18.706 152.974 29.006 246.395 29.006s180.925-10.301 246.394-29.006c70.533-20.154 86.406-41.798 86.406-47.794s-15.874-27.64-86.406-47.794c-65.469-18.706-152.973-29.006-246.394-29.006s-180.925 10.301-246.395 29.006c-70.531 20.154-86.405 41.798-86.405 47.794s15.874 27.64 86.405 47.794zM544.701 287.202c-18.338-27.504-32.701-74.946-32.701-108.002v-86.578l-51.2-25.6v112.178c0 33.056-14.363 80.496-32.701 108.002l-249.859 374.79c14.035-5.997 29.966-11.549 47.699-16.614 69.917-19.976 162.416-30.978 260.461-30.978 98.043 0 190.544 11.002 260.459 30.978 17.733 5.067 33.666 10.619 47.702 16.616l-249.861-374.792z" data-tags="funnel, filter" />
<glyph unicode="&#xe890;" d="M844.8 0h-716.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h716.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM817.13 189.285l-131.562 306.978c-0.032 0.075-0.064 0.149-0.098 0.224l-175.539 409.598c-4.035 9.413-13.291 15.515-23.531 15.515s-19.496-6.102-23.531-15.515l-175.539-409.594c-0.034-0.078-0.067-0.155-0.099-0.232l-131.562-306.974c-5.568-12.995 0.451-28.045 13.446-33.614 12.992-5.57 28.045 0.451 33.614 13.445l125.008 291.685h317.325l125.008-291.685c4.16-9.707 13.61-15.523 23.542-15.522 3.365 0 6.784 0.667 10.072 2.077 12.995 5.568 19.016 20.619 13.445 33.614zM349.68 512l136.72 319.013 136.72-319.013h-273.44z" data-tags="text-format, typography" />
<glyph unicode="&#xe891;" d="M691.2 921.6h-614.4c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h276.981l-97.432-584.592c-2.325-13.946 7.098-27.134 21.043-29.459 1.426-0.237 2.842-0.354 4.24-0.354 12.288 0 23.133 8.875 25.221 21.397l98.834 593.008h285.514c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6zM537.6 153.6h-460.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h460.8c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6zM804.203 128l84.299 84.299c9.998 9.997 9.998 26.206 0 36.203-9.997 9.997-26.206 9.997-36.203 0l-84.299-84.299-84.299 84.299c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l84.299-84.299-84.299-84.299c-9.998-9.997-9.998-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l84.299 84.298 84.299-84.299c4.998-4.998 11.549-7.498 18.101-7.498s13.102 2.499 18.101 7.499c9.998 9.997 9.998 26.206 0 36.203l-84.298 84.298z" data-tags="text-format-remove, typography" />
<glyph unicode="&#xe892;" d="M356.331 138.085l-65.734 153.381c-0.030 0.072-0.061 0.144-0.093 0.216l-87.773 204.803c-4.035 9.413-13.291 15.515-23.531 15.515s-19.496-6.102-23.531-15.515l-87.771-204.803c-0.032-0.072-0.062-0.144-0.093-0.216l-65.736-153.381c-5.568-12.995 0.451-28.045 13.446-33.614 12.997-5.57 28.046 0.451 33.614 13.445l59.179 138.085h141.781l59.179-138.085c4.162-9.707 13.61-15.523 23.542-15.522 3.363 0 6.784 0.667 10.072 2.077 12.997 5.568 19.016 20.619 13.448 33.614zM130.251 307.2l48.949 114.213 48.949-114.213h-97.898zM1022.032 137.846l-106.669 256.003c-0.029 0.069-0.056 0.138-0.085 0.205l-149.246 358.192c-3.976 9.539-13.298 15.754-23.632 15.754s-19.656-6.214-23.632-15.754l-149.243-358.184c-0.032-0.075-0.061-0.149-0.093-0.222l-106.664-255.994c-5.438-13.051 0.733-28.038 13.784-33.478 13.048-5.435 28.040 0.734 33.477 13.784l100.104 240.248h264.533l100.102-240.246c4.098-9.832 13.616-15.76 23.642-15.76 3.282 0 6.618 0.634 9.835 1.974 13.053 5.44 19.224 20.427 13.787 33.478zM631.467 409.6l110.933 266.24 110.933-266.24h-221.866z" data-tags="text-size, typography, font-size" />
<glyph unicode="&#xe893;" d="M512 512h-128c-14.138 0-25.6 11.461-25.6 25.6v153.6c0 14.138 11.462 25.6 25.6 25.6h128c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4zM409.6 563.2h102.4c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-102.4v-102.4zM563.2 204.8h-179.2c-14.138 0-25.6 11.461-25.6 25.6v153.6c0 14.139 11.462 25.6 25.6 25.6h179.2c56.464 0 102.4-45.936 102.4-102.4s-45.936-102.4-102.4-102.4zM409.6 256h153.6c28.232 0 51.2 22.968 51.2 51.2s-22.968 51.2-51.2 51.2h-153.6v-102.4zM563.2 51.2h-281.6c-42.347 0-76.8 34.451-76.8 76.8v665.6c0 42.347 34.453 76.8 76.8 76.8h230.4c141.16 0 256-114.842 256-256 0-42.208-10.328-83.355-30.035-120.251 51.886-48.382 81.235-115.346 81.235-186.949 0-141.16-114.84-256-256-256zM281.6 819.2c-14.115 0-25.6-11.485-25.6-25.6v-665.6c0-14.115 11.485-25.6 25.6-25.6h281.6c112.926 0 204.8 91.874 204.8 204.8 0 63.322-28.72 122.125-78.797 161.334-10.797 8.453-12.966 23.842-5.134 34.917 21.416 33.088 32.731 71.43 32.731 110.949 0 112.928-91.874 204.8-204.8 204.8h-230.4z" data-tags="bold, typography" />
<glyph unicode="&#xe894;" d="M793.6 870.4h-204.829c-0.070 0-0.142 0-0.213 0h-204.558c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h173.573l-143.362-716.8h-183.811c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h204.733c0.032 0 0.064-0.005 0.096-0.005 0.035 0 0.070 0.005 0.107 0.005h204.664c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6h-173.573l143.36 716.8h183.813c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6z" data-tags="italic, typography" />
<glyph unicode="&#xe895;" d="M742.4 51.2h-460.8c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h460.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM512 204.8c-141.158 0-256 114.84-256 256v384c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-112.926 91.872-204.8 204.8-204.8 112.926 0 204.8 91.874 204.8 204.8v384c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-384c0-141.16-114.84-256-256-256z" data-tags="underline, typography" />
<glyph unicode="&#xe896;" d="M844.8 870.4h-716.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h332.8v-230.4c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v230.4h332.8c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6zM486.4 51.2c-14.138 0-25.6 11.461-25.6 25.6v204.8c0 14.139 11.462 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-204.8c0-14.139-11.462-25.6-25.6-25.6zM947.2 358.4h-921.6c-14.138 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.462 25.6 25.6 25.6h921.6c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6zM51.2 409.6h870.4v51.2h-870.4v-51.2z" data-tags="strikethrough, typography" />
<glyph unicode="&#xe897;" d="M1016.501 478.901c-9.997 9.998-26.206 9.998-36.203 0l-183.592-183.592c-29.944-29.944-78.669-29.944-108.613 0l-239.184 239.186c-14.426 14.426-22.37 33.712-22.37 54.306s7.944 39.88 22.37 54.306l183.592 183.594c9.998 9.997 9.998 26.206 0 36.203-9.997 9.998-26.206 9.998-36.203 0l-183.592-183.594c-24.096-24.096-37.366-56.238-37.366-90.509 0-14.605 2.432-28.818 7.064-42.192l-374.906-374.907c-4.8-4.8-7.498-11.312-7.498-18.101v-76.8c0-14.139 11.462-25.6 25.6-25.6h486.4c6.789 0 13.301 2.698 18.101 7.499l170.104 170.104c13.374-4.634 27.587-7.064 42.194-7.064 34.27 0 66.414 13.27 90.509 37.366l183.592 183.592c10 9.998 10 26.206 0.002 36.203zM501.397 102.4h-450.197v40.595l358.477 358.477c1-1.069 1.99-2.142 3.030-3.181l239.184-239.184c1.038-1.038 2.112-2.032 3.182-3.030l-153.677-153.677z" data-tags="highlight, magic-marker" />
<glyph unicode="&#xe898;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 563.2h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 256h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="text-align-left, typography, paragraph" />
<glyph unicode="&#xe899;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM793.6 563.2h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM793.6 256h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="text-align-center, typography, paragraph" />
<glyph unicode="&#xe89a;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM896 563.2h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 256h-563.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h563.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="text-align-right, typography, paragraph" />
<glyph unicode="&#xe89b;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM896 563.2h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 256h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="text-align-justify, typography, paragraph" />
<glyph unicode="&#xe89c;" d="M947.2 716.8h-512c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM947.2 512h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM947.2 307.2h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM947.2 102.4h-512c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h512c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM263.498 274.101l-58.698-58.696v439.592l58.698-58.698c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.102 7.499c9.997 9.997 9.997 26.206 0 36.203l-102.4 102.4c-9.998 9.997-26.206 9.997-36.205 0l-102.4-102.4c-9.997-9.998-9.997-26.206 0-36.203 9.998-9.997 26.206-9.997 36.205 0l58.698 58.698v-439.592l-58.698 58.698c-9.998 9.997-26.206 9.997-36.205 0-9.997-9.997-9.997-26.206 0-36.203l102.4-102.4c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.102 7.499l102.4 102.4c9.997 9.997 9.997 26.206 0 36.203s-26.206 9.997-36.205-0.002z" data-tags="line-spacing, typography, line-height" />
<glyph unicode="&#xe89d;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM896 563.2h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 256h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM127.997 256c-3.902 0-7.822 0.891-11.445 2.702-8.674 4.336-14.152 13.2-14.152 22.898v307.2c0 9.698 5.478 18.562 14.152 22.898 8.67 4.336 19.053 3.403 26.808-2.418l204.8-153.6c6.446-4.834 10.24-12.422 10.24-20.48s-3.794-15.645-10.24-20.48l-204.8-153.6c-4.517-3.387-9.923-5.12-15.363-5.12zM153.6 537.6v-204.8l136.533 102.4-136.533 102.4z" data-tags="indent-increase, typography" />
<glyph unicode="&#xe89e;" d="M896 716.8h-768c-14.138 0-25.6 11.462-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.462 25.6-25.6s-11.461-25.6-25.6-25.6zM896 563.2h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 409.6h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 256h-409.6c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM896 102.4h-768c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h768c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM332.803 256c-5.44 0-10.846 1.731-15.363 5.12l-204.8 153.6c-6.446 4.834-10.24 12.422-10.24 20.48s3.794 15.645 10.24 20.48l204.8 153.6c7.758 5.819 18.136 6.757 26.808 2.418 8.674-4.336 14.152-13.2 14.152-22.898v-307.2c0-9.698-5.478-18.562-14.152-22.898-3.621-1.81-7.542-2.702-11.445-2.702zM170.667 435.2l136.533-102.4v204.8l-136.533-102.4z" data-tags="indent-decrease, typography" />
<glyph unicode="&#xe89f;" d="M793.6 870.4h-435.2c-112.928 0-204.8-91.872-204.8-204.8s91.872-204.8 204.8-204.8h51.2v-384c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v742.4h153.6v-742.4c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v742.4h128c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6zM409.6 512h-51.2c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6h51.2v-307.2z" data-tags="pilcrow, typography, paragraph" />
<glyph unicode="&#xe8a0;" d="M786.101 94.901l-102.4 102.4c-9.997 9.997-26.206 9.997-36.203 0-9.998-9.997-9.998-26.206 0-36.203l58.698-58.698h-475.795c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h475.795l-58.698-58.699c-9.998-9.997-9.998-26.206 0-36.203 5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l102.4 102.4c9.998 9.997 9.998 26.205 0 36.202zM793.6 921.6h-435.2c-112.928 0-204.8-91.872-204.8-204.8s91.872-204.8 204.8-204.8h51.2v-230.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v588.8h153.6v-588.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v588.8h128c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6zM409.6 563.2h-51.2c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6h51.2v-307.2z" data-tags="direction-ltr, typography, paragraph" />
<glyph unicode="&#xe8a1;" d="M793.6 921.6h-435.2c-112.928 0-204.8-91.872-204.8-204.8s91.872-204.8 204.8-204.8h51.2v-230.4c0-14.139 11.462-25.6 25.6-25.6s25.6 11.461 25.6 25.6v588.8h153.6v-588.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v588.8h128c14.139 0 25.6 11.462 25.6 25.6s-11.461 25.6-25.6 25.6zM409.6 563.2h-51.2c-84.696 0-153.6 68.904-153.6 153.6s68.904 153.6 153.6 153.6h51.2v-307.2zM742.4 102.4h-475.797l58.699 58.699c9.997 9.997 9.997 26.206 0 36.203s-26.206 9.997-36.205 0l-102.4-102.4c-9.997-9.997-9.997-26.206 0-36.203l102.4-102.4c5-5 11.55-7.499 18.102-7.499s13.102 2.499 18.102 7.499c9.997 9.997 9.997 26.206 0 36.203l-58.699 58.698h475.797c14.139 0 25.6 11.461 25.6 25.6s-11.461 25.6-25.6 25.6z" data-tags="direction-rtl, typography, paragraph" />
<glyph unicode="&#xe8a2;" d="M896 512h-768c-42.347 0-76.8 34.453-76.8 76.8v307.2c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-14.115 11.485-25.6 25.6-25.6h768c14.115 0 25.6 11.485 25.6 25.6v307.2c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-307.2c0-42.347-34.451-76.8-76.8-76.8zM76.8 409.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM230.4 409.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM384 409.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6zM537.6 409.6h-51.2c-14.138 0-25.6 11.461-25.6 25.6s11.462 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM691.2 409.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM844.8 409.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM998.4 409.6h-51.2c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h51.2c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6zM947.2-51.2c-14.139 0-25.6 11.461-25.6 25.6v307.2c0 14.115-11.485 25.6-25.6 25.6h-768c-14.115 0-25.6-11.485-25.6-25.6v-307.2c0-14.139-11.462-25.6-25.6-25.6s-25.6 11.461-25.6 25.6v307.2c0 42.349 34.453 76.8 76.8 76.8h768c42.349 0 76.8-34.451 76.8-76.8v-307.2c0-14.139-11.461-25.6-25.6-25.6z" data-tags="page-break" />
<glyph unicode="&#xe8a3;" d="M453.301 222.901c-9.997 9.997-26.206 9.997-36.203 0l-161.098-161.098v885.397c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-885.397l-161.099 161.098c-9.997 9.997-26.206 9.997-36.203 0s-9.998-26.206 0-36.203l204.8-204.8c5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l204.8 204.8c9.998 9.997 9.998 26.205 0 36.202zM1021.93 598.885l-153.6 358.4c-4.032 9.413-13.29 15.515-23.53 15.515s-19.498-6.102-23.53-15.515l-153.6-358.4c-5.57-12.995 0.45-28.045 13.445-33.614 13-5.57 28.045 0.451 33.614 13.446l59.179 138.083h141.781l59.179-138.085c4.16-9.707 13.61-15.523 23.542-15.522 3.365 0 6.784 0.667 10.072 2.075 12.997 5.57 19.018 20.621 13.446 33.616zM795.851 768l48.949 114.211 48.949-114.211h-97.898zM947.2-51.2h-204.8c-9.125 0-17.562 4.858-22.142 12.75-4.579 7.894-4.613 17.629-0.085 25.552l182.914 320.098h-160.686c-14.139 0-25.6 11.461-25.6 25.6s11.461 25.6 25.6 25.6h204.8c9.125 0 17.562-4.858 22.142-12.75 4.579-7.894 4.613-17.629 0.085-25.552l-182.914-320.098h160.686c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6z" data-tags="sort-alpha-asc, sort, arrange, alphabetic" />
<glyph unicode="&#xe8a4;" d="M453.301 222.901c-9.997 9.997-26.206 9.997-36.203 0l-161.098-161.098v885.397c0 14.138-11.462 25.6-25.6 25.6s-25.6-11.462-25.6-25.6v-885.397l-161.099 161.098c-9.997 9.997-26.206 9.997-36.203 0s-9.998-26.206 0-36.203l204.8-204.8c5-4.998 11.55-7.498 18.102-7.498s13.102 2.499 18.101 7.499l204.8 204.8c9.998 9.997 9.998 26.205 0 36.202zM691.2 716.8h-102.4c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.461 25.6 25.6 25.6h102.4c14.139 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6zM614.4 768h51.2v51.2h-51.2v-51.2zM793.6 512h-204.8c-14.139 0-25.6 11.462-25.6 25.6v102.4c0 14.138 11.461 25.6 25.6 25.6h204.8c14.139 0 25.6-11.462 25.6-25.6v-102.4c0-14.138-11.461-25.6-25.6-25.6zM614.4 563.2h153.6v51.2h-153.6v-51.2zM896 307.2h-307.2c-14.139 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h307.2c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6zM614.4 358.4h256v51.2h-256v-51.2zM998.4 102.4h-409.6c-14.139 0-25.6 11.461-25.6 25.6v102.4c0 14.139 11.461 25.6 25.6 25.6h409.6c14.139 0 25.6-11.461 25.6-25.6v-102.4c0-14.139-11.461-25.6-25.6-25.6zM614.4 153.6h358.4v51.2h-358.4v-51.2z" data-tags="sort-amount-asc, sort, arrange" />
<glyph unicode="&#xe8a5;" d="M870.4 768c-18.645 0-36.126-5.034-51.2-13.776v64.976c0 56.464-45.936 102.4-102.4 102.4-21.072 0-40.674-6.403-56.973-17.358-14.008 39.88-52.021 68.558-96.627 68.558s-82.619-28.678-96.627-68.558c-16.299 10.955-35.901 17.358-56.973 17.358-56.464 0-102.4-45.936-102.4-102.4v-377.52l-68.909 119.446c-13.366 24.326-35.163 41.645-61.405 48.782-25.56 6.949-52.146 3.272-74.858-10.357-46.461-27.877-64.138-90.819-39.442-140.37 1.514-3.101 34.213-70.024 136.17-273.938 48.010-96.021 100.704-164.653 156.619-203.994 43.896-30.886 74.195-32.451 79.824-32.451h256c43.573 0 84.085 14.166 120.41 42.109 34.146 26.266 63.782 64.232 88.088 112.842 47.824 95.65 73.102 227.966 73.102 382.65v179.2c0 56.464-45.936 102.4-102.4 102.4zM921.6 486.4c0-146.774-23.41-271.174-67.698-359.752-28.888-57.776-80.565-126.648-162.702-126.648h-255.49c-2.016 0.173-23.546 2.565-56.067 26.894-32.41 24.246-82.155 75.373-135.091 181.246-103.789 207.579-135.685 272.947-135.995 273.584-0.037 0.077-0.075 0.154-0.114 0.23-12.87 25.742-3.744 59.49 19.928 73.694 10.645 6.387 23.102 8.11 35.080 4.853 12.766-3.47 23.438-12.059 30.051-24.182 0.098-0.179 0.198-0.357 0.301-0.534l79.899-138.498c16.349-29.842 34.723-42.405 54.622-37.328 19.955 5.088 30.075 25.019 30.075 59.24v400c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-332.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v384c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-384c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v332.8c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-384c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v230.4c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-179.2z" data-tags="hand, drag, fingers" />
<glyph unicode="&#xe8a6;" d="M870.4 563.2c-21.072 0-40.674-6.403-56.973-17.358-14.008 39.88-52.021 68.558-96.627 68.558-21.072 0-40.674-6.403-56.973-17.358-14.008 39.88-52.021 68.558-96.627 68.558-18.645 0-36.125-5.034-51.2-13.776v167.376c0 56.464-45.936 102.4-102.4 102.4s-102.4-45.936-102.4-102.4v-377.52l-68.909 119.446c-13.366 24.326-35.163 41.645-61.405 48.782-25.56 6.949-52.146 3.272-74.858-10.357-46.461-27.877-64.138-90.819-39.442-140.37 1.514-3.101 34.213-70.024 136.17-273.938 48.010-96.021 100.704-164.653 156.619-203.994 43.896-30.886 74.195-32.451 79.824-32.451h256c43.41 0 83.571 12.566 119.371 37.352 34.603 23.957 64.469 58.984 88.768 104.11 48.059 89.251 73.461 217.381 73.461 370.538 0 56.464-45.936 102.4-102.4 102.4zM854.259 114.538c-28.134-52.251-79.262-114.538-163.059-114.538h-255.49c-2.016 0.173-23.546 2.565-56.067 26.894-32.41 24.246-82.155 75.373-135.091 181.246-103.789 207.579-135.685 272.947-135.995 273.584-0.037 0.077-0.075 0.154-0.114 0.23-12.87 25.742-3.744 59.49 19.928 73.694 10.645 6.387 23.102 8.11 35.080 4.853 12.766-3.47 23.438-12.059 30.051-24.182 0.098-0.179 0.198-0.357 0.301-0.534l79.899-138.498c16.349-29.842 34.723-42.405 54.622-37.328 19.955 5.088 30.075 25.019 30.075 59.24v400c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-332.8c0-14.138 11.462-25.6 25.6-25.6s25.6 11.462 25.6 25.6v76.8c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-76.8c0-14.138 11.461-25.6 25.6-25.6s25.6 11.462 25.6 25.6v25.6c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2v-76.8c0-14.139 11.461-25.6 25.6-25.6s25.6 11.461 25.6 25.6v25.6c0 28.232 22.968 51.2 51.2 51.2s51.2-22.968 51.2-51.2c0-144.712-23.286-264.448-67.341-346.262z" data-tags="pointer-up, hand, index, finger" />
<glyph unicode="&#xe8a7;" d="M614.4 102.4c0 21.072-6.403 40.674-17.358 56.973 39.88 14.008 68.558 52.021 68.558 96.627 0 21.072-6.403 40.674-17.358 56.973 39.88 14.008 68.558 52.021 68.558 96.627 0 18.645-5.034 36.125-13.776 51.2h167.376c56.464 0 102.4 45.936 102.4 102.4s-45.936 102.4-102.4 102.4h-377.52l119.446 68.909c24.326 13.366 41.645 35.163 48.782 61.405 6.949 25.56 3.272 52.146-10.357 74.858-27.877 46.461-90.819 64.138-140.37 39.442-3.101-1.514-70.024-34.213-273.938-136.17-96.021-48.010-164.653-100.704-203.994-156.619-30.886-43.896-32.451-74.195-32.451-79.824v-256c0-43.41 12.566-83.571 37.352-119.371 23.957-34.603 58.984-64.469 104.11-88.768 89.251-48.059 217.381-73.461 370.538-73.461 56.464 0 102.4 45.936 102.4 102.4zM165.738 118.541c-52.251 28.134-114.538 79.262-114.538 163.059v255.49c0.173 2.016 2.565 23.546 26.894 56.067 24.246 32.41 75.373 82.155 181.246 135.091 207.579 103.789 272.947 135.685 273.584 135.995 0.077 0.037 0.154 0.075 0.23 0.114 25.742 12.87 59.49 3.744 73.694-19.928 6.387-10.645 8.11-23.102 4.853-35.080-3.47-12.766-12.059-23.438-24.182-30.051-0.179-0.098-0.357-0.198-0.534-0.301l-138.498-79.899c-29.842-16.349-42.405-34.723-37.328-54.622 5.088-19.955 25.019-30.075 59.24-30.075h400c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-332.8c-14.138 0-25.6-11.462-25.6-25.6s11.462-25.6 25.6-25.6h76.8c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-76.8c-14.138 0-25.6-11.461-25.6-25.6s11.462-25.6 25.6-25.6h25.6c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2h-76.8c-14.139 0-25.6-11.461-25.6-25.6s11.461-25.6 25.6-25.6h25.6c28.232 0 51.2-22.968 51.2-51.2s-22.968-51.2-51.2-51.2c-144.712 0-264.448 23.286-346.262 67.341z" data-tags="pointer-right, hand, index, finger" />
<glyph unicode="&#xe8a8;" d="M870.4 358.4c-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-21.072 0-40.674 6.403-56.973 17.358-14.008-39.88-52.021-68.558-96.627-68.558-18.645 0-36.125 5.034-51.2 13.776v-167.376c0-56.464-45.936-102.4-102.4-102.4s-102.4 45.936-102.4 102.4v377.52l-68.909-119.446c-13.366-24.326-35.163-41.645-61.405-48.782-25.56-6.949-52.146-3.272-74.858 10.357-46.461 27.877-64.138 90.819-39.442 140.37 1.514 3.101 34.213 70.024 136.17 273.938 48.010 96.021 100.704 164.653 156.619 203.994 43.896 30.886 74.195 32.451 79.824 32.451h256c43.41 0 83.571-12.566 119.371-37.352 34.603-23.957 64.469-58.984 88.768-104.11 48.059-89.251 73.461-217.381 73.461-370.538 0-56.464-45.936-102.4-102.4-102.4zM854.259 807.062c-28.134 52.251-79.262 114.538-163.059 114.538h-255.49c-2.016-0.173-23.546-2.565-56.067-26.894-32.41-24.246-82.155-75.373-135.091-181.246-103.789-207.579-135.685-272.947-135.995-273.584-0.037-0.077-0.075-0.154-0.114-0.23-12.87-25.742-3.744-59.49 19.928-73.694 10.645-6.387 23.102-8.11 35.080-4.853 12.766 3.47 23.438 12.059 30.051 24.182 0.098 0.179 0.198 0.357 0.301 0.534l79.899 138.498c16.349 29.842 34.723 42.405 54.622 37.328 19.955-5.088 30.075-25.019 30.075-59.24v-400c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v332.8c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-76.8c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.138 11.461 25.6 25.6 25.6s25.6-11.462 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2v76.8c0 14.139 11.461 25.6 25.6 25.6s25.6-11.461 25.6-25.6v-25.6c0-28.232 22.968-51.2 51.2-51.2s51.2 22.968 51.2 51.2c0 144.712-23.286 264.448-67.341 346.262z" data-tags="pointer-down, hand, index, finger" />
<glyph unicode="&#xe8a9;" d="M409.6 102.4c0 21.072 6.403 40.674 17.358 56.973-39.88 14.008-68.558 52.021-68.558 96.627 0 21.072 6.403 40.674 17.358 56.973-39.88 14.008-68.558 52.021-68.558 96.627 0 18.645 5.034 36.125 13.776 51.2h-167.376c-56.464 0-102.4 45.936-102.4 102.4s45.936 102.4 102.4 102.4h377.52l-119.446 68.909c-24.326 13.366-41.645 35.163-48.782 61.405-6.949 25.56-3.272 52.146 10.357 74.858 27.877 46.461 90.819 64.138 140.37 39.442 3.101-1.514 70.024-34.213 273.938-136.17 96.021-48.010 164.653-100.704 203.994-156.619 30.886-43.896 32.451-74.195 32.451-79.824v-256c0-43.41-12.566-83.571-37.352-119.371-23.957-34.603-58.984-64.469-104.11-88.768-89.251-48.059-217.381-73.461-370.538-73.461-56.464 0-102.4 45.936-102.4 102.4zM858.262 118.541c52.251 28.134 114.538 79.262 114.538 163.059v255.49c-0.173 2.016-2.565 23.546-26.894 56.067-24.246 32.41-75.373 82.155-181.246 135.091-207.579 103.789-272.947 135.685-273.584 135.995-0.077 0.037-0.154 0.075-0.23 0.114-25.742 12.87-59.49 3.744-73.694-19.928-6.387-10.645-8.11-23.102-4.853-35.080 3.47-12.766 12.059-23.438 24.182-30.051 0.179-0.098 0.357-0.198 0.534-0.301l138.498-79.899c29.842-16.349 42.405-34.723 37.328-54.622-5.088-19.955-25.019-30.075-59.24-30.075h-400c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h332.8c14.138 0 25.6-11.462 25.6-25.6s-11.462-25.6-25.6-25.6h-76.8c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h76.8c14.138 0 25.6-11.461 25.6-25.6s-11.462-25.6-25.6-25.6h-25.6c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2h76.8c14.139 0 25.6-11.461 25.6-25.6s-11.461-25.6-25.6-25.6h-25.6c-28.232 0-51.2-22.968-51.2-51.2s22.968-51.2 51.2-51.2c144.712 0 264.448 23.286 346.262 67.341z" data-tags="pointer-left, hand, index, finger" />
</font></defs></svg>

BIN
src/main/resources/static/files/assets/fonts/Linearicons-Free.ttf

BIN
src/main/resources/static/files/assets/fonts/Linearicons-Free.woff

BIN
src/main/resources/static/files/assets/fonts/Linearicons-Free.woff2

BIN
src/main/resources/static/files/assets/fonts/fontawesome-webfont-1.hxd

BIN
src/main/resources/static/files/assets/fonts/fontawesome-webfont.hxd

2671
src/main/resources/static/files/assets/fonts/fontawesome-webfont.svg
File diff suppressed because it is too large
View File

BIN
src/main/resources/static/files/assets/fonts/fontawesome-webfont.ttf

BIN
src/main/resources/static/files/assets/fonts/fontawesome-webfont.woff

BIN
src/main/resources/static/files/assets/fonts/fontawesome-webfont.woff2

2945
src/main/resources/static/files/assets/icon/SVG-animated/svg-weather.css
File diff suppressed because it is too large
View File

508
src/main/resources/static/files/assets/icon/feather/css/feather.css

@ -0,0 +1,508 @@

@font-face {
font-family: "feather";
src: url('../fonts/feather.hxd'); /* IE9*/
src: url('../fonts/feather.hxd') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/feather.woff') format('woff'), /* chrome, firefox */
url('../fonts/feather.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('../fonts/feather.svg') format('svg'); /* iOS 4.1- */
}
.feather {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'feather' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-alert-octagon:before { content: "\e81b"; }
.icon-alert-circle:before { content: "\e81c"; }
.icon-activity:before { content: "\e81d"; }
.icon-alert-triangle:before { content: "\e81e"; }
.icon-align-center:before { content: "\e81f"; }
.icon-airplay:before { content: "\e820"; }
.icon-align-justify:before { content: "\e821"; }
.icon-align-left:before { content: "\e822"; }
.icon-align-right:before { content: "\e823"; }
.icon-arrow-down-left:before { content: "\e824"; }
.icon-arrow-down-right:before { content: "\e825"; }
.icon-anchor:before { content: "\e826"; }
.icon-aperture:before { content: "\e827"; }
.icon-arrow-left:before { content: "\e828"; }
.icon-arrow-right:before { content: "\e829"; }
.icon-arrow-down:before { content: "\e82a"; }
.icon-arrow-up-left:before { content: "\e82b"; }
.icon-arrow-up-right:before { content: "\e82c"; }
.icon-arrow-up:before { content: "\e82d"; }
.icon-award:before { content: "\e82e"; }
.icon-bar-chart:before { content: "\e82f"; }
.icon-at-sign:before { content: "\e830"; }
.icon-bar-chart-2:before { content: "\e831"; }
.icon-battery-charging:before { content: "\e832"; }
.icon-bell-off:before { content: "\e833"; }
.icon-battery:before { content: "\e834"; }
.icon-bluetooth:before { content: "\e835"; }
.icon-bell:before { content: "\e836"; }
.icon-book:before { content: "\e837"; }
.icon-briefcase:before { content: "\e838"; }
.icon-camera-off:before { content: "\e839"; }
.icon-calendar:before { content: "\e83a"; }
.icon-bookmark:before { content: "\e83b"; }
.icon-box:before { content: "\e83c"; }
.icon-camera:before { content: "\e83d"; }
.icon-check-circle:before { content: "\e83e"; }
.icon-check:before { content: "\e83f"; }
.icon-check-square:before { content: "\e840"; }
.icon-cast:before { content: "\e841"; }
.icon-chevron-down:before { content: "\e842"; }
.icon-chevron-left:before { content: "\e843"; }
.icon-chevron-right:before { content: "\e844"; }
.icon-chevron-up:before { content: "\e845"; }
.icon-chevrons-down:before { content: "\e846"; }
.icon-chevrons-right:before { content: "\e847"; }
.icon-chevrons-up:before { content: "\e848"; }
.icon-chevrons-left:before { content: "\e849"; }
.icon-circle:before { content: "\e84a"; }
.icon-clipboard:before { content: "\e84b"; }
.icon-chrome:before { content: "\e84c"; }
.icon-clock:before { content: "\e84d"; }
.icon-cloud-lightning:before { content: "\e84e"; }
.icon-cloud-drizzle:before { content: "\e84f"; }
.icon-cloud-rain:before { content: "\e850"; }
.icon-cloud-off:before { content: "\e851"; }
.icon-codepen:before { content: "\e852"; }
.icon-cloud-snow:before { content: "\e853"; }
.icon-compass:before { content: "\e854"; }
.icon-copy:before { content: "\e855"; }
.icon-corner-down-right:before { content: "\e856"; }
.icon-corner-down-left:before { content: "\e857"; }
.icon-corner-left-down:before { content: "\e858"; }
.icon-corner-left-up:before { content: "\e859"; }
.icon-corner-up-left:before { content: "\e85a"; }
.icon-corner-up-right:before { content: "\e85b"; }
.icon-corner-right-down:before { content: "\e85c"; }
.icon-corner-right-up:before { content: "\e85d"; }
.icon-cpu:before { content: "\e85e"; }
.icon-credit-card:before { content: "\e85f"; }
.icon-crosshair:before { content: "\e860"; }
.icon-disc:before { content: "\e861"; }
.icon-delete:before { content: "\e862"; }
.icon-download-cloud:before { content: "\e863"; }
.icon-download:before { content: "\e864"; }
.icon-droplet:before { content: "\e865"; }
.icon-edit-2:before { content: "\e866"; }
.icon-edit:before { content: "\e867"; }
.icon-edit-1:before { content: "\e868"; }
.icon-external-link:before { content: "\e869"; }
.icon-eye:before { content: "\e86a"; }
.icon-feather:before { content: "\e86b"; }
.icon-facebook:before { content: "\e86c"; }
.icon-file-minus:before { content: "\e86d"; }
.icon-eye-off:before { content: "\e86e"; }
.icon-fast-forward:before { content: "\e86f"; }
.icon-file-text:before { content: "\e870"; }
.icon-film:before { content: "\e871"; }
.icon-file:before { content: "\e872"; }
.icon-file-plus:before { content: "\e873"; }
.icon-folder:before { content: "\e874"; }
.icon-filter:before { content: "\e875"; }
.icon-flag:before { content: "\e876"; }
.icon-globe:before { content: "\e877"; }
.icon-grid:before { content: "\e878"; }
.icon-heart:before { content: "\e879"; }
.icon-home:before { content: "\e87a"; }
.icon-github:before { content: "\e87b"; }
.icon-image:before { content: "\e87c"; }
.icon-inbox:before { content: "\e87d"; }
.icon-layers:before { content: "\e87e"; }
.icon-info:before { content: "\e87f"; }
.icon-instagram:before { content: "\e880"; }
.icon-layout:before { content: "\e881"; }
.icon-link-2:before { content: "\e882"; }
.icon-life-buoy:before { content: "\e883"; }
.icon-link:before { content: "\e884"; }
.icon-log-in:before { content: "\e885"; }
.icon-list:before { content: "\e886"; }
.icon-lock:before { content: "\e887"; }
.icon-log-out:before { content: "\e888"; }
.icon-loader:before { content: "\e889"; }
.icon-mail:before { content: "\e88a"; }
.icon-maximize-2:before { content: "\e88b"; }
.icon-map:before { content: "\e88c"; }
.icon-map-pin:before { content: "\e88e"; }
.icon-menu:before { content: "\e88f"; }
.icon-message-circle:before { content: "\e890"; }
.icon-message-square:before { content: "\e891"; }
.icon-minimize-2:before { content: "\e892"; }
.icon-mic-off:before { content: "\e893"; }
.icon-minus-circle:before { content: "\e894"; }
.icon-mic:before { content: "\e895"; }
.icon-minus-square:before { content: "\e896"; }
.icon-minus:before { content: "\e897"; }
.icon-moon:before { content: "\e898"; }
.icon-monitor:before { content: "\e899"; }
.icon-more-vertical:before { content: "\e89a"; }
.icon-more-horizontal:before { content: "\e89b"; }
.icon-move:before { content: "\e89c"; }
.icon-music:before { content: "\e89d"; }
.icon-navigation-2:before { content: "\e89e"; }
.icon-navigation:before { content: "\e89f"; }
.icon-octagon:before { content: "\e8a0"; }
.icon-package:before { content: "\e8a1"; }
.icon-pause-circle:before { content: "\e8a2"; }
.icon-pause:before { content: "\e8a3"; }
.icon-percent:before { content: "\e8a4"; }
.icon-phone-call:before { content: "\e8a5"; }
.icon-phone-forwarded:before { content: "\e8a6"; }
.icon-phone-missed:before { content: "\e8a7"; }
.icon-phone-off:before { content: "\e8a8"; }
.icon-phone-incoming:before { content: "\e8a9"; }
.icon-phone:before { content: "\e8aa"; }
.icon-phone-outgoing:before { content: "\e8ab"; }
.icon-pie-chart:before { content: "\e8ac"; }
.icon-play-circle:before { content: "\e8ad"; }
.icon-play:before { content: "\e8ae"; }
.icon-plus-square:before { content: "\e8af"; }
.icon-plus-circle:before { content: "\e8b0"; }
.icon-plus:before { content: "\e8b1"; }
.icon-pocket:before { content: "\e8b2"; }
.icon-printer:before { content: "\e8b3"; }
.icon-power:before { content: "\e8b4"; }
.icon-radio:before { content: "\e8b5"; }
.icon-repeat:before { content: "\e8b6"; }
.icon-refresh-ccw:before { content: "\e8b7"; }
.icon-rewind:before { content: "\e8b8"; }
.icon-rotate-ccw:before { content: "\e8b9"; }
.icon-refresh-cw:before { content: "\e8ba"; }
.icon-rotate-cw:before { content: "\e8bb"; }
.icon-save:before { content: "\e8bc"; }
.icon-search:before { content: "\e8bd"; }
.icon-server:before { content: "\e8be"; }
.icon-scissors:before { content: "\e8bf"; }
.icon-share-2:before { content: "\e8c0"; }
.icon-share:before { content: "\e8c1"; }
.icon-shield:before { content: "\e8c2"; }
.icon-settings:before { content: "\e8c3"; }
.icon-skip-back:before { content: "\e8c4"; }
.icon-shuffle:before { content: "\e8c5"; }
.icon-sidebar:before { content: "\e8c6"; }
.icon-skip-forward:before { content: "\e8c7"; }
.icon-slack:before { content: "\e8c8"; }
.icon-slash:before { content: "\e8c9"; }
.icon-smartphone:before { content: "\e8ca"; }
.icon-square:before { content: "\e8cb"; }
.icon-speaker:before { content: "\e8cc"; }
.icon-star:before { content: "\e8cd"; }
.icon-stop-circle:before { content: "\e8ce"; }
.icon-sun:before { content: "\e8cf"; }
.icon-sunrise:before { content: "\e8d0"; }
.icon-tablet:before { content: "\e8d1"; }
.icon-tag:before { content: "\e8d2"; }
.icon-sunset:before { content: "\e8d3"; }
.icon-target:before { content: "\e8d4"; }
.icon-thermometer:before { content: "\e8d5"; }
.icon-thumbs-up:before { content: "\e8d6"; }
.icon-thumbs-down:before { content: "\e8d7"; }
.icon-toggle-left:before { content: "\e8d8"; }
.icon-toggle-right:before { content: "\e8d9"; }
.icon-trash-2:before { content: "\e8da"; }
.icon-trash:before { content: "\e8db"; }
.icon-trending-up:before { content: "\e8dc"; }
.icon-trending-down:before { content: "\e8dd"; }
.icon-triangle:before { content: "\e8de"; }
.icon-type:before { content: "\e8df"; }
.icon-twitter:before { content: "\e8e0"; }
.icon-upload:before { content: "\e8e1"; }
.icon-umbrella:before { content: "\e8e2"; }
.icon-upload-cloud:before { content: "\e8e3"; }
.icon-unlock:before { content: "\e8e4"; }
.icon-user-check:before { content: "\e8e5"; }
.icon-user-minus:before { content: "\e8e6"; }
.icon-user-plus:before { content: "\e8e7"; }
.icon-user-x:before { content: "\e8e8"; }
.icon-user:before { content: "\e8e9"; }
.icon-users:before { content: "\e8ea"; }
.icon-video-off:before { content: "\e8eb"; }
.icon-video:before { content: "\e8ec"; }
.icon-voicemail:before { content: "\e8ed"; }
.icon-volume-x:before { content: "\e8ee"; }
.icon-volume-2:before { content: "\e8ef"; }
.icon-volume-1:before { content: "\e8f0"; }
.icon-volume:before { content: "\e8f1"; }
.icon-watch:before { content: "\e8f2"; }
.icon-wifi:before { content: "\e8f3"; }
.icon-x-square:before { content: "\e8f4"; }
.icon-wind:before { content: "\e8f5"; }
.icon-x:before { content: "\e8f6"; }
.icon-x-circle:before { content: "\e8f7"; }
.icon-zap:before { content: "\e8f8"; }
.icon-zoom-in:before { content: "\e8f9"; }
.icon-zoom-out:before { content: "\e8fa"; }
.icon-command:before { content: "\e8fb"; }
.icon-cloud:before { content: "\e8fc"; }
.icon-hash:before { content: "\e8fd"; }
.icon-headphones:before { content: "\e8fe"; }
.icon-underline:before { content: "\e8ff"; }
.icon-italic:before { content: "\e900"; }
.icon-bold:before { content: "\e901"; }
.icon-crop:before { content: "\e902"; }
.icon-help-circle:before { content: "\e903"; }
.icon-paperclip:before { content: "\e904"; }
.icon-shopping-cart:before { content: "\e905"; }
.icon-tv:before { content: "\e906"; }
.icon-wifi-off:before { content: "\e907"; }
.icon-minimize:before { content: "\e88d"; }
.icon-maximize:before { content: "\e908"; }
.icon-gitlab:before { content: "\e909"; }
.icon-sliders:before { content: "\e90a"; }
.icon-star-on:before { content: "\e90b"; }
.icon-heart-on:before { content: "\e90c"; }

BIN
src/main/resources/static/files/assets/icon/feather/fonts/feather.hxd

759
src/main/resources/static/files/assets/icon/feather/fonts/feather.svg

@ -0,0 +1,759 @@
<?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" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="feather" horiz-adv-x="1024" >
<font-face
font-family="feather"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="alert-octagon" unicode="&#59419;" d="M128 542.976v-317.952L353.024 0h317.952L896 225.024V542.976L670.976 768H353.024L128 542.976zM335.36 853.333333h353.28a42.666667 42.666667 0 0 0 30.165333-12.501333l250.026667-250.026667A42.666667 42.666667 0 0 0 981.333333 560.64v-353.28a42.666667 42.666667 0 0 0-12.501333-30.165333l-250.026667-250.026667a42.666667 42.666667 0 0 0-30.165333-12.501333H335.36a42.666667 42.666667 0 0 0-30.165333 12.501333l-250.026667 250.026667A42.666667 42.666667 0 0 0 42.666667 207.36V560.64a42.666667 42.666667 0 0 0 12.501333 30.165333l250.026667 250.026667A42.666667 42.666667 0 0 0 335.36 853.333333zM512 213.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM469.333333 554.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="alert-circle" unicode="&#59420;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 554.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM512 213.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="activity" unicode="&#59421;" d="M424.490667 781.482667c-12.970667 38.912-68.010667 38.912-80.981334 0L225.28 426.666667H85.333333a42.666667 42.666667 0 0 1 0-85.333334h170.666667a42.666667 42.666667 0 0 1 40.490667 29.184L384 633.088l215.509333-646.570667c12.970667-38.912 68.010667-38.912 80.981334 0L798.72 341.333333H938.666667a42.666667 42.666667 0 0 1 0 85.333334h-170.666667a42.666667 42.666667 0 0 1-40.490667-29.184L640 134.912 424.490667 781.482667z" horiz-adv-x="1024" />
<glyph glyph-name="alert-triangle" unicode="&#59422;" d="M402.432 753.237333a128.085333 128.085333 0 0 0 219.136 0L983.296 149.333333A128 128 0 0 0 873.386667-42.666667H150.144a128 128 0 0 0-109.098667 192.597334l361.386667 603.306666zM114.602667 106.666667A42.666667 42.666667 0 0 1 150.613333 42.666667h722.304a42.666667 42.666667 0 0 1 36.821334 63.402666L548.48 709.162667a42.666667 42.666667 0 0 1-72.917333 0.085333L114.602667 106.666667zM512 170.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM469.333333 512v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V512a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="align-center" unicode="&#59423;" d="M768 512H256a42.666667 42.666667 0 1 1 0-85.333333h512a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM768 170.666667H256a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="airplay" unicode="&#59424;" d="M213.333333 213.333333H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V682.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h682.666666a42.666667 42.666667 0 0 0 42.666667-42.666666v-426.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-42.666666a42.666667 42.666667 0 0 1 0-85.333333h42.666666a128 128 0 0 1 128 128V682.666667a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-426.666667a128 128 0 0 1 128-128h42.666666a42.666667 42.666667 0 0 1 0 85.333333zM512 189.354667L389.76 42.666667h244.48L512 189.354667zM725.333333-42.666667H298.666667a42.666667 42.666667 0 0 0-32.768 69.973334l213.333333 256a42.666667 42.666667 0 0 0 65.536 0l213.333333-256A42.666667 42.666667 0 0 0 725.333333-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="align-justify" unicode="&#59425;" d="M896 512H128a42.666667 42.666667 0 1 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 170.666667H128a42.666667 42.666667 0 0 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="align-left" unicode="&#59426;" d="M725.333333 512H128a42.666667 42.666667 0 1 1 0-85.333333h597.333333a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM725.333333 170.666667H128a42.666667 42.666667 0 0 1 0-85.333334h597.333333a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="align-right" unicode="&#59427;" d="M896 512H298.666667a42.666667 42.666667 0 1 1 0-85.333333h597.333333a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 170.666667H298.666667a42.666667 42.666667 0 0 1 0-85.333334h597.333333a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-down-left" unicode="&#59428;" d="M737.834667 670.165333l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666zM298.666667 512a42.666667 42.666667 0 1 1-85.333334 0v-384a42.666667 42.666667 0 0 1 42.666667-42.666667h384a42.666667 42.666667 0 0 1 0 85.333334H298.666667V512z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-down-right" unicode="&#59429;" d="M225.834667 609.834667l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666zM384 170.666667a42.666667 42.666667 0 0 1 0-85.333334h384a42.666667 42.666667 0 0 1 42.666667 42.666667V512a42.666667 42.666667 0 0 1-85.333334 0v-341.333333H384z" horiz-adv-x="1024" />
<glyph glyph-name="anchor" unicode="&#59430;" d="M554.666667 2.346667000000025A384.170667 384.170667 0 0 1 893.653333 341.33333300000004H810.666667a42.666667 42.666667 0 0 0 0 85.333334h128a42.666667 42.666667 0 0 0 42.666666-42.666667c0-259.2-210.133333-469.333333-469.333333-469.333333S42.666667 124.79999999999995 42.666667 384a42.666667 42.666667 0 0 0 42.666666 42.666667h128a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.346667000000025V554.666667a42.666667 42.666667 0 0 0 85.333334 0v-552.32zM512 512a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="aperture" unicode="&#59431;" d="M456.533333-82.09066700000005a469.76 469.76 0 0 0-375.893333 280.917334A467.797333 467.797333 0 0 0 42.666667 384c0 102.954667 33.152 198.186667 89.386666 275.584a42.410667 42.410667 0 0 0 4.650667 6.272 468.608 468.608 0 0 0 424.917333 184.874667 469.76 469.76 0 0 0 381.781334-281.6C967.808 512.426667 981.333333 449.792 981.333333 384a467.2 467.2 0 0 0-89.386666-275.584 42.410667 42.410667 0 0 0-4.650667-6.272 468.608 468.608 0 0 0-424.917333-184.874667 42.410667 42.410667 0 0 0-5.802667 0.64z m-14.72 88.490667L536.661333 170.66666699999996H192.682667a384.213333 384.213333 0 0 1 249.130666-164.266667z m95.317334-5.589333a383.146667 383.146667 0 0 1 266.794666 133.717333L709.12 298.66666699999996 647.68 192.42666699999995a42.666667 42.666667 0 0 0-0.426667-0.725334L537.173333 0.8533330000000205z m122.709333 383.146666L585.941333 512h-147.882666l-73.898667-128 73.898667-128h147.882666l73.898667 128z m86.698667 20.522667l109.952-190.336c25.301333 51.2 39.509333 108.885333 39.509333 169.856 0 44.885333-7.68 87.978667-21.845333 128h-189.696l61.056-105.728a42.624 42.624 0 0 0 1.024-1.792zM149.845333 256h189.696l-61.056 105.728a42.624 42.624 0 0 0-1.024 1.792L167.509333 553.856A382.421333 382.421333 0 0 1 128 384c0-44.885333 7.68-87.978667 21.845333-128z m70.229334 377.472L314.88 469.333333 376.32 575.573333a42.666667 42.666667 0 0 0 0.426667 0.725334L486.826667 767.146667a383.146667 383.146667 0 0 1-266.794667-133.717334z m362.112 128.128L487.338667 597.333333H831.317333a384.213333 384.213333 0 0 1-249.130666 164.266667z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-left" unicode="&#59432;" d="M853.333333 426.666667H170.666667a42.666667 42.666667 0 0 1 0-85.333334h682.666666a42.666667 42.666667 0 0 1 0 85.333334zM456.832 609.834667a42.666667 42.666667 0 1 1-60.330667 60.330666l-256-256a42.666667 42.666667 0 0 1 0-60.330666l256-256a42.666667 42.666667 0 1 1 60.330667 60.330666L230.997333 384l225.834667 225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-right" unicode="&#59433;" d="M170.666667 341.333333h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 0 1 0-85.333334zM567.168 158.165333a42.666667 42.666667 0 0 1 60.330667-60.330666l256 256a42.666667 42.666667 0 0 1 0 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330667-60.330666L793.002667 384l-225.834667-225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-down" unicode="&#59434;" d="M469.333333 725.333333v-682.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a42.666667 42.666667 0 0 1-85.333334 0zM286.165333 328.832a42.666667 42.666667 0 1 1-60.330666-60.330667l256-256a42.666667 42.666667 0 0 1 60.330666 0l256 256a42.666667 42.666667 0 0 1-60.330666 60.330667L512 102.997333l-225.834667 225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-up-left" unicode="&#59435;" d="M798.165333 158.165333l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666zM640 597.333333a42.666667 42.666667 0 0 1 0 85.333334H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-384a42.666667 42.666667 0 0 1 85.333334 0V597.333333h341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-up-right" unicode="&#59436;" d="M286.165333 97.83466699999997l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666zM725.333333 256a42.666667 42.666667 0 0 1 85.333334 0V640a42.666667 42.666667 0 0 1-42.666667 42.666667H384a42.666667 42.666667 0 1 1 0-85.333334h341.333333v-341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-up" unicode="&#59437;" d="M554.666667 42.666667V725.333333a42.666667 42.666667 0 0 1-85.333334 0v-682.666666a42.666667 42.666667 0 0 1 85.333334 0zM737.834667 439.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-256 256a42.666667 42.666667 0 0 1-60.330666 0l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330667L512 665.002667l225.834667-225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="award" unicode="&#59438;" d="M304.646221 283.538374a341.323094 341.323094 0 1 0 414.792889 0l48.211887-363.210437a42.665387 42.665387 0 0 0-64.254072-42.238733L512-7.0129100000000335l-191.396925-114.812555a42.665387 42.665387 0 0 0-64.211407 42.196067l48.211887 363.210437z m79.9976-45.651964l-31.99904-241.059435 137.382545 82.429527a42.665387 42.665387 0 0 0 43.945348 0l137.382545-82.429527-31.956374 241.059435A340.384455 340.384455 0 0 0 512 213.35381299999995a340.384455 340.384455 0 0 0-127.356179 24.532597zM512 298.68458599999997a255.99232 255.99232 0 1 1 0 511.984641 255.99232 255.99232 0 0 1 0-511.984641z" horiz-adv-x="1024" />
<glyph glyph-name="bar-chart" unicode="&#59439;" d="M810.666667 725.333333v-682.666666h85.333333V725.333333h-85.333333z m-42.666667 85.333334h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-768a42.666667 42.666667 0 0 0-42.666666-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM469.333333 512v-469.333333h85.333334V512h-85.333334z m-42.666666 85.333333h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666666v-554.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM128 42.666667h85.333333v256H128v-256z m-42.666667 341.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v341.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="at-sign" unicode="&#59440;" d="M725.333333 384v-42.666667a85.333333 85.333333 0 1 1 170.666667 0v42.666667a384 384 0 1 1-150.528-304.896 42.666667 42.666667 0 1 0 51.882667-67.754667A469.333333 469.333333 0 1 0 981.333333 384v-42.666667a170.666667 170.666667 0 0 0-309.76-98.901333A213.333333 213.333333 0 1 0 725.333333 384z m-213.333333-128a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
<glyph glyph-name="bar-chart-" unicode="&#59441;" d="M469.333333 725.333333v-682.666666h85.333334V725.333333h-85.333334z m-42.666666 85.333334h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-768a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM810.666667 512v-469.333333h85.333333V512h-85.333333z m-42.666667 85.333333h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666666v-554.666667a42.666667 42.666667 0 0 0-42.666666-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM128 42.666667h85.333333v256H128v-256z m-42.666667 341.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v341.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="battery-charging" unicode="&#59442;" d="M213.333333 170.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666666V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h136.106667a42.666667 42.666667 0 1 1 0 85.333334H128a128 128 0 0 1-128-128v-341.333334a128 128 0 0 1 128-128h85.333333a42.666667 42.666667 0 0 1 0 85.333334zM640 597.333333h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-341.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-136.106666a42.666667 42.666667 0 0 1 0-85.333334H725.333333a128 128 0 0 1 128 128V554.666667a128 128 0 0 1-128 128h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM1024 341.333333v85.333334a42.666667 42.666667 0 0 1-85.333333 0v-85.333334a42.666667 42.666667 0 0 1 85.333333 0zM348.501333 151.68a42.666667 42.666667 0 0 1 70.997334-47.36l170.666666 256A42.666667 42.666667 0 0 1 554.666667 426.666667H378.410667l126.421333 189.653333a42.666667 42.666667 0 1 1-70.997333 47.36l-170.666667-256A42.666667 42.666667 0 0 1 298.666667 341.333333h176.256l-126.421334-189.653333z" horiz-adv-x="1024" />
<glyph glyph-name="bell-off" unicode="&#59443;" d="M386.503252 734.704171A255.868761 255.868761 0 0 0 768.131509 511.671902v-170.579174a42.644793 42.644793 0 0 1 85.289586 0V511.671902A341.158348 341.158348 0 0 1 344.626065 808.906112a42.644793 42.644793 0 1 1 41.877187-74.201941zM256.393987 298.447934V511.671902a255.911405 255.911405 0 0 0 28.529367 117.742274A42.644793 42.644793 0 1 1 209.058267 668.604741 341.158348 341.158348 0 0 1 171.1044 511.629257V298.447934a85.289587 85.289587 0 0 0-85.289586-85.289586c-56.84551 0-56.84551-85.289587 0-85.289587h639.671901a42.644793 42.644793 0 0 1 0 85.289587H233.579023c14.49923 25.075139 22.814964 54.201532 22.814964 85.289586z m292.756507-277.105867a42.644793 42.644793 0 0 0-73.775492 0 42.644793 42.644793 0 0 1-73.775493-42.815373 127.93438 127.93438 0 0 1 221.326478 0 42.644793 42.644793 0 0 1-73.775493 42.815373zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
<glyph glyph-name="battery" unicode="&#59444;" d="M85.334187 554.282667v-340.565334c0-23.765333 19.114667-43.050667 42.453333-43.050666h597.76c23.381333 0 42.453333 19.2 42.453333 43.050666V554.24C768.000853 578.048 748.886187 597.333333 725.54752 597.333333H127.78752C104.406187 597.333333 85.334187 578.133333 85.334187 554.282667z m-85.333334 0A128.042667 128.042667 0 0 0 127.78752 682.666667h597.76A128.170667 128.170667 0 0 0 853.334187 554.282667v-340.565334A128.042667 128.042667 0 0 0 725.54752 85.333333H127.78752A128.170667 128.170667 0 0 0 0.000853 213.717333V554.24zM1024.000853 341.333333v85.333334a42.666667 42.666667 0 0 1-85.333333 0v-85.333334a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="bluetooth" unicode="&#59445;" d="M554.660072 17.7251l131.648983 131.648983L554.660072 281.023065v-263.297965zM686.309055 618.634876L554.660072 750.283859v-263.297966L686.309055 618.634876z m-439.100123-30.160671a42.660072 42.660072 0 0 0 60.321342 60.321342l469.260794-469.260793a42.660072 42.660072 0 0 0 0-60.321342l-234.630397-234.630397c-26.875845-26.875845-72.820743-7.849453-72.820743 30.160671V853.265273c0 37.967464 45.944898 57.036516 72.820743 30.160671l234.630397-234.630397a42.660072 42.660072 0 0 0 0-60.321342l-469.260794-469.260793a42.660072 42.660072 0 1 0-60.321342 60.321342L554.660072 486.985893v-205.962828L247.208932 588.474205z" horiz-adv-x="1024" />
<glyph glyph-name="bell" unicode="&#59446;" d="M768 298.66666699999996V512A256 256 0 0 1 256 512v-213.333333c0-31.104-8.32-60.245333-22.826667-85.333334h557.653334A169.898667 169.898667 0 0 0 768 298.66666699999996z m170.666667-170.666667H85.333333c-56.874667 0-56.874667 85.333333 0 85.333333a85.333333 85.333333 0 0 1 85.333334 85.333334V512a341.333333 341.333333 0 0 0 682.666666 0v-213.333333a85.333333 85.333333 0 0 1 85.333334-85.333334c56.874667 0 56.874667-85.333333 0-85.333333zM548.906667 21.418667000000028a42.666667 42.666667 0 0 0-73.813334 0 42.666667 42.666667 0 0 1-73.813333-42.837334 128 128 0 0 1 221.44 0 42.666667 42.666667 0 0 1-73.813333 42.837334z" horiz-adv-x="1024" />
<glyph glyph-name="book" unicode="&#59447;" d="M853.333333 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-853.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H277.333333A149.333333 149.333333 0 0 0 128 64v640A149.333333 149.333333 0 0 0 277.333333 853.333333H853.333333z m-42.666666-640V768H277.333333A64 64 0 0 1 213.333333 704v-505.045333A148.736 148.736 0 0 0 277.333333 213.33333300000004H810.666667z m0-85.333333H277.333333a64 64 0 0 1 0-128H810.666667v128z" horiz-adv-x="1024" />
<glyph glyph-name="briefcase" unicode="&#59448;" d="M298.666667 640V682.666667a128 128 0 0 0 128 128h170.666666a128 128 0 0 0 128-128v-42.666667h128.426667A127.914667 127.914667 0 0 0 981.333333 511.744v-426.154667A128.128 128.128 0 0 0 853.76-42.66666699999996H170.24A127.914667 127.914667 0 0 0 42.666667 85.58933300000001V511.744A128.128 128.128 0 0 0 170.24 640H298.666667z m0-85.333333H170.24C147.2 554.666667 128 535.381333 128 511.744v-426.154667A42.581333 42.581333 0 0 1 170.24 42.66666699999996H298.666667V554.666667z m85.333333 0v-512h256V554.666667H384z m341.333333 0v-512h128.426667c23.04 0 42.24 19.285333 42.24 42.922666V511.744A42.581333 42.581333 0 0 1 853.76 554.666667H725.333333zM384 640h256V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-170.666666a42.666667 42.666667 0 0 1-42.666667-42.666666v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="camera-off" unicode="&#59449;" d="M682.884567 273.415441l328.620778-328.620779a42.644793 42.644793 0 0 0-60.299738-60.299738L878.410944-42.71041300000002H128.459607a127.93438 127.93438 0 0 0-127.93438 127.93438V554.316695a127.93438 127.93438 0 0 0 127.93438 127.93438h24.989849L13.020151 822.68038A42.644793 42.644793 0 1 0 73.319889 882.980118l371.265572-371.265572 1.151409-1.108764 236.038932-236.038932 1.108765-1.151409z m-28.870526-91.686306a213.223967 213.223967 0 0 0-301.157531 301.072241L238.739043 596.961489H128.459607a42.644793 42.644793 0 0 1-42.644793-42.644794v-469.092728a42.644793 42.644793 0 0 1 42.644793-42.644793h664.661751l-139.107317 139.107316z m-60.470317 60.427672L413.326827 422.373704a127.93438 127.93438 0 0 1 180.216897-180.216897z m96.462523 373.781615A42.644793 42.644793 0 0 1 725.486715 596.961489h170.579174a42.644793 42.644793 0 0 0 42.644793-42.644794v-398.302371a42.644793 42.644793 0 0 1 85.289587 0V554.316695a127.93438 127.93438 0 0 1-127.93438 127.93438h-147.764209l-72.624084 108.957448A42.644793 42.644793 0 0 1 640.197128 810.185456H384.328368a42.644793 42.644793 0 1 1 0-85.289587h233.053796l72.624083-108.957447z" horiz-adv-x="1024" />
<glyph glyph-name="calendar" unicode="&#59450;" d="M384 768h256V810.666667a42.666667 42.666667 0 0 0 85.333333 0v-42.666667h85.546667A127.786667 127.786667 0 0 0 938.666667 640.213333v-597.76A127.786667 127.786667 0 0 0 810.88-85.33333300000004H213.12A127.786667 127.786667 0 0 0 85.333333 42.45333300000004V640.213333A127.786667 127.786667 0 0 0 213.12 768H298.666667V810.666667a42.666667 42.666667 0 1 0 85.333333 0v-42.666667z m469.333333-341.333333H170.666667v-384.213334c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V426.666667zM384 682.666667v-42.666667a42.666667 42.666667 0 1 0-85.333333 0V682.666667H213.12A42.453333 42.453333 0 0 1 170.666667 640.213333V512h682.666666V640.213333A42.453333 42.453333 0 0 1 810.88 682.666667H725.333333v-42.666667a42.666667 42.666667 0 0 0-85.333333 0V682.666667H384z" horiz-adv-x="1024" />
<glyph glyph-name="bookmark" unicode="&#59451;" d="M768 82.901333V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666H298.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-599.765334l231.210667 165.12a42.666667 42.666667 0 0 0 49.578666 0L768 82.944zM238.122667-34.730667A42.666667 42.666667 0 0 0 170.666667 0V682.666667a128 128 0 0 0 128 128h426.666666a128 128 0 0 0 128-128v-682.666667a42.666667 42.666667 0 0 0-67.456-34.730667L512 160.896l-273.877333-195.626667z" horiz-adv-x="1024" />
<glyph glyph-name="box" unicode="&#59452;" d="M568.96 872.362667l341.333333-170.666667A128 128 0 0 0 981.333333 587.093333v-406.613333a128 128 0 0 0-70.954666-114.517333l-341.333334-170.666667a128 128 0 0 0-114.517333 0L113.066667 66.00533299999995A127.872 127.872 0 0 0 42.666667 180.90666699999997V587.093333a128 128 0 0 0 70.954666 114.517334L455.04 872.362667a128 128 0 0 0 113.92 0zM512 474.368l331.050667 165.546667-312.106667 156.032a42.624 42.624 0 0 1-37.845333 0L180.949333 639.9573330000001 512 474.368z m384 96.597333l-341.333333-170.666666v-416.810667l317.653333 158.848A42.666667 42.666667 0 0 1 896 180.48000000000002V570.965333zM469.333333-16.725332999999978v417.024l-341.333333 170.666666v-390.357333c-0.128-16.213333 8.96-31.104 23.338667-38.357333L469.333333-16.725332999999978z" horiz-adv-x="1024" />
<glyph glyph-name="camera" unicode="&#59453;" d="M334.165333 616.32A42.666667 42.666667 0 0 0 298.666667 597.333333H128a42.666667 42.666667 0 0 1-42.666667-42.666666v-469.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h768a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-170.666667a42.666667 42.666667 0 0 0-35.498666 18.986667L617.173333 725.333333h-210.346666L334.165333 616.32zM896 682.666667a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H128a128 128 0 0 0-128 128V554.666667a128 128 0 0 0 128 128h147.84l72.661333 109.013333A42.666667 42.666667 0 0 0 384 810.666667h256a42.666667 42.666667 0 0 0 35.498667-18.986667L748.16 682.666667H896zM512 128a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
<glyph glyph-name="check-circle" unicode="&#59454;" d="M896 423.68V384a384 384 0 1 0-227.712 351.018667 42.666667 42.666667 0 1 1 34.730667 77.909333A469.333333 469.333333 0 1 1 981.333333 384v39.722667a42.666667 42.666667 0 0 1-85.333333 0zM414.165333 456.832a42.666667 42.666667 0 0 1-60.330666-60.330667l128-128a42.666667 42.666667 0 0 1 60.330666 0l469.333334 469.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L512 358.997333l-97.834667 97.834667z" horiz-adv-x="1024" />
<glyph glyph-name="check" unicode="&#59455;" d="M200.832 371.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l213.333334-213.333333a42.666667 42.666667 0 0 1 60.330666 0l469.333334 469.333333a42.666667 42.666667 0 1 1-60.330667 60.330667L384 188.330667l-183.168 183.168z" horiz-adv-x="1024" />
<glyph glyph-name="check-square" unicode="&#59456;" d="M371.498667 456.832a42.666667 42.666667 0 0 1-60.330667-60.330667l128-128a42.666667 42.666667 0 0 1 60.330667 0l469.333333 469.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L469.333333 358.997333l-97.834666 97.834667zM810.666667 384v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V682.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h469.333333a42.666667 42.666667 0 0 1 0 85.333334H170.666667a128 128 0 0 1-128-128v-597.333334a128 128 0 0 1 128-128h597.333333a128 128 0 0 1 128 128v298.666667a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="cast" unicode="&#59457;" d="M76.8 167.253333a170.666667 170.666667 0 0 0 133.12-133.12 42.666667 42.666667 0 0 1 83.626667 17.066667 256 256 0 0 1-199.68 199.68 42.666667 42.666667 0 0 1-17.066667-83.626667z m3.84 172.202667a341.333333 341.333333 0 0 0 301.482667-301.525333 42.666667 42.666667 0 1 1 84.821333 9.472 426.666667 426.666667 0 0 1-376.874667 376.874666 42.666667 42.666667 0 1 1-9.472-84.821333zM128 554.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h682.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666667h-256a42.666667 42.666667 0 0 1 0-85.333333h256a128 128 0 0 1 128 128V640a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0zM85.333333 42.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="chevron-down" unicode="&#59458;" d="M286.165333 542.165333a42.666667 42.666667 0 0 1-60.330666-60.330666l256-256a42.666667 42.666667 0 0 1 60.330666 0l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666L512 316.330667 286.165333 542.165333z" horiz-adv-x="1024" />
<glyph glyph-name="chevron-left" unicode="&#59459;" d="M670.165333 609.834667a42.666667 42.666667 0 1 1-60.330666 60.330666l-256-256a42.666667 42.666667 0 0 1 0-60.330666l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666L444.330667 384l225.834666 225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="chevron-right" unicode="&#59460;" d="M353.834667 158.165333a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 0 1 0 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666L579.669333 384l-225.834666-225.834667z" horiz-adv-x="1024" />
<glyph glyph-name="chevron-up" unicode="&#59461;" d="M737.834667 225.834667a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666 0l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666L512 451.669333l225.834667-225.834666z" horiz-adv-x="1024" />
<glyph glyph-name="chevrons-down" unicode="&#59462;" d="M328.832 371.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l213.333334-213.333333a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333333a42.666667 42.666667 0 0 1-60.330667 60.330667L512 188.330667l-183.168 183.168zM328.832 670.165333a42.666667 42.666667 0 0 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L512 486.997333 328.832 670.165333z" horiz-adv-x="1024" />
<glyph glyph-name="chevrons-right" unicode="&#59463;" d="M524.501333 200.832a42.666667 42.666667 0 0 1 60.330667-60.330667l213.333333 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333333 213.333334a42.666667 42.666667 0 0 1-60.330667-60.330667L707.669333 384l-183.168-183.168zM225.834667 200.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L409.002667 384l-183.168-183.168z" horiz-adv-x="1024" />
<glyph glyph-name="chevrons-up" unicode="&#59464;" d="M695.168 396.501333a42.666667 42.666667 0 0 1 60.330667 60.330667l-213.333334 213.333333a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333333a42.666667 42.666667 0 0 1 60.330667-60.330667L512 579.669333l183.168-183.168zM512 281.002667l183.168-183.168a42.666667 42.666667 0 0 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 0 1 60.330667-60.330666L512 281.002667z" horiz-adv-x="1024" />
<glyph glyph-name="chevrons-left" unicode="&#59465;" d="M499.498667 567.168a42.666667 42.666667 0 1 1-60.330667 60.330667l-213.333333-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333333-213.333334a42.666667 42.666667 0 0 1 60.330667 60.330667L316.330667 384l183.168 183.168zM798.165333 567.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 60.330667L614.997333 384l183.168 183.168z" horiz-adv-x="1024" />
<glyph glyph-name="circle" unicode="&#59466;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
<glyph glyph-name="clipboard" unicode="&#59467;" d="M298.666667 768c0.213333 46.976 38.4 85.333333 85.205333 85.333333h256.256c47.104 0 84.992-37.973333 85.205333-85.333333h42.666667a128 128 0 0 0 128-128v-597.333333a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V640a128 128 0 0 0 128 128h42.666667z m0-85.333333H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-597.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V640a42.666667 42.666667 0 0 1-42.666667 42.666667h-42.666667c-0.213333-46.976-38.4-85.333333-85.205333-85.333334H383.872A85.248 85.248 0 0 0 298.666667 682.666667z m85.205333 85.333333c0.341333 0 0.128-0.213333 0.128-0.426667v-84.48C384 682.752 384 682.666667 383.914667 682.666667h256.213333C639.786667 682.666667 640 682.88 640 683.093333V767.573333c0 0.298667 0 0.426667 0.085333 0.426667H383.872z" horiz-adv-x="1024" />
<glyph glyph-name="chrome" unicode="&#59468;" d="M462.378667-82.77333299999998a42.410667 42.410667 0 0 0-5.802667 0.682666C223.488-54.65599999999995 42.666667 143.530667 42.666667 384c0 102.954667 33.152 198.186667 89.386666 275.584a42.410667 42.410667 0 0 0 4.650667 6.272A468.608 468.608 0 0 0 512 853.333333a469.418667 469.418667 0 0 0 431.36-284.16c24.448-56.832 37.973333-119.424 37.973333-185.173333 0-259.2-210.133333-469.333333-469.333333-469.333333-16.768 0-33.28 0.853333-49.621333 2.56z m-20.608 89.173333l95.616 165.76a213.333333 213.333333 0 0 0-214.528 113.066667l-155.306667 268.672A382.421333 382.421333 0 0 1 128 384c0-188.074667 135.253333-344.618667 313.770667-377.6z m95.317333-5.589333A384 384 0 0 1 874.154667 512H682.666667c26.794667-35.669333 42.666667-79.957333 42.666666-128 0-41.941333-12.117333-81.066667-33.024-114.090667l-155.221333-269.098666z m82.389333 313.642666l3.2 5.546667c0.554667 0.981333 1.152 1.962667 1.792 2.858667a128 128 0 1 1-226.56 2.986666l3.413334-5.845333c0.554667-0.938667 1.066667-1.92 1.536-2.901333a127.914667 127.914667 0 0 1 216.618666-2.645334zM220.16 633.5146669999999l95.701333-165.589334A213.376 213.376 0 0 0 512 597.333333h319.317333A383.616 383.616 0 0 1 512 768a383.146667 383.146667 0 0 1-291.925333-134.485333z" horiz-adv-x="1024" />
<glyph glyph-name="clock" unicode="&#59469;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM554.666667 640a42.666667 42.666667 0 0 1-85.333334 0v-256a42.666667 42.666667 0 0 1 12.501334-30.165333l128-128a42.666667 42.666667 0 0 1 60.330666 60.330666L554.666667 401.664V640z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-lightning" unicode="&#59470;" d="M384.070136 896a383.99632 383.99632 0 0 1-185.939552-719.9931 42.666258 42.666258 0 0 1 41.300938 74.665951A298.663804 298.663804 0 1 0 673.262031 586.669631a42.666258 42.666258 0 0 1 41.300938-31.999693H768.322453a170.665031 170.665031 0 0 0 34.175673-337.916762 42.666258 42.666258 0 0 1 16.98117-83.625865A255.997547 255.997547 0 0 1 768.279787 640.002453h-22.186454a383.99632 383.99632 0 0 1-362.023197 255.997547zM434.160322-61.644156a42.666258 42.666258 0 0 1 70.996653-47.359546l170.665032 255.997547A42.666258 42.666258 0 0 1 640.32368 213.339875h-176.254311l126.420122 189.651516a42.666258 42.666258 0 1 1-70.996653 47.359546l-170.665031-255.997546A42.666258 42.666258 0 0 1 384.326133 128.00736h176.254311l-126.420122-189.651516z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-drizzle" unicode="&#59471;" d="M298.831787 85.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM298.831787 341.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM640.16512 85.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM640.16512 341.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.498453 0v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM469.498453 256v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM405.498453 895.36A384 384 0 0 1 144.207787 212.053333a42.666667 42.666667 0 0 1 53.248 66.645334A298.666667 298.666667 0 1 0 673.103787 586.666667a42.666667 42.666667 0 0 1 41.301333-32H768.16512a170.666667 170.666667 0 0 0 68.224-326.997334 42.666667 42.666667 0 0 1 34.218667-78.165333A256 256 0 0 1 768.207787 640h-22.229334A384 384 0 0 1 405.498453 895.36z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-rain" unicode="&#59472;" d="M640.16512 341.333333v-341.333333a42.666667 42.666667 0 0 1 85.333333 0v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM298.831787 341.333333v-341.333333a42.666667 42.666667 0 0 1 85.333333 0v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.498453 256v-341.333333a42.666667 42.666667 0 0 1 85.333334 0v341.333333a42.666667 42.666667 0 0 1-85.333334 0zM405.498453 895.36A384 384 0 0 1 144.207787 212.053333a42.666667 42.666667 0 0 1 53.248 66.645334A298.666667 298.666667 0 1 0 673.103787 586.666667a42.666667 42.666667 0 0 1 41.301333-32H768.16512a170.666667 170.666667 0 0 0 68.224-326.997334 42.666667 42.666667 0 0 1 34.218667-78.165333A256 256 0 0 1 768.207787 640h-22.229334A384 384 0 0 1 405.498453 895.36z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-off" unicode="&#59473;" d="M420.661732 767.370083a42.474214 42.474214 0 0 1-45.971088-38.721472 42.559504 42.559504 0 0 1 38.508249-46.226956 297.3195 297.3195 0 0 0 261.583163-223.885166 42.431569 42.431569 0 0 1 41.109581-32.154174h53.433926a169.38512 169.38512 0 0 0 141.580714-76.248891 171.389425 171.389425 0 0 0 14.840388-160.813516 42.730083 42.730083 0 0 1 22.516451-55.864679 42.303635 42.303635 0 0 1 55.608811 22.60174 257.062815 257.062815 0 0 1-22.260582 241.198952A254.077679 254.077679 0 0 1 769.240273 511.671902h-21.876779a382.054704 382.054704 0 0 1-326.701762 255.698181zM197.544172 719.607914c-153.308032-85.289587-229.215765-264.568299-184.097573-434.763669 45.160836-170.238015 199.748212-287.681777 374.890379-284.86722h380.988585c29.552842 0 58.849815 5.24531 86.568931 15.352126 22.004713 8.059866 33.348228 32.495333 25.373652 54.62798a42.34628 42.34628 0 0 1-54.329467 25.544231c-18.50784-6.737877-37.996511-10.23475-57.655761-10.23475H387.654662a297.276855 297.276855 0 0 0-292.24477 221.539702 299.153226 299.153226 0 0 0 143.158572 338.130567c20.469501 11.38616 27.93234 37.356839 16.631469 57.954274a42.26099 42.26099 0 0 1-57.655761 16.674115zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
<glyph glyph-name="codepen" unicode="&#59474;" d="M535.253333 846.421333l426.666667-277.333333A42.666667 42.666667 0 0 0 981.333333 533.333333v-298.666666a42.666667 42.666667 0 0 0-19.413333-35.754667l-426.666667-277.333333a42.666667 42.666667 0 0 0-46.506666 0l-426.666667 277.333333A42.666667 42.666667 0 0 0 42.666667 234.66666699999996v298.666666a42.666667 42.666667 0 0 0 19.413333 35.754667l426.666667 277.333333a42.666667 42.666667 0 0 0 46.506666 0zM469.333333 732.074667L161.621333 531.9680000000001 298.666667 436.096l170.666666 119.466667V732.032z m85.333334 0V555.52l170.666666-119.466667 137.045334 95.914667L554.666667 732.032zM512 286.72L650.922667 384 512 481.28 373.077333 384 512 286.72z m384 29.866667v134.741333L799.744 384 896 316.58666700000003z m-33.621333-80.64L725.333333 331.904l-170.666666-119.466667v-176.469333l307.712 200.021333z m-700.757334 0L469.333333 35.96799999999996v176.469333l-170.666666 119.466667-137.045334-95.914667zM128 316.58666700000003L224.256 384 128 451.413333v-134.826666z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-snow" unicode="&#59475;" d="M405.632 852.693333A384 384 0 0 1 144.298667 169.386667a42.666667 42.666667 0 0 1 53.290666 66.645333A298.666667 298.666667 0 1 0 673.194667 544a42.666667 42.666667 0 0 1 41.301333-32h53.76a170.666667 170.666667 0 0 0 68.266667-326.997333 42.666667 42.666667 0 0 1 34.218666-78.165334A256 256 0 0 1 768.341333 597.333333h-22.272a384 384 0 0 1-340.48 255.36zM682.666667 256m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM512 170.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM341.333333 256m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM341.333333 42.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM512-42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM682.666667 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM682.666667 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="compass" unicode="&#59476;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM455.253333 440.746667L398.592 270.506667l170.154667 56.746666 56.746666 170.154667-170.154666-56.746667z m278.144 110.677333l-90.453333-271.36a42.666667 42.666667 0 0 0-27.008-27.008l-271.36-90.453333a42.666667 42.666667 0 0 0-53.973333 53.973333l90.453333 271.36a42.666667 42.666667 0 0 0 27.008 27.008l271.36 90.453333a42.666667 42.666667 0 0 0 53.973333-53.973333z" horiz-adv-x="1024" />
<glyph glyph-name="copy" unicode="&#59477;" d="M426.666667 426.538667v-383.744A42.666667 42.666667 0 0 1 469.461333 0h383.744A42.666667 42.666667 0 0 1 896 42.794667v383.744A42.666667 42.666667 0 0 1 853.205333 469.333333h-383.744A42.666667 42.666667 0 0 1 426.666667 426.538667z m-85.333334 0A128 128 0 0 0 469.461333 554.666667h383.744A128 128 0 0 0 981.333333 426.538667v-383.744A128 128 0 0 0 853.205333-85.333333h-383.744A128 128 0 0 0 341.333333 42.794667v383.744zM213.333333 298.666667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h384a42.666667 42.666667 0 0 0 42.666666-42.666667v-42.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-384a128 128 0 0 1 128-128h42.666666a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="corner-down-right" unicode="&#59478;" d="M609.834667 72.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L793.002667 256l-183.168-183.168zM128 725.333333v-298.666666a213.333333 213.333333 0 0 1 213.333333-213.333334h512a42.666667 42.666667 0 0 1 0 85.333334H341.333333a128 128 0 0 0-128 128V725.333333a42.666667 42.666667 0 1 1-85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="corner-down-left" unicode="&#59479;" d="M414.165333 439.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 1 1 60.330666 60.330667L230.997333 256l183.168 183.168zM810.666667 725.333333v-298.666666a128 128 0 0 0-128-128H170.666667a42.666667 42.666667 0 0 1 0-85.333334h512a213.333333 213.333333 0 0 1 213.333333 213.333334V725.333333a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="corner-left-down" unicode="&#59480;" d="M200.832 286.165333a42.666667 42.666667 0 1 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 0 1-60.330667 60.330666L384 102.997333l-183.168 183.168zM853.333333 768h-298.666666a213.333333 213.333333 0 0 1-213.333334-213.333333v-512a42.666667 42.666667 0 0 1 85.333334 0V554.666667a128 128 0 0 0 128 128h298.666666a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="corner-left-up" unicode="&#59481;" d="M567.168 481.834667a42.666667 42.666667 0 1 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 0 1 60.330667-60.330666L384 665.002667l183.168-183.168zM853.333333 85.333333h-298.666666a128 128 0 0 0-128 128V725.333333a42.666667 42.666667 0 1 1-85.333334 0v-512a213.333333 213.333333 0 0 1 213.333334-213.333333h298.666666a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="corner-up-left" unicode="&#59482;" d="M414.165333 695.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 1 1 60.330666 60.330667L230.997333 512l183.168 183.168zM896 42.666667v298.666666a213.333333 213.333333 0 0 1-213.333333 213.333334H170.666667a42.666667 42.666667 0 1 1 0-85.333334h512a128 128 0 0 0 128-128v-298.666666a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="corner-up-right" unicode="&#59483;" d="M609.834667 328.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L793.002667 512l-183.168-183.168zM213.333333 42.666667v298.666666a128 128 0 0 0 128 128h512a42.666667 42.666667 0 0 1 0 85.333334H341.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-298.666666a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="corner-right-down" unicode="&#59484;" d="M456.832 286.16533300000003a42.666667 42.666667 0 1 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 0 1-60.330667 60.330666L640 102.99733300000003l-183.168 183.168zM170.666667 682.666667h298.666666a128 128 0 0 0 128-128v-512a42.666667 42.666667 0 0 1 85.333334 0V554.666667a213.333333 213.333333 0 0 1-213.333334 213.333333H170.666667a42.666667 42.666667 0 1 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="corner-right-up" unicode="&#59485;" d="M823.168 481.834667a42.666667 42.666667 0 1 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 1 1 60.330667-60.330666L640 665.002667l183.168-183.168zM170.666667 0h298.666666a213.333333 213.333333 0 0 1 213.333334 213.333333V725.333333a42.666667 42.666667 0 0 1-85.333334 0v-512a128 128 0 0 0-128-128H170.666667a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="cpu" unicode="&#59486;" d="M213.333333 640.256v-512.512c0-23.381333 19.029333-42.410667 42.410667-42.410667h512.512a42.453333 42.453333 0 0 1 42.410667 42.410667V640.256A42.453333 42.453333 0 0 1 768.256 682.666667H255.744A42.453333 42.453333 0 0 1 213.333333 640.256z m-85.333333 0A127.786667 127.786667 0 0 0 255.744 768h512.512A127.786667 127.786667 0 0 0 896 640.256v-512.512A127.786667 127.786667 0 0 0 768.256 0H255.744A127.786667 127.786667 0 0 0 128 127.74400000000003V640.256zM426.666667 298.66666699999996h170.666666v170.666666h-170.666666v-170.666666zM384 554.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-256a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667zM341.333333 853.333333a42.666667 42.666667 0 1 0 85.333334 0v-128a42.666667 42.666667 0 1 0-85.333334 0V853.333333z m256 0a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0V853.333333zM341.333333 42.66666699999996a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0v128z m256 0a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0v128z m256 426.666666a42.666667 42.666667 0 0 0 0 85.333334h128a42.666667 42.666667 0 0 0 0-85.333334h-128z m0-213.333333a42.666667 42.666667 0 0 0 0 85.333333h128a42.666667 42.666667 0 0 0 0-85.333333h-128zM42.666667 469.333333a42.666667 42.666667 0 1 0 0 85.333334h128a42.666667 42.666667 0 1 0 0-85.333334H42.666667z m0-213.333333a42.666667 42.666667 0 0 0 0 85.333333h128a42.666667 42.666667 0 0 0 0-85.333333H42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="credit-card" unicode="&#59487;" d="M0 640.256A127.616 127.616 0 0 0 127.616 768H896.426667A127.744 127.744 0 0 0 1024 640.256v-512.512A127.616 127.616 0 0 0 896.384 0H127.573333A127.744 127.744 0 0 0 0 127.74400000000003V640.256zM938.666667 512V640.256A42.410667 42.410667 0 0 1 896.384 682.666667H127.573333A42.282667 42.282667 0 0 1 85.333333 640.256V512h853.333334z m0-85.333333H85.333333v-298.922667c0-23.381333 18.986667-42.410667 42.282667-42.410667H896.426667a42.282667 42.282667 0 0 1 42.282666 42.410667V426.666667z" horiz-adv-x="1024" />
<glyph glyph-name="crosshair" unicode="&#59488;" d="M469.333333 2.346667000000025V128a42.666667 42.666667 0 0 0 85.333334 0v-125.653333A384.170667 384.170667 0 0 1 893.653333 341.33333300000004H768a42.666667 42.666667 0 0 0 0 85.333334h125.653333A384.170667 384.170667 0 0 1 554.666667 765.653333V640a42.666667 42.666667 0 0 0-85.333334 0V765.653333A384.170667 384.170667 0 0 1 130.346667 426.666667H256a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.346667000000025zM512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z" horiz-adv-x="1024" />
<glyph glyph-name="disc" unicode="&#59489;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM512 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="delete" unicode="&#59490;" d="M896 768a128 128 0 0 0 128-128v-512a128 128 0 0 0-128-128H341.333333a42.666667 42.666667 0 0 0-32.128 14.549333l-298.666666 341.333334a42.666667 42.666667 0 0 0 0 56.234666l298.666666 341.333334A42.666667 42.666667 0 0 0 341.333333 768h554.666667z m0-682.666667a42.666667 42.666667 0 0 1 42.666667 42.666667V640a42.666667 42.666667 0 0 1-42.666667 42.666667H360.704l-261.333333-298.666667 261.333333-298.666667H896zM737.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666zM481.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="download-cloud" unicode="&#59491;" d="M512.468907 17.663999999999987l-140.501334 140.501333a42.666667 42.666667 0 1 1-60.330666-60.330666l170.666666-170.666667a42.666667 42.666667 0 0 1 60.330667 0l170.666667 170.666667a42.666667 42.666667 0 0 1-60.330667 60.330666L512.468907 17.663999999999987zM469.80224 341.33333300000004v-384a42.666667 42.666667 0 0 1 85.333333 0v384a42.666667 42.666667 0 0 1-85.333333 0zM427.988907 765.9946669999999a384 384 0 0 1-331.477334-635.989334 42.666667 42.666667 0 0 1 63.914667 56.576A298.666667 298.666667 0 1 0 673.32224 458.666667a42.666667 42.666667 0 0 1 41.344-32.042667H768.468907a170.666667 170.666667 0 0 0 98.346666-310.272 42.666667 42.666667 0 0 1 49.066667-69.802667A256 256 0 0 1 768.468907 512h-22.101334a384 384 0 0 1-318.293333 253.994667z" horiz-adv-x="1024" />
<glyph glyph-name="download" unicode="&#59492;" d="M85.333333 170.666667v-128a128 128 0 0 1 128-128h597.333334a128 128 0 0 1 128 128v128a42.666667 42.666667 0 0 1-85.333334 0v-128a42.666667 42.666667 0 0 0-42.666666-42.666667H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v128a42.666667 42.666667 0 0 1-85.333334 0zM512 273.664l-140.501333 140.501333a42.666667 42.666667 0 1 1-60.330667-60.330666l170.666667-170.666667a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666667a42.666667 42.666667 0 0 1-60.330667 60.330666L512 273.664zM469.333333 810.666667v-597.333334a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="droplet" unicode="&#59493;" d="M301.098667 501.034667a290.986667 290.986667 0 0 1-64.853334-320.64c46.250667-109.952 155.136-181.674667 275.968-181.674667s229.717333 71.68 275.968 181.674667a290.986667 290.986667 0 0 1-64.853333 320.64L512 709.162667 301.098667 501.034667z m241.066666 297.301333l241.493334-237.866667a374.144 374.144 0 0 0 83.328-412.245333C807.594667 6.869333 667.562667-85.333333 512.213333-85.333333c-155.306667 0-295.381333 92.16-354.773333 233.557333a374.144 374.144 0 0 0 83.285333 412.202667l241.066667 237.909333a43.093333 43.093333 0 0 0 60.373333 0z" horiz-adv-x="1024" />
<glyph glyph-name="edit-" unicode="&#59494;" d="M170.666667 195.669333V42.666667h153.002666l512 512L682.666667 707.669333l-512-512zM712.832 798.165333l213.333333-213.333333a42.666667 42.666667 0 0 0 0-60.330667l-554.666666-554.666666A42.666667 42.666667 0 0 0 341.333333-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v213.333333a42.666667 42.666667 0 0 0 12.501334 30.165334l554.666666 554.666666a42.666667 42.666667 0 0 0 60.330667 0z" horiz-adv-x="1024" />
<glyph glyph-name="edit" unicode="&#59495;" d="M810.666667 270.506667V42.666667a42.666667 42.666667 0 0 0-42.666667-42.666667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h227.84a42.666667 42.666667 0 1 1 0 85.333333H170.666667a128 128 0 0 1-128-128v-597.333333a128 128 0 0 1 128-128h597.333333a128 128 0 0 1 128 128v227.84a42.666667 42.666667 0 0 1-85.333333 0zM384 366.336V256h110.336l384 384L768 750.336l-384-384z m414.165333 474.496l170.666667-170.666667a42.666667 42.666667 0 0 0 0-60.330666l-426.666667-426.666667A42.666667 42.666667 0 0 0 512 170.666667H341.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v170.666667a42.666667 42.666667 0 0 0 12.501333 30.165333l426.666667 426.666667a42.666667 42.666667 0 0 0 60.330666 0z" horiz-adv-x="1024" />
<glyph glyph-name="edit-1" unicode="&#59496;" d="M170.666667 323.669333V213.333333h110.336l426.666666 426.666667L597.333333 750.336l-426.666666-426.666667zM627.498667 840.832l170.666666-170.666667a42.666667 42.666667 0 0 0 0-60.330666l-469.333333-469.333334A42.666667 42.666667 0 0 0 298.666667 128H128a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666666a42.666667 42.666667 0 0 0 12.501334 30.165334l469.333333 469.333333a42.666667 42.666667 0 0 0 60.330667 0zM128-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333H128a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="external-link" unicode="&#59497;" d="M725.333333 341.333333v-256a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666V554.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h256a42.666667 42.666667 0 0 1 0 85.333334H213.333333a128 128 0 0 1-128-128v-469.333334a128 128 0 0 1 128-128h469.333334a128 128 0 0 1 128 128v256a42.666667 42.666667 0 0 1-85.333334 0zM853.333333 725.333333v-213.333333a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333333zM456.832 268.501333l469.333333 469.333334a42.666667 42.666667 0 1 1-60.330666 60.330666l-469.333334-469.333333a42.666667 42.666667 0 0 1 60.330667-60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="eye" unicode="&#59498;" d="M109.844053 353.834667c24.533333-37.973333 53.504-75.989333 86.613334-111.36C289.172053 143.744 394.900053 85.333333 512.020053 85.333333c117.12 0 222.890667 58.368 315.52 157.184A789.888 789.888 0 0 1 932.713387 384a789.888 789.888 0 0 1-105.130667 141.482667C734.91072 624.298667 629.140053 682.666667 512.020053 682.666667 394.900053 682.666667 289.129387 624.298667 196.500053 525.482667A789.888 789.888 0 0 1 91.32672 384c5.376-9.301333 11.52-19.413333 18.474667-30.165333zM4.54272 403.072c5.973333 11.989333 17.237333 32 33.621333 57.429333a874.325333 874.325333 0 0 0 96.042667 123.306667C241.556053 698.410667 367.80672 768 512.020053 768c144.213333 0 270.464-69.632 377.813334-184.149333a874.325333 874.325333 0 0 0 96-123.349334c16.426667-25.429333 27.690667-45.44 33.706666-57.429333a42.666667 42.666667 0 0 0 0-38.144c-6.016-11.989333-17.28-32-33.706666-57.429333a874.325333 874.325333 0 0 0-96-123.306667C782.484053 69.589333 656.233387 0 512.020053 0c-144.213333 0-270.464 69.632-377.813333 184.149333a874.325333 874.325333 0 0 0-96 123.349334 648.021333 648.021333 0 0 0-33.706667 57.429333 42.666667 42.666667 0 0 0 0 38.144zM512.020053 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="feather" unicode="&#59499;" d="M230.997333 42.66666699999996l-115.498666-115.498667a42.666667 42.666667 0 1 0-60.330667 60.330667L170.666667 102.99733300000003V448a42.666667 42.666667 0 0 0 12.501333 30.165333l288 288a298.794667 298.794667 0 0 0 422.613333-422.570666l-287.573333-288.426667A42.666667 42.666667 0 0 0 576 42.66666699999996H230.997333z m256 256l241.365334-0.085334 104.96 105.301334a213.504 213.504 0 1 1-301.824 301.952L256 430.336v-242.005333l396.501333 396.501333a42.666667 42.666667 0 0 0 60.330667-60.330667L486.997333 298.66666699999996z m156.373334-85.333334H401.664l-85.333333-85.333333h241.92l85.12 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="facebook" unicode="&#59500;" d="M384 597.333333a256 256 0 0 0 256 256h128a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-128v-85.333333h128a42.666667 42.666667 0 0 0 41.386667-53.034667l-42.666667-170.666666A42.666667 42.666667 0 0 0 725.333333 256h-85.333333v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666v298.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666666a42.666667 42.666667 0 0 0 42.666667 42.666667h85.333333V597.333333z m341.333333 170.666667h-85.333333a170.666667 170.666667 0 0 1-170.666667-170.666667v-128a42.666667 42.666667 0 0 0-42.666666-42.666666H341.333333v-85.333334h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667h85.333334v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h94.72l21.333334 85.333334H597.333333a42.666667 42.666667 0 0 0-42.666666 42.666666V597.333333a85.333333 85.333333 0 0 0 85.333333 85.333334h85.333333V768z" horiz-adv-x="1024" />
<glyph glyph-name="file-minus" unicode="&#59501;" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333zM384 213.33333300000004a42.666667 42.666667 0 0 0 0 85.333334h256a42.666667 42.666667 0 0 0 0-85.333334H384z" horiz-adv-x="1024" />
<glyph glyph-name="eye-off" unicode="&#59502;" d="M284.838065 603.144984a42.644793 42.644793 0 1 1-51.77078 67.805221A829.441232 829.441232 0 0 1 5.642602 403.908509a42.644793 42.644793 0 0 1-0.554382-39.23321c5.970271-11.983187 17.228497-31.983595 33.604097-57.399892 27.164733-42.005122 59.148329-83.967598 95.99343-123.243453C241.937402 69.488038 368.123346-0.06562 512.262748-0.06562a472.546956 472.546956 0 0 1 279.152818 96.590457 42.644793 42.644793 0 1 1-51.68549 67.805222A386.788277 386.788277 0 0 0 511.580431 85.223967c-116.420286 0-222.094084 58.338077-314.718575 157.103419a789.483061 789.483061 0 0 0-104.948837 141.282201 744.151646 744.151646 0 0 0 192.925046 219.535397z m571.78139-327.981107a42.644793 42.644793 0 0 1 65.246534-54.926494 831.573472 831.573472 0 0 1 97.102195 143.414441 42.644793 42.644793 0 0 1 0.511737 39.14792c-5.970271 11.983187-17.228497 31.983595-33.604097 57.399892a873.877107 873.877107 0 0 1-95.99343 123.243453C782.588094 697.987004 656.40215 767.540662 512.262748 767.540662a431.352086 431.352086 0 0 1-99.277079-11.343515 42.644793 42.644793 0 0 1 19.446026-83.072057A346.275723 346.275723 0 0 0 512.177458 682.251075c117.145248 0 222.861691-58.338077 315.443537-157.103419a789.483061 789.483061 0 0 0 105.034127-141.324845 746.283885 746.283885 0 0 0-76.035667-108.658934z m-285.165734 47.250431a85.289587 85.289587 0 1 0-120.514186 120.514187 42.644793 42.644793 0 1 1-58.167498 62.431977 170.579174 170.579174 0 1 1 241.113662-241.113662 42.644793 42.644793 0 1 1-62.431978 58.167498zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
<glyph glyph-name="fast-forward" unicode="&#59503;" d="M580.864 51.626667A42.666667 42.666667 0 0 0 512 85.333333V682.666667a42.666667 42.666667 0 0 0 68.864 33.706666l384-298.666666a42.666667 42.666667 0 0 0 0-67.413334l-384-298.666666zM869.12 384L597.333333 595.413333v-422.826666L869.162667 384zM111.530667 51.626667A42.666667 42.666667 0 0 0 42.666667 85.333333V682.666667a42.666667 42.666667 0 0 0 68.864 33.706666l384-298.666666a42.666667 42.666667 0 0 0 0-67.413334l-384-298.666666zM399.786667 384L128 595.413333v-422.826666L399.829333 384z" horiz-adv-x="1024" />
<glyph glyph-name="file-text" unicode="&#59504;" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333z m85.333334-469.333333a42.666667 42.666667 0 0 0 0-85.333333H341.333333a42.666667 42.666667 0 0 0 0 85.333333h341.333334z m0-170.666667a42.666667 42.666667 0 0 0 0-85.333333H341.333333a42.666667 42.666667 0 0 0 0 85.333333h341.333334z m-256 341.333334a42.666667 42.666667 0 0 0 0-85.333334H341.333333a42.666667 42.666667 0 1 0 0 85.333334h85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="film" unicode="&#59505;" d="M42.666667 717.738667A135.68 135.68 0 0 0 178.261333 853.333333h667.477334A135.68 135.68 0 0 0 981.333333 717.738667v-667.477334A135.68 135.68 0 0 0 845.738667-85.33333300000004H178.261333A135.68 135.68 0 0 0 42.666667 50.261333000000036V717.738667zM341.333333 768v-341.333333h341.333334V768H341.333333z m0-768h341.333334v341.333333H341.333333v-341.333333z m554.666667 426.666667V554.666667h-128v-128h128z m0-85.333334h-128v-128h128v128zM128 341.33333300000004v-128h128v128H128z m0 85.333334h128V554.666667H128v-128z m640 341.333333v-128h128V717.738667A50.346667 50.346667 0 0 1 845.738667 768H768z m128-640h-128v-128h77.738667A50.346667 50.346667 0 0 1 896 50.261333000000036V128zM256 768H178.261333A50.346667 50.346667 0 0 1 128 717.738667V640h128V768z m0-768v128H128v-77.738667C128 22.61333300000001 150.570667 0 178.261333 0H256z" horiz-adv-x="1024" />
<glyph glyph-name="file" unicode="&#59506;" d="M554.666667 853.333333a42.666667 42.666667 0 0 0 30.165333-12.501333l298.666667-298.666667A42.666667 42.666667 0 0 0 896 512v-469.333333a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h298.666667z m-42.666667-341.333333V768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V469.333333h-256a42.666667 42.666667 0 0 0-42.666667 42.666667z m85.333333 195.669333V554.666667h153.002667L597.333333 707.669333z" horiz-adv-x="1024" />
<glyph glyph-name="file-plus" unicode="&#59507;" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333z m-128-640H384a42.666667 42.666667 0 0 0 0 85.333334h85.333333v85.333333a42.666667 42.666667 0 0 0 85.333334 0v-85.333333h85.333333a42.666667 42.666667 0 0 0 0-85.333334h-85.333333v-85.333333a42.666667 42.666667 0 0 0-85.333334 0v85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="folder" unicode="&#59508;" d="M170.666667 725.333333a42.666667 42.666667 0 0 1-42.666667-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-384a42.666667 42.666667 0 0 0-35.498666 18.986667L361.173333 725.333333H170.666667z m682.666666-42.666666a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h213.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L492.16 682.666667H853.333333z" horiz-adv-x="1024" />
<glyph glyph-name="filter" unicode="&#59509;" d="M384 348.757333l-331.264 391.68A42.666667 42.666667 0 0 0 85.333333 810.666667h853.333334a42.666667 42.666667 0 0 0 32.597333-70.229334L640 348.757333V0a42.666667 42.666667 0 0 0-61.738667-38.144l-170.666666 85.333333A42.666667 42.666667 0 0 0 384 85.33333300000004v263.424zM177.28 725.333333l281.984-333.397333a42.666667 42.666667 0 0 0 10.069333-27.562667v-252.672l85.333334-42.666666V364.373333a42.666667 42.666667 0 0 0 10.069333 27.562667L846.72 725.333333H177.28z" horiz-adv-x="1024" />
<glyph glyph-name="flag" unicode="&#59510;" d="M128-42.66666699999996V768a42.666667 42.666667 0 0 0 12.501333 30.165333c9.386667 9.386667 26.197333 20.608 51.626667 30.762667C230.698667 844.373333 280.064 853.333333 341.333333 853.333333c60.458667 0 101.674667-11.776 186.496-45.738666C603.008 777.557333 636.458667 768 682.666667 768c50.730667 0 89.344 7.04 117.504 18.261333 14.549333 5.845333 21.674667 10.624 22.997333 11.946667C850.048 825.045333 896 805.973333 896 768v-512a42.666667 42.666667 0 0 0-12.501333-30.165333c-9.386667-9.386667-26.197333-20.608-51.626667-30.762667-38.528-15.445333-87.893333-24.405333-149.205333-24.405333-60.458667 0-101.674667 11.776-186.496 45.738666C420.992 246.44266700000003 387.541333 256 341.333333 256c-50.730667 0-89.344-7.04-117.504-18.261333a174.677333 174.677333 0 0 1-10.496-4.608V-42.66666699999996a42.666667 42.666667 0 0 0-85.333333 0z m213.333333 384c60.458667 0 101.674667-11.776 186.496-45.738666 75.178667-30.037333 108.629333-39.594667 154.837334-39.594667 50.730667 0 89.344 7.04 117.504 18.261333 4.053333 1.664 7.552 3.2 10.496 4.608v420.693334c-34.986667-10.794667-77.397333-16.896-128-16.896-60.458667 0-101.674667 11.776-186.496 45.738666C420.992 758.442667 387.541333 768 341.333333 768c-50.730667 0-89.344-7.04-117.504-18.261333A174.677333 174.677333 0 0 1 213.333333 745.130667v-420.693334C248.32 335.23199999999997 290.730667 341.33333300000004 341.333333 341.33333300000004z" horiz-adv-x="1024" />
<glyph glyph-name="globe" unicode="&#59511;" d="M512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m211.2 426.666666a695.466667 695.466667 0 0 0-114.176-328.96A384.341333 384.341333 0 0 1 893.653333 341.33333300000004H723.2z m-422.272 0H130.346667a384.341333 384.341333 0 0 1 284.629333-328.96A696.789333 696.789333 0 0 0 300.928 341.33333300000004z m308.096 414.293334A696.789333 696.789333 0 0 0 723.072 426.666667h170.581333a384.341333 384.341333 0 0 1-284.629333 328.96z m-194.048 0A384.341333 384.341333 0 0 1 130.346667 426.666667H300.8a695.466667 695.466667 0 0 0 114.176 328.96zM386.474667 341.33333300000004A610.133333 610.133333 0 0 1 512 23.46666700000003 609.621333 609.621333 0 0 1 637.653333 341.33333300000004H386.474667z m251.050666 85.333334A610.133333 610.133333 0 0 1 512 744.533333 609.621333 609.621333 0 0 1 386.346667 426.666667h251.178666z" horiz-adv-x="1024" />
<glyph glyph-name="grid" unicode="&#59512;" d="M170.666667 512h213.333333V725.333333H170.666667v-213.333333zM128 810.666667h298.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666666H128a42.666667 42.666667 0 0 0-42.666667 42.666666V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM640 512h213.333333V725.333333h-213.333333v-213.333333z m-42.666667 298.666667h298.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-298.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768a42.666667 42.666667 0 0 0 42.666666 42.666667zM640 42.666667h213.333333v213.333333h-213.333333v-213.333333z m-42.666667 298.666666h298.666667a42.666667 42.666667 0 0 0 42.666667-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-298.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666zM170.666667 42.666667h213.333333v213.333333H170.666667v-213.333333z m-42.666667 298.666666h298.666667a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="heart" unicode="&#59513;" d="M527.061333 729.472A277.333333 277.333333 0 0 0 1000.618667 533.333333a277.333333 277.333333 0 0 0-81.28-196.138666l-377.173334-377.173334a42.666667 42.666667 0 0 0-60.330666 0l-377.173334 377.173334a277.376 277.376 0 0 0 392.277334 392.277333l15.061333-15.061333 15.061333 15.061333z m286.72-377.173333l45.226667 45.226666a192 192 0 0 1-135.808 327.893334 192 192 0 0 1-135.808-56.32l-45.226667-45.226667a42.666667 42.666667 0 0 0-60.330666 0l-45.226667 45.226667a192.042667 192.042667 0 0 1-271.616-271.573334L512 50.517333l301.781333 301.781334z" horiz-adv-x="1024" />
<glyph glyph-name="home" unicode="&#59514;" d="M101.802667 545.7066669999999l384 298.666666a42.666667 42.666667 0 0 0 52.394666 0l384-298.666666A42.666667 42.666667 0 0 0 938.666667 512v-469.333333a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128V512a42.666667 42.666667 0 0 0 16.469334 33.706667zM682.666667 0h128a42.666667 42.666667 0 0 1 42.666666 42.666667V491.093333l-341.333333 265.514667-341.333333-265.472V42.66666699999996a42.666667 42.666667 0 0 1 42.666666-42.666667h128v384a42.666667 42.666667 0 0 0 42.666667 42.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-384z m-256 0h170.666666v341.333333h-170.666666v-341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="github" unicode="&#59515;" d="M371.754667 83.541333c-91.818667-27.562667-128.896-12.970667-174.805334 43.861334-3.072 3.797333-15.786667 19.968-19.2 24.192-27.477333 33.92-49.408 52.309333-82.048 60.458666a42.666667 42.666667 0 0 1-20.736-82.773333c9.813333-2.474667 19.712-10.752 36.394667-31.36 2.986667-3.626667 15.701333-19.797333 19.2-24.106667 66.304-82.133333 138.026667-110.293333 265.685333-72.021333a42.666667 42.666667 0 0 1-24.490666 81.749333zM960 489.813333a274.773333 274.773333 0 0 1-58.837333 169.856 258.986667 258.986667 0 0 1-12.458667 167.808 42.666667 42.666667 0 0 1-27.093333 24.106667 64.085333 64.085333 0 0 1-8.96 1.877333c-40.064 5.802667-98.858667-10.026667-177.621334-59.989333a613.546667 613.546667 0 0 1-283.392 0C312.874667 843.434667 254.08 859.306667 213.973333 853.461333a64.085333 64.085333 0 0 1-8.96-1.877333 42.666667 42.666667 0 0 1-27.050666-24.106667 258.986667 258.986667 0 0 1-12.458667-167.808A274.773333 274.773333 0 0 1 106.666667 488.32c0-196.778667 87.893333-292.949333 247.466666-329.6a186.453333 186.453333 0 0 1-12.714666-81.92L341.333333-85.333333a42.666667 42.666667 0 0 1 85.333334 0v165.12c-2.133333 31.616 8.106667 59.776 28.117333 80.426666a42.666667 42.666667 0 0 1-25.429333 71.978667C267.52 252.330667 192 315.776 192 488.533333a189.568 189.568 0 0 0 52.224 131.84 42.666667 42.666667 0 0 1 9.088 44.373334 173.653333 173.653333 0 0 0-5.973333 102.058666c2.986667-0.64 6.272-1.493333 9.856-2.56 27.52-7.893333 61.781333-24.490667 103.04-52.181333a42.666667 42.666667 0 0 1 34.944-5.717333 528.213333 528.213333 0 0 0 276.309333 0 42.666667 42.666667 0 0 1 34.944 5.717333c41.258667 27.690667 75.52 44.288 103.04 52.224 3.584 1.024 6.826667 1.877333 9.813333 2.56a173.653333 173.653333 0 0 0-5.930666-102.101333 42.666667 42.666667 0 0 1 9.088-44.373334A189.44 189.44 0 0 0 874.666667 489.813333c0-174.421333-76.032-238.336-236.8-256.256a42.666667 42.666667 0 0 1-25.941334-72.106666 101.12 101.12 0 0 0 28.202667-78.336L640-85.333333a42.666667 42.666667 0 0 1 85.333333 0v165.12a177.237333 177.237333 0 0 1-12.373333 79.658666c158.72 35.2 247.04 132.266667 247.04 330.368z" horiz-adv-x="1024" />
<glyph glyph-name="image" unicode="&#59516;" d="M213.333333-42.66666699999996h-0.213333A127.786667 127.786667 0 0 0 85.333333 85.12V682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.333333z m640 401.664v323.84A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88v-597.76c0-18.261333 11.52-33.792 27.648-39.808L652.501333 499.498667a42.666667 42.666667 0 0 0 60.330667 0L853.333333 358.997333z m0-120.661333l-170.666666 170.666667L316.330667 42.66666699999996h494.506666c23.466667 0 42.496 18.986667 42.496 42.453333v153.173333zM362.666667 426.666667a106.666667 106.666667 0 1 0 0 213.333333 106.666667 106.666667 0 0 0 0-213.333333z m0 85.333333a21.333333 21.333333 0 1 1 0 42.666667 21.333333 21.333333 0 0 1 0-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="inbox" unicode="&#59517;" d="M311.466667 768h401.066666a128 128 0 0 0 117.077334-76.117333l148.053333-333.226667A42.666667 42.666667 0 0 0 981.333333 341.33333300000004v-213.333333a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128v213.333333a42.666667 42.666667 0 0 0 3.669333 17.322667l148.053333 333.226667A128 128 0 0 0 311.466667 768z m561.536-384l-121.386667 273.28A42.666667 42.666667 0 0 1 712.533333 682.666667H311.466667a42.666667 42.666667 0 0 1-39.082667-25.386667L151.04 384H341.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L449.493333 256h125.013334l72.661333 109.013333A42.666667 42.666667 0 0 0 682.666667 384h190.336zM896 128v170.666667h-190.506667l-72.661333-109.013334A42.666667 42.666667 0 0 0 597.333333 170.66666699999996h-170.666666a42.666667 42.666667 0 0 0-35.498667 18.986666L318.506667 298.66666699999996H128v-170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="layers" unicode="&#59518;" d="M492.928 848.810667a42.666667 42.666667 0 0 0 38.144 0l426.666667-213.333334a42.666667 42.666667 0 0 0 0-76.288l-426.666667-213.333333a42.666667 42.666667 0 0 0-38.144 0l-426.666667 213.333333a42.666667 42.666667 0 0 0 0 76.288l426.666667 213.333334zM180.736 597.333333L512 431.701333 843.264 597.333333 512 762.965333 180.736 597.333333zM104.405333 208.810667a42.666667 42.666667 0 0 1-38.144-76.288l426.666667-213.333334a42.666667 42.666667 0 0 1 38.144 0l426.666667 213.333334a42.666667 42.666667 0 0 1-38.144 76.288L512 5.034667l-407.594667 203.776zM104.405333 422.144a42.666667 42.666667 0 0 1-38.144-76.288l426.666667-213.333333a42.666667 42.666667 0 0 1 38.144 0l426.666667 213.333333a42.666667 42.666667 0 0 1-38.144 76.288L512 218.368l-407.594667 203.776z" horiz-adv-x="1024" />
<glyph glyph-name="info" unicode="&#59519;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM554.666667 213.333333v170.666667a42.666667 42.666667 0 0 1-85.333334 0v-170.666667a42.666667 42.666667 0 0 1 85.333334 0zM512 554.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="instagram" unicode="&#59520;" d="M128 597.546667v-427.093334A170.453333 170.453333 0 0 1 298.453333 0h427.093334A170.453333 170.453333 0 0 1 896 170.453333V597.546667A170.453333 170.453333 0 0 1 725.546667 768H298.453333A170.453333 170.453333 0 0 1 128 597.546667z m-85.333333 0A255.786667 255.786667 0 0 0 298.453333 853.333333h427.093334A255.786667 255.786667 0 0 0 981.333333 597.546667v-427.093334A255.786667 255.786667 0 0 0 725.546667-85.333333H298.453333A255.786667 255.786667 0 0 0 42.666667 170.453333V597.546667zM640.426667 404.608a128 128 0 1 1-253.184-37.546667 128 128 0 0 1 253.226666 37.546667z m84.48 12.544a213.333333 213.333333 0 1 0-422.101334-62.592 213.333333 213.333333 0 0 0 422.058667 62.592zM725.333333 640m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="layout" unicode="&#59521;" d="M85.333333 682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM853.333333 554.666667V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88V554.666667h682.666666z m0-85.333334H426.666667v-426.666666h384.213333c23.466667 0 42.453333 18.986667 42.453333 42.453333V469.333333zM341.333333 42.66666699999996V469.333333H170.666667v-384.213333c0-23.466667 18.986667-42.453333 42.453333-42.453333H341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="link-" unicode="&#59522;" d="M640 554.666667h128a170.666667 170.666667 0 1 0 0-341.333334h-128a42.666667 42.666667 0 0 1 0-85.333333h128a256 256 0 1 1 0 512h-128a42.666667 42.666667 0 0 1 0-85.333333z m-256-341.333334H256a170.666667 170.666667 0 0 0 0 341.333334h128a42.666667 42.666667 0 1 1 0 85.333333H256a256 256 0 1 1 0-512h128a42.666667 42.666667 0 0 1 0 85.333333zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="life-buoy" unicode="&#59523;" d="M272.298667 83.96799999999996A382.378667 382.378667 0 0 1 512 0a382.378667 382.378667 0 0 1 239.701333 83.968l-122.026666 122.026667A212.352 212.352 0 0 0 512 170.66666699999996a212.352 212.352 0 0 0-117.632 35.328l-122.026667-122.026667z m-60.330667 60.330667l122.026667 122.026666A212.352 212.352 0 0 0 298.666667 384c0 43.52 13.013333 83.925333 35.328 117.632l-122.026667 122.026667A382.378667 382.378667 0 0 1 128 384c0-90.666667 31.402667-173.994667 83.968-239.701333z m60.330667 539.733333l122.026666-122.026667A212.352 212.352 0 0 0 512 597.333333c43.52 0 83.925333-13.013333 117.632-35.328l122.026667 122.026667A382.378667 382.378667 0 0 1 512 768a382.378667 382.378667 0 0 1-239.701333-83.968z m539.733333-60.330667l-122.026667-122.026666c22.314667-33.749333 35.328-74.197333 35.328-117.674667 0-43.52-13.013333-83.925333-35.328-117.632l122.026667-122.026667A382.378667 382.378667 0 0 1 896 384a382.378667 382.378667 0 0 1-83.968 239.701333zM512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 341.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
<glyph glyph-name="link" unicode="&#59524;" d="M392.533333 315.776a256 256 0 0 1 386.005334-27.648l128 128a256 256 0 1 1-361.472 362.496l-73.813334-73.386667a42.666667 42.666667 0 1 1 60.16-60.501333l73.386667 72.96a170.538667 170.538667 0 0 0 238.805333-2.517333 170.666667 170.666667 0 0 0 2.090667-239.232l-127.488-127.488A170.666667 170.666667 0 0 0 460.8 366.933333a42.666667 42.666667 0 1 1-68.352-51.114666zM631.466667 452.224a256 256 0 0 1-386.005334 27.648l-128-128a256 256 0 1 1 361.472-362.496l73.472 73.472a42.666667 42.666667 0 0 1-60.330666 60.330667l-72.96-72.96c-66.432-64.170667-172.885333-63.232-238.72 2.602666a170.666667 170.666667 0 0 0-2.090667 239.232l127.488 127.488a170.666667 170.666667 0 0 0 257.365333-18.432 42.666667 42.666667 0 1 1 68.352 51.114667z" horiz-adv-x="1024" />
<glyph glyph-name="log-in" unicode="&#59525;" d="M597.333333-85.333333h213.333334a128 128 0 0 1 128 128V725.333333a128 128 0 0 1-128 128h-213.333334a42.666667 42.666667 0 0 1 0-85.333333h213.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666666-42.666667h-213.333334a42.666667 42.666667 0 0 1 0-85.333333zM439.168 243.498667a42.666667 42.666667 0 0 1 60.330667-60.330667l170.666666 170.666667a42.666667 42.666667 0 0 1 0 60.330666l-170.666666 170.666667a42.666667 42.666667 0 0 1-60.330667-60.330667L579.669333 384l-140.501333-140.501333zM640 426.666667H128a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="list" unicode="&#59526;" d="M341.333333 597.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 1 1 0-85.333334zM341.333333 341.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334zM341.333333 85.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334zM128 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM128 384m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM128 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="lock" unicode="&#59527;" d="M256 469.333333V597.333333a256 256 0 1 0 512 0v-128h42.88A127.957333 127.957333 0 0 0 938.666667 341.674667v-299.349334A127.701333 127.701333 0 0 0 810.88-85.33333300000004H213.12A127.957333 127.957333 0 0 0 85.333333 42.325333v299.349334A127.701333 127.701333 0 0 0 213.12 469.333333H256z m-85.333333-127.658666v-299.349334c0-23.168 19.157333-42.325333 42.453333-42.325333h597.76c23.466667 0 42.453333 18.944 42.453333 42.325333v299.349334a42.624 42.624 0 0 1-42.453333 42.325333H213.12a42.368 42.368 0 0 1-42.453333-42.325333z m170.666666 127.786666h341.333334V597.333333a170.666667 170.666667 0 1 1-341.333334 0v-127.872z" horiz-adv-x="1024" />
<glyph glyph-name="log-out" unicode="&#59528;" d="M426.666667 0H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h213.333334a42.666667 42.666667 0 0 1 0 85.333333H213.333333a128 128 0 0 1-128-128v-682.666666a128 128 0 0 1 128-128h213.333334a42.666667 42.666667 0 0 1 0 85.333333zM695.168 243.498667a42.666667 42.666667 0 0 1 60.330667-60.330667l170.666666 170.666667a42.666667 42.666667 0 0 1 0 60.330666l-170.666666 170.666667a42.666667 42.666667 0 0 1-60.330667-60.330667L835.669333 384l-140.501333-140.501333zM896 426.666667H384a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="loader" unicode="&#59529;" d="M469.333333 810.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0zM469.333333 128v-170.666667a42.666667 42.666667 0 0 1 85.333334 0v170.666667a42.666667 42.666667 0 0 1-85.333334 0zM180.181333 655.488l120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667 60.330667l-120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667-60.330667zM662.741333 172.928l120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667 60.330667l-120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667-60.330667zM85.333333 341.333333h170.666667a42.666667 42.666667 0 0 1 0 85.333334H85.333333a42.666667 42.666667 0 0 1 0-85.333334zM768 341.333333h170.666667a42.666667 42.666667 0 0 1 0 85.333334h-170.666667a42.666667 42.666667 0 0 1 0-85.333334zM240.512 52.181333l120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667 60.330667l-120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667-60.330667zM723.072 534.741333l120.746667 120.746667a42.666667 42.666667 0 1 1-60.330667 60.330667l-120.746667-120.746667a42.666667 42.666667 0 1 1 60.330667-60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="mail" unicode="&#59530;" d="M170.666667 768h682.666666c70.485333 0 128-57.514667 128-128v-512c0-70.485333-57.514667-128-128-128H170.666667c-70.485333 0-128 57.514667-128 128V640c0 70.485333 57.514667 128 128 128z m720.768-108.970667A42.922667 42.922667 0 0 1 853.333333 682.666667H170.666667c-16.554667 0-31.061333-9.685333-38.101334-23.637334L512 393.429333l379.434667 265.6zM896 558.0799999999999l-359.552-251.648a42.666667 42.666667 0 0 0-48.896 0L128 558.037333V128c0-23.381333 19.285333-42.666667 42.666667-42.666667h682.666666c23.381333 0 42.666667 19.285333 42.666667 42.666667V558.0799999999999z" horiz-adv-x="1024" />
<glyph glyph-name="maximize-" unicode="&#59531;" d="M853.333333 725.333333v-213.333333a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333333zM170.666667 256a42.666667 42.666667 0 0 1-85.333334 0v-256a42.666667 42.666667 0 0 1 42.666667-42.666667h256a42.666667 42.666667 0 0 1 0 85.333334H170.666667v213.333333zM865.834667 798.165333l-298.666667-298.666666a42.666667 42.666667 0 1 1 60.330667-60.330667l298.666666 298.666667a42.666667 42.666667 0 1 1-60.330666 60.330666zM158.165333-30.165333l298.666667 298.666666a42.666667 42.666667 0 0 1-60.330667 60.330667l-298.666666-298.666667a42.666667 42.666667 0 0 1 60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="map" unicode="&#59532;" d="M640 613.6320000000001l-256 128v-587.264l256-128V613.6320000000001z m85.333333 1.621333v-584.405333l213.333334 121.898667V737.152L725.333333 615.253333zM319.530667 847.36a42.453333 42.453333 0 0 0 41.642666 1.066667l320.170667-160.042667 278.826667 159.317333A42.666667 42.666667 0 0 0 1024 810.666667v-682.666667a42.666667 42.666667 0 0 0-21.504-37.034667l-298.666667-170.666666a42.666667 42.666667 0 0 0-40.234666-1.109334l-320.938667 160.426667-278.826667-159.317333A42.666667 42.666667 0 0 0 0-42.66666699999996V640a42.666667 42.666667 0 0 0 21.504 37.034667L319.530667 847.36zM298.666667 737.152L85.333333 615.253333v-584.405333l213.333334 121.898667V737.152z" horiz-adv-x="1024" />
<glyph glyph-name="map-pin" unicode="&#59534;" d="M545.408-7.253333a1243.946667 1243.946667 0 0 1 127.616 116.608C786.218667 228.821333 853.333333 351.872 853.333333 469.333333a341.333333 341.333333 0 0 1-682.666666 0c0-117.461333 67.114667-240.469333 180.309333-359.978666A1243.946667 1243.946667 0 0 1 512-32.981333c10.325333 7.68 21.546667 16.213333 33.408 25.685333z m189.568 57.898666a1328.298667 1328.298667 0 0 0-181.504-158.976c-8.32-6.016-14.378667-10.24-17.792-12.501333a42.666667 42.666667 0 0 0-47.36 0c-3.413333 2.304-9.472 6.485333-17.792 12.501333a1328.298667 1328.298667 0 0 0-181.504 158.976C162.218667 184.490667 85.333333 325.461333 85.333333 469.333333 85.333333 704.981333 276.352 896 512 896s426.666667-191.018667 426.666667-426.666667c0-143.872-76.885333-284.842667-203.690667-418.688zM512 298.666667a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="menu" unicode="&#59535;" d="M128 341.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 0 1 0-85.333334zM128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM128 85.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="message-circle" unicode="&#59536;" d="M357.717333 121.557333a42.666667 42.666667 0 0 0 32.725334-2.389333A314.965333 314.965333 0 0 1 533.333333 85.333333a320.085333 320.085333 0 0 1 286.165334 177.066667A314.88 314.88 0 0 1 853.333333 405.248l0.085334 19.114667C844.458667 586.752 714.752 716.373333 554.666667 725.333333h-21.461334a315.093333 315.093333 0 0 1-142.933333-33.92A320 320 0 0 1 213.333333 405.205333a314.88 314.88 0 0 1 33.834667-142.762666 42.666667 42.666667 0 0 0 2.389333-32.725334L195.413333 67.413333l162.261334 54.101334z m538.026667 102.570667A405.333333 405.333333 0 0 0 533.504 0a400.213333 400.213333 0 0 0-165.12 35.157333L141.525333-40.533333a42.666667 42.666667 0 0 0-53.973333 53.973333l75.648 226.901333A405.248 405.248 0 0 0 351.957333 767.701333 400.085333 400.085333 0 0 0 533.333333 810.666667l23.68-0.085334C762.88 799.232 927.232 634.88 938.666667 426.666667v-21.290667a400.042667 400.042667 0 0 0-42.88-181.248z" horiz-adv-x="1024" />
<glyph glyph-name="message-square" unicode="&#59537;" d="M268.501333 200.832A42.666667 42.666667 0 0 0 298.666667 213.333333h512a42.666667 42.666667 0 0 1 42.666666 42.666667V682.666667a42.666667 42.666667 0 0 1-42.666666 42.666666H213.333333a42.666667 42.666667 0 0 1-42.666666-42.666666v-579.669334l97.834666 97.834667z m-110.336-230.997333C131.285333-57.045333 85.333333-38.016 85.333333 0V682.666667a128 128 0 0 0 128 128h597.333334a128 128 0 0 0 128-128v-426.666667a128 128 0 0 0-128-128H316.330667l-158.165334-158.165333z" horiz-adv-x="1024" />
<glyph glyph-name="minimize-" unicode="&#59538;" d="M384 42.666667a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-42.666666 42.666666H170.666667a42.666667 42.666667 0 0 1 0-85.333333h213.333333v-213.333333zM640 725.333333a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 42.666666-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333h-213.333333V725.333333zM627.498667 439.168l298.666666 298.666667a42.666667 42.666667 0 1 1-60.330666 60.330666l-298.666667-298.666666a42.666667 42.666667 0 1 1 60.330667-60.330667zM158.165333-30.165333l298.666667 298.666666a42.666667 42.666667 0 0 1-60.330667 60.330667l-298.666666-298.666667a42.666667 42.666667 0 0 1 60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="mic-off" unicode="&#59539;" d="M13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038zM341.683574 511.671902v-127.934381a170.579174 170.579174 0 0 1 291.136005-120.599476 42.644793 42.644793 0 0 1-60.299738 60.385028A85.289587 85.289587 0 0 0 426.973161 383.737521V511.671902a42.644793 42.644793 0 1 1-85.289587 0z m341.158348-14.49923V724.895869a170.579174 170.579174 0 0 1-337.746764 34.07319 42.644793 42.644793 0 0 1 83.583795-16.972628 85.289587 85.289587 0 0 0 168.873382-17.057917V497.172672a42.644793 42.644793 0 0 1 85.289587 0zM695.038333 202.497149A255.868761 255.868761 0 0 0 256.393987 383.439008V469.027108a42.644793 42.644793 0 1 1-85.289587 0v-85.289587a341.158348 341.158348 0 0 1 584.830698-240.943083 42.644793 42.644793 0 0 1-60.896765 59.702711zM768.131509 469.027108v-85.289587c0-15.053612-1.364633-30.064579-4.008611-44.904967a42.644793 42.644793 0 1 1 83.924954-15.096257A341.158348 341.158348 0 0 1 853.421095 383.737521V469.027108a42.644793 42.644793 0 0 1-85.289586 0zM469.617955 85.223967v-170.579174a42.644793 42.644793 0 0 1 85.289586 0v170.579174a42.644793 42.644793 0 0 1-85.289586 0zM341.683574-128h341.158348a42.644793 42.644793 0 0 1 0 85.289587H341.683574a42.644793 42.644793 0 0 1 0-85.289587z" horiz-adv-x="1024" />
<glyph glyph-name="minus-circle" unicode="&#59540;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="mic" unicode="&#59541;" d="M682.666667 725.333333v-341.333333a170.666667 170.666667 0 1 0-341.333334 0V725.333333a170.666667 170.666667 0 1 0 341.333334 0z m-170.666667 85.333334a85.333333 85.333333 0 0 1-85.333333-85.333334v-341.333333a85.333333 85.333333 0 1 1 170.666666 0V725.333333a85.333333 85.333333 0 0 1-85.333333 85.333334zM768 469.333333v-85.333333a256 256 0 0 0-512 0v85.333333a42.666667 42.666667 0 1 1-85.333333 0v-85.333333a341.333333 341.333333 0 0 1 682.666666 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.333333 85.333333v-170.666666a42.666667 42.666667 0 0 1 85.333334 0v170.666666a42.666667 42.666667 0 0 1-85.333334 0zM341.333333-128h341.333334a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="minus-square" unicode="&#59542;" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="minus" unicode="&#59543;" d="M213.333333 341.333333h597.333334a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="moon" unicode="&#59544;" d="M476.202667 348.245333a342.058667 342.058667 0 0 0-79.786667 358.229334 341.973333 341.973333 0 1 1 438.016-438.016 342.058667 342.058667 0 0 0-358.229333 79.786666z m462.250666-2.773333A427.477333 427.477333 0 1 0 473.472 810.496c36.778667 3.413333 60.245333-38.272 38.314667-67.968a256.469333 256.469333 0 0 1 358.698666-358.741333c29.696 21.973333 71.381333-1.536 67.968-38.314667z" horiz-adv-x="1024" />
<glyph glyph-name="monitor" unicode="&#59545;" d="M554.666667 128v-85.333333h128a42.666667 42.666667 0 0 0 0-85.333334H341.333333a42.666667 42.666667 0 0 0 0 85.333334h128v85.333333H170.24A127.914667 127.914667 0 0 0 42.666667 256.256V682.410667A128.128 128.128 0 0 0 170.24 810.666667h683.52A127.914667 127.914667 0 0 0 981.333333 682.410667v-426.154667A128.128 128.128 0 0 0 853.76 128H554.666667zM128 682.410667v-426.154667A42.581333 42.581333 0 0 1 170.24 213.33333300000004h683.52c23.04 0 42.24 19.285333 42.24 42.922667V682.410667A42.581333 42.581333 0 0 1 853.76 725.333333H170.24C147.2 725.333333 128 706.048 128 682.410667z" horiz-adv-x="1024" />
<glyph glyph-name="more-vertical" unicode="&#59546;" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM512 597.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333334a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333zM512-85.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="more-horizontal" unicode="&#59547;" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM853.333333 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM170.666667 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="move" unicode="&#59548;" d="M243.498667 481.834667a42.666667 42.666667 0 0 1-60.330667 60.330666l-128-128a42.666667 42.666667 0 0 1 0-60.330666l128-128a42.666667 42.666667 0 1 1 60.330667 60.330666L145.664 384l97.834667 97.834667zM609.834667 652.501333a42.666667 42.666667 0 0 1 60.330666 60.330667l-128 128a42.666667 42.666667 0 0 1-60.330666 0l-128-128a42.666667 42.666667 0 0 1 60.330666-60.330667L512 750.336l97.834667-97.834667zM414.165333 115.498667a42.666667 42.666667 0 1 1-60.330666-60.330667l128-128a42.666667 42.666667 0 0 1 60.330666 0l128 128a42.666667 42.666667 0 0 1-60.330666 60.330667L512 17.664l-97.834667 97.834667zM780.501333 286.165333a42.666667 42.666667 0 0 1 60.330667-60.330666l128 128a42.666667 42.666667 0 0 1 0 60.330666l-128 128a42.666667 42.666667 0 0 1-60.330667-60.330666L878.336 384l-97.834667-97.834667zM85.333333 341.333333h853.333334a42.666667 42.666667 0 0 1 0 85.333334H85.333333a42.666667 42.666667 0 0 1 0-85.333334zM469.333333 810.666667v-853.333334a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="music" unicode="&#59549;" d="M426.666667 646.528V85.33333300000004a128 128 0 0 0-128-128H213.333333a128 128 0 0 0 0 256h128V682.666667a42.666667 42.666667 0 0 0 35.669334 42.069333l512 85.333333A42.666667 42.666667 0 0 0 938.666667 768v-597.333333a128 128 0 0 0-128-128h-85.333334a128 128 0 0 0 0 256h128V717.653333L426.666667 646.528zM341.333333 128H213.333333a42.666667 42.666667 0 0 1 0-85.333333h85.333334a42.666667 42.666667 0 0 1 42.666666 42.666666v42.666667z m512 85.333333h-128a42.666667 42.666667 0 0 1 0-85.333333h85.333334a42.666667 42.666667 0 0 1 42.666666 42.666667v42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="navigation-" unicode="&#59550;" d="M293.845333 52.48l196.992 112.554667a42.666667 42.666667 0 0 0 42.325334 0l196.992-112.554667L512 644.565333 293.845333 52.48z m-59.306666-132.181333c-34.602667-19.754667-75.008 14.421333-61.226667 51.797333l298.666667 810.666667c13.696 37.205333 66.346667 37.205333 80.042666 0l298.666667-810.666667c13.781333-37.376-26.624-71.552-61.184-51.797333L512 78.848l-277.504-158.549333z" horiz-adv-x="1024" />
<glyph glyph-name="navigation" unicode="&#59551;" d="M479.701333 340.053333a42.666667 42.666667 0 0 0 31.018667-31.018666l56.405333-225.706667 281.856 594.986667-594.986666-281.856 225.706666-56.405334z m-362.069333 2.56c-38.826667 9.728-44.117333 62.805333-7.893333 79.957334l810.666666 384c36.266667 17.152 73.984-20.608 56.832-56.832l-384-810.666667c-17.152-36.224-70.229333-30.933333-79.957333 7.893333l-79.146667 316.501334-316.501333 79.146666z" horiz-adv-x="1024" />
<glyph glyph-name="octagon" unicode="&#59552;" d="M128 542.976v-317.952L353.024 0h317.952L896 225.024V542.976L670.976 768H353.024L128 542.976zM335.36 853.333333h353.28a42.666667 42.666667 0 0 0 30.165333-12.501333l250.026667-250.026667A42.666667 42.666667 0 0 0 981.333333 560.64v-353.28a42.666667 42.666667 0 0 0-12.501333-30.165333l-250.026667-250.026667a42.666667 42.666667 0 0 0-30.165333-12.501333H335.36a42.666667 42.666667 0 0 0-30.165333 12.501333l-250.026667 250.026667A42.666667 42.666667 0 0 0 42.666667 207.36V560.64a42.666667 42.666667 0 0 0 12.501333 30.165333l250.026667 250.026667A42.666667 42.666667 0 0 0 335.36 853.333333z" horiz-adv-x="1024" />
<glyph glyph-name="package" unicode="&#59553;" d="M568.96 872.362667l341.333333-170.666667A128 128 0 0 0 981.333333 587.093333v-406.613333a128 128 0 0 0-70.954666-114.517333l-341.333334-170.666667a128 128 0 0 0-114.517333 0L113.066667 66.00533299999995A127.872 127.872 0 0 0 42.666667 180.90666699999997V587.093333a128 128 0 0 0 70.954666 114.517334L455.04 872.362667a128 128 0 0 0 113.92 0z m274.090667-232.490667l-312.106667 156.074667a42.624 42.624 0 0 1-37.845333 0L394.282667 746.624 725.333333 581.034667l117.717334 58.88zM896 570.965333l-151.125333-75.562666a42.837333 42.837333 0 0 0-0.853334-0.426667L554.666667 400.298667v-416.810667l317.653333 158.848A42.666667 42.666667 0 0 1 896 180.48000000000002V570.965333zM469.333333-16.725332999999978v417.024l-341.333333 170.666666v-390.357333c-0.128-16.213333 8.96-31.104 23.338667-38.357333L469.333333-16.725332999999978zM298.88 698.837333L180.949333 639.914667 512 474.368 629.930667 533.333333 298.88 698.88z" horiz-adv-x="1024" />
<glyph glyph-name="pause-circle" unicode="&#59554;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 256V512a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 85.333333 0zM640 256V512a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="pause" unicode="&#59555;" d="M298.666667 682.666667v-597.333334h85.333333V682.666667H298.666667zM256 768h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666666-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM640 682.666667v-597.333334h85.333333V682.666667h-85.333333z m-42.666667 85.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="percent" unicode="&#59556;" d="M780.501333 712.832l-597.333333-597.333333a42.666667 42.666667 0 0 1 60.330667-60.330667l597.333333 597.333333a42.666667 42.666667 0 1 1-60.330667 60.330667zM277.333333 469.333333a149.333333 149.333333 0 1 0 0 298.666667 149.333333 149.333333 0 0 0 0-298.666667z m0 85.333334a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM746.666667 0a149.333333 149.333333 0 1 0 0 298.666667 149.333333 149.333333 0 0 0 0-298.666667z m0 85.333333a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
<glyph glyph-name="phone-call" unicode="&#59557;" d="M981.333333 3.5839999999999463a128 128 0 0 0-140.288-127.914667 886.613333 886.613333 0 0 0-386.474666 137.386667 874.24 874.24 0 0 0-268.928 268.8A887.68 887.68 0 0 0 47.957333 671.146667 128 128 0 0 0 175.36 810.666667H302.933333a128.085333 128.085333 0 0 0 128.042667-110.506667c4.992-37.76 14.250667-74.837333 27.52-110.421333a128.085333 128.085333 0 0 0-28.970667-135.253334l-30.592-30.549333a640 640 0 0 1 195.669334-195.669333l30.72 30.762666a128 128 0 0 0 134.997333 28.842667c35.669333-13.312 72.746667-22.570667 110.933333-27.605333A128 128 0 0 0 981.333333 130.986667v-127.36z m-85.333333 127.829333c0.554667 22.698667-15.232 41.344-36.266667 44.330667a590.72 590.72 0 0 0-129.365333 32.213333 42.581333 42.581333 0 0 1-44.8-9.429333l-54.186667-54.186667a42.666667 42.666667 0 0 0-51.285333-6.912 725.333333 725.333333 0 0 0-272 272 42.666667 42.666667 0 0 0 6.912 51.242667l54.016 54.016a42.666667 42.666667 0 0 1 9.557333 45.098667 589.525333 589.525333 0 0 0-32.128 128.853333A42.794667 42.794667 0 0 1 303.36 725.333333h-128a42.666667 42.666667 0 0 1-42.496-45.824 802.133333 802.133333 0 0 1 124.586667-351.573333 789.802667 789.802667 0 0 1 243.2-243.072 801.024 801.024 0 0 1 348.842666-124.288A42.666667 42.666667 0 0 1 896 3.413332999999966v128zM633.984 598.144a42.666667 42.666667 0 0 0 16.298667 83.712 256 256 0 0 0 202.24-202.24 42.666667 42.666667 0 1 0-83.712-16.298667 170.666667 170.666667 0 0 1-134.826667 134.826667z m3.413333 170.112a42.666667 42.666667 0 1 0 9.429334 84.821333 426.666667 426.666667 0 0 0 376.917333-376.405333 42.666667 42.666667 0 0 0-84.821333-9.557333 341.333333 341.333333 0 0 1-301.482667 301.141333z" horiz-adv-x="1024" />
<glyph glyph-name="phone-forwarded" unicode="&#59558;" d="M780.478569 499.510231a42.665422 42.665422 0 1 1 60.328907-60.328907l170.661689 170.661689a42.665422 42.665422 0 0 1 0 60.328907l-170.661689 170.661689a42.665422 42.665422 0 0 1-60.328907-60.328907L920.975805 640.007466l-140.497236-140.497235zM639.981334 597.342044h341.323378a42.665422 42.665422 0 0 1 0 85.330845h-341.323378a42.665422 42.665422 0 0 1 0-85.330845zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
<glyph glyph-name="phone-missed" unicode="&#59559;" d="M951.140258 840.833609l-255.992533-255.992534a42.665422 42.665422 0 1 1 60.328907-60.328907l255.992533 255.992534a42.665422 42.665422 0 1 1-60.328907 60.328907zM695.147725 780.504702l255.992533-255.992534a42.665422 42.665422 0 0 1 60.328907 60.328907l-255.992533 255.992534a42.665422 42.665422 0 0 1-60.328907-60.328907zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
<glyph glyph-name="phone-off" unicode="&#59560;" d="M485.596263 358.022711a42.644793 42.644793 0 1 1-60.299738-60.299738 724.961489 724.961489 0 0 1 154.502087-117.78492 42.644793 42.644793 0 0 1 51.216397 6.908457l54.158887 54.158888a42.559504 42.559504 0 0 0 44.819678 9.381854c41.791898-15.56535 85.119008-26.354482 129.256369-32.154174a42.559504 42.559504 0 0 0 36.290719-42.644793v-128.318184a42.730083 42.730083 0 0 0-46.482825-42.815373 800.613352 800.613352 0 0 0-348.663831 124.224284c-49.041512 31.130699-94.244994 67.378774-135.056061 108.232485a42.644793 42.644793 0 1 1-60.299738-60.299737 870.806682 870.806682 0 0 1 149.299422-119.703936 886.158808 886.158808 0 0 1 386.276539-137.316235A127.93438 127.93438 0 0 1 980.830249 47.44068V175.204481a127.806446 127.806446 0 0 1-110.023567 127.507933 505.895185 505.895185 0 0 0-110.876463 27.591181 127.93438 127.93438 0 0 1-134.885482-28.82788l-30.746896-30.746896a639.671902 639.671902 0 0 0-108.701578 87.293892z m-228.490803 14.371295a801.295669 801.295669 0 0 0-124.309573 349.431438A42.644793 42.644793 0 0 0 175.312746 767.540662H303.204481c21.834134 0.213224 40.086106-15.48006 43.071242-36.674522 5.757047-43.753558 16.54618-87.080668 32.111529-128.787276a42.644793 42.644793 0 0 0-9.552434-45.075547L314.84651 503.015009a42.644793 42.644793 0 0 1 60.299738-60.299738l54.158888 54.158887a128.01967 128.01967 0 0 1 28.998459 135.141351A504.70113 504.70113 0 0 0 430.712414 742.380234a128.01967 128.01967 0 0 1-127.934381 110.40737H175.270101a127.93438 127.93438 0 0 1-127.337353-139.448474 887.310217 887.310217 0 0 1 137.614748-387.385304 42.644793 42.644793 0 0 1 71.557964 46.397535zM950.68038 882.980118l-938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738-60.299738l938.185456 938.185456A42.644793 42.644793 0 1 1 950.68038 882.980118z" horiz-adv-x="1024" />
<glyph glyph-name="phone-incoming" unicode="&#59561;" d="M725.312178 768.003733a42.665422 42.665422 0 0 1-85.330844 0v-255.992533a42.665422 42.665422 0 0 1 42.665422-42.665423h255.992534a42.665422 42.665422 0 0 1 0 85.330845h-213.327112V768.003733zM951.140258 840.833609l-298.657955-298.657956a42.665422 42.665422 0 1 1 60.328907-60.328907l298.657955 298.657956a42.665422 42.665422 0 1 1-60.328907 60.328907zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
<glyph glyph-name="phone" unicode="&#59562;" d="M895.573333 171.818667a43.050667 43.050667 0 0 1-36.522666 44.458666 594.56 594.56 0 0 0-129.962667 32.341334 42.837333 42.837333 0 0 1-45.098667-9.472l-54.442666-54.357334c-13.653333-13.653333-34.730667-16.469333-51.541334-6.954666a728.405333 728.405333 0 0 0-273.365333 272.896 42.752 42.752 0 0 0 6.954667 51.456l54.272 54.186666c11.776 11.904 15.573333 29.525333 9.642666 45.226667-15.658667 41.898667-26.496 85.376-32.298666 129.28-3.029333 21.333333-21.376 37.034667-43.306667 36.821333H171.264a42.922667 42.922667 0 0 1-42.709333-45.994666 803.882667 803.882667 0 0 1 125.184-352.682667 793.130667 793.130667 0 0 1 244.48-243.925333 805.973333 805.973333 0 0 1 350.592-124.672 42.922667 42.922667 0 0 1 46.72 42.965333v128.426667zM981.333333 43.562667a128.341333 128.341333 0 0 0-41.685333-95.146667 129.194667 129.194667 0 0 0-99.328-33.194667 892.117333 892.117333 0 0 0-388.48 137.813334 877.909333 877.909333 0 0 0-270.293333 269.738666 889.6 889.6 0 0 0-138.368 390.570667 128.298667 128.298667 0 0 0 33.109333 98.133333A128.768 128.768 0 0 0 171.221333 853.333333H299.52a128.682667 128.682667 0 0 0 128.682667-110.848c5.034667-37.888 14.293333-75.093333 27.648-110.805333 17.664-46.933333 6.4-99.84-29.098667-135.68l-30.762667-30.72a642.688 642.688 0 0 1 196.693334-196.266667l30.890666 30.848a128.768 128.768 0 0 0 135.637334 28.928c35.84-13.354667 73.130667-22.613333 111.488-27.690666a128.512 128.512 0 0 0 110.634666-129.749334v-127.786666z" horiz-adv-x="1024" />
<glyph glyph-name="phone-outgoing" unicode="&#59563;" d="M938.63929 768.003733v-213.327111a42.665422 42.665422 0 0 1 85.330844 0V810.669155a42.665422 42.665422 0 0 1-42.665422 42.665423h-255.992534a42.665422 42.665422 0 0 1 0-85.330845h213.327112zM712.81121 481.846746l298.657955 298.657956a42.665422 42.665422 0 1 1-60.328907 60.328907l-298.657955-298.657956a42.665422 42.665422 0 1 1 60.328907-60.328907zM895.973867 131.435633c0.55465 22.698005-15.231556 41.342794-36.265608 44.329374a590.702771 590.702771 0 0 0-129.361561 32.212394 42.580091 42.580091 0 0 1-44.798693-9.429059l-54.185086-54.185086a42.665422 42.665422 0 0 0-51.283838-6.911798 725.312178 725.312178 0 0 0-271.992067 271.992067 42.665422 42.665422 0 0 0 6.911799 51.241172l54.014424 54.014424a42.665422 42.665422 0 0 1 9.557055 45.097352 589.508139 589.508139 0 0 0-32.127063 128.849575A42.793419 42.793419 0 0 1 303.351152 725.338311h-127.996267a42.665422 42.665422 0 0 1-42.49476-45.822664 802.109938 802.109938 0 0 1 124.583033-351.563079 789.779631 789.779631 0 0 1 243.192907-243.064911 801.000637 801.000637 0 0 1 348.832492-124.284375A42.665422 42.665422 0 0 1 895.973867 3.439366v127.996267z m85.330845-130.513527a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
<glyph glyph-name="pie-chart" unicode="&#59564;" d="M865.664 234.666667A384 384 0 1 0 358.4 736.085333a42.666667 42.666667 0 0 1-34.133333 78.250667A469.333333 469.333333 0 1 1 944.256 201.386667a42.666667 42.666667 0 0 1-78.592 33.194666zM981.333333 384a42.666667 42.666667 0 0 0-42.666666-42.666667H512a42.666667 42.666667 0 0 0-42.666667 42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666 469.333333 469.333333 0 0 0 469.333333-469.333333z m-197.802666 271.530667A384 384 0 0 1 554.666667 765.610667V426.666667h338.944a384 384 0 0 1-110.08 228.864z" horiz-adv-x="1024" />
<glyph glyph-name="play-circle" unicode="&#59565;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 293.077333L605.738667 384 469.333333 474.922667v-181.845334z m-18.986666 297.088l256-170.666666a42.666667 42.666667 0 0 0 0-70.997334l-256-170.666666A42.666667 42.666667 0 0 0 384 213.333333V554.666667a42.666667 42.666667 0 0 0 66.346667 35.498666z" horiz-adv-x="1024" />
<glyph glyph-name="play" unicode="&#59566;" d="M256 78.165333L731.733333 384 256 689.834667v-611.669334z m-19.626667 725.76l597.333334-384a42.666667 42.666667 0 0 0 0-71.808l-597.333334-384A42.666667 42.666667 0 0 0 170.666667 0V768a42.666667 42.666667 0 0 0 65.706666 35.882667z" horiz-adv-x="1024" />
<glyph glyph-name="plus-square" unicode="&#59567;" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM469.333333 554.666667v-341.333334a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="plus-circle" unicode="&#59568;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 554.666667v-341.333334a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="plus" unicode="&#59569;" d="M469.333333 682.666667v-597.333334a42.666667 42.666667 0 0 1 85.333334 0V682.666667a42.666667 42.666667 0 0 1-85.333334 0zM213.333333 341.333333h597.333334a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="pocket" unicode="&#59570;" d="M128 682.666667v-256a384 384 0 1 1 768 0V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666z m725.333333 128a128 128 0 0 0 128-128v-256c0-259.2-210.133333-469.333333-469.333333-469.333334A469.333333 469.333333 0 0 0 42.666667 426.666667V682.666667a128 128 0 0 0 128 128h682.666666zM371.498667 499.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l170.666667-170.666667a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666667a42.666667 42.666667 0 1 1-60.330667 60.330667L512 358.997333 371.498667 499.498667z" horiz-adv-x="1024" />
<glyph glyph-name="printer" unicode="&#59571;" d="M298.666667 554.666667h426.666666V768H298.666667v-213.333333zM213.333333 554.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h512a42.666667 42.666667 0 0 0 42.666667-42.666666v-256h42.666666a128 128 0 0 0 128-128v-213.333334a128 128 0 0 0-128-128h-85.333333a42.666667 42.666667 0 0 0 0 85.333334h85.333333a42.666667 42.666667 0 0 1 42.666667 42.666666v213.333334a42.666667 42.666667 0 0 1-42.666667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-213.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h85.333333a42.666667 42.666667 0 0 0 0-85.333334H170.666667a128 128 0 0 0-128 128v213.333334a128 128 0 0 0 128 128h42.666666zM298.666667 0h426.666666v256H298.666667v-256z m-42.666667 341.333333h512a42.666667 42.666667 0 0 0 42.666667-42.666666v-341.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H256a42.666667 42.666667 0 0 0-42.666667 42.666666v341.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="power" unicode="&#59572;" d="M753.408 582.528a341.333333 341.333333 0 1 0-482.816 0 42.666667 42.666667 0 1 1-60.330667 60.330667c-166.613333-166.656-166.570667-436.778667 0.042667-603.349334 166.613333-166.613333 436.778667-166.613333 603.392 0 166.613333 166.570667 166.656 436.693333 0.042667 603.349334a42.666667 42.666667 0 1 1-60.330667-60.330667zM469.333333 810.666667v-426.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="radio" unicode="&#59573;" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM662.741333 534.741333a213.333333 213.333333 0 0 0 0-301.866666 42.666667 42.666667 0 1 1 60.330667-60.373334 298.666667 298.666667 0 0 1 0 422.613334 42.666667 42.666667 0 1 1-60.330667-60.373334z m-301.482666-301.482666a213.333333 213.333333 0 0 0 0 301.866666 42.666667 42.666667 0 0 1-60.330667 60.373334 298.666667 298.666667 0 0 1 0-422.613334 42.666667 42.666667 0 1 1 60.330667 60.373334z m422.229333 422.229333a384 384 0 0 0 0-542.976 42.666667 42.666667 0 1 1 60.330667-60.330667c183.210667 183.253333 183.210667 480.384 0 663.637334a42.666667 42.666667 0 1 1-60.330667-60.330667zM240.512 112.512a384 384 0 0 0 0 542.976 42.666667 42.666667 0 0 1-60.330667 60.330667c-183.210667-183.253333-183.210667-480.384 0-663.637334a42.666667 42.666667 0 1 1 60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="repeat" unicode="&#59574;" d="M695.074022 542.346875a42.644776 42.644776 0 1 1 60.299713-60.299713l170.579103 170.579103a42.644776 42.644776 0 0 1 0 60.299713l-170.579103 170.579103a42.644776 42.644776 0 0 1-60.299713-60.299713L835.503268 682.776122l-140.429246-140.429247zM170.841795 426.907468V512.197019a127.934327 127.934327 0 0 0 127.934327 127.934327h597.026859a42.644776 42.644776 0 0 1 0 85.289551H298.776122a213.223878 213.223878 0 0 1-213.223879-213.223878v-85.289551a42.644776 42.644776 0 0 1 85.289552 0zM328.925978 226.178508a42.644776 42.644776 0 0 1-60.299713 60.299713l-170.579103-170.579103a42.644776 42.644776 0 0 1 0-60.299712l170.579103-170.579103a42.644776 42.644776 0 1 1 60.299713 60.299713L188.496732 85.749262l140.429246 140.429246zM853.158205 341.617916v-85.289551a127.934327 127.934327 0 0 0-127.934327-127.934327H128.197019a42.644776 42.644776 0 0 1 0-85.289552h597.026859a213.223878 213.223878 0 0 1 213.223879 213.223879v85.289551a42.644776 42.644776 0 0 1-85.289552 0z" horiz-adv-x="1024" />
<glyph glyph-name="refresh-ccw" unicode="&#59575;" d="M85.378987 725.333333a42.666667 42.666667 0 1 1-85.333334 0v-256a42.666667 42.666667 0 0 1 42.666667-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333H85.378987V725.333333zM938.71232 42.666667a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-42.666666 42.666666h-256a42.666667 42.666667 0 0 1 0-85.333333h213.333333v-213.333333zM914.52032 526.250667a426.666667 426.666667 0 0 1-704 159.274666L13.485653 500.437333a42.666667 42.666667 0 0 1 58.453334-62.208l197.973333 186.026667a341.973333 341.973333 0 0 0 317.696 92.586667 341.333333 341.333333 0 0 0 246.442667-219.093334 42.666667 42.666667 0 0 1 80.469333 28.501334z m37.632-196.48l-197.973333-186.026667a341.973333 341.973333 0 0 0-317.696-92.586667 341.333333 341.333333 0 0 0-246.442667 219.093334 42.666667 42.666667 0 0 1-80.469333-28.501334 426.666667 426.666667 0 0 1 704-159.274666l197.034666 185.088a42.666667 42.666667 0 0 1-58.453333 62.208z" horiz-adv-x="1024" />
<glyph glyph-name="rewind" unicode="&#59576;" d="M426.666667 595.413333L154.837333 384 426.666667 172.586667v422.826666z m16.469333-543.744l-384 298.666667a42.666667 42.666667 0 0 0 0 67.328l384 298.666667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-68.864-33.706666zM896 172.586667v422.826666L624.170667 384 896 172.586667z m16.469333-120.917334l-384 298.666667a42.666667 42.666667 0 0 0 0 67.328l384 298.666667A42.666667 42.666667 0 0 0 981.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-68.864-33.706666z" horiz-adv-x="1024" />
<glyph glyph-name="rotate-ccw" unicode="&#59577;" d="M128 725.333333a42.666667 42.666667 0 1 1-85.333333 0v-256a42.666667 42.666667 0 0 1 42.666666-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333H128V725.333333zM152.192 242.218667a426.666667 426.666667 0 1 1 100.949333 443.733333l-197.034666-185.173333a42.666667 42.666667 0 1 1 58.453333-62.165334l197.973333 186.026667a341.76 341.76 0 0 0 407.210667 58.069333 341.333333 341.333333 0 1 0-487.082667-412.16 42.666667 42.666667 0 1 1-80.469333-28.330666z" horiz-adv-x="1024" />
<glyph glyph-name="refresh-cw" unicode="&#59578;" d="M725.378987 512a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 42.666666 42.666666V725.333333a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333333zM85.378987 256h213.333333a42.666667 42.666667 0 0 1 0 85.333333H42.71232a42.666667 42.666667 0 0 1-42.666667-42.666666v-256a42.666667 42.666667 0 0 1 85.333334 0v213.333333zM190.04032 497.749333a341.333333 341.333333 0 0 0 563.2 127.445334l198.912-186.965334a42.666667 42.666667 0 0 1 58.453333 62.208l-197.973333 186.026667A426.026667 426.026667 0 0 1 417.666987 800a426.666667 426.666667 0 0 1-308.053334-273.792 42.666667 42.666667 0 0 1 80.426667-28.501333zM13.485653 267.562667l197.973334-186.026667a426.026667 426.026667 0 0 1 394.965333-113.578667 426.666667 426.666667 0 0 1 308.053333 273.792 42.666667 42.666667 0 0 1-80.426666 28.501334 341.333333 341.333333 0 0 0-563.2-127.445334l-198.912 186.965334a42.666667 42.666667 0 0 1-58.453334-62.208z" horiz-adv-x="1024" />
<glyph glyph-name="rotate-cw" unicode="&#59579;" d="M682.666667 512a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 42.666666 42.666666V725.333333a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333333zM791.338667 270.208a341.333333 341.333333 0 1 0-80.384 354.986667l198.442666-186.922667a42.666667 42.666667 0 0 1 58.538667 62.122667l-197.546667 186.026666c-133.418667 133.546667-340.48 162.901333-506.88 71.125334a426.666667 426.666667 0 1 1 608.298667-515.754667 42.666667 42.666667 0 1 1-80.469333 28.416z" horiz-adv-x="1024" />
<glyph glyph-name="save" unicode="&#59580;" d="M341.333333 725.333333v-128h298.666667a42.666667 42.666667 0 0 0 0-85.333333H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333H213.333333a42.666667 42.666667 0 0 1-42.666666-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666666-42.666666h42.666667v298.666666a42.666667 42.666667 0 0 0 42.666667 42.666667h426.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666666h42.666667a42.666667 42.666667 0 0 1 42.666666 42.666666V537.002667L665.002667 725.333333H341.333333z m341.333334-682.666666v256H341.333333v-256h341.333334z m128-85.333334H213.333333a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h469.333334a42.666667 42.666667 0 0 0 30.165333-12.501334l213.333333-213.333333A42.666667 42.666667 0 0 0 938.666667 554.666667v-469.333334a128 128 0 0 0-128-128z" horiz-adv-x="1024" />
<glyph glyph-name="search" unicode="&#59581;" d="M732.842667 223.48800000000006l193.322666-193.28a42.666667 42.666667 0 0 0-60.330666-60.373333l-193.322667 193.322666a362.666667 362.666667 0 1 0 60.330667 60.330667zM448 170.66666699999996a277.333333 277.333333 0 1 1 0 554.666666 277.333333 277.333333 0 0 1 0-554.666666z" horiz-adv-x="1024" />
<glyph glyph-name="server" unicode="&#59582;" d="M128 725.418667v-170.837334A42.24 42.24 0 0 1 170.24 512h683.52c23.125333 0 42.24 19.157333 42.24 42.581333V725.418667A42.24 42.24 0 0 1 853.76 768H170.24a42.624 42.624 0 0 1-42.24-42.581333z m-85.333333 0A127.957333 127.957333 0 0 0 170.24 853.333333h683.52A127.573333 127.573333 0 0 0 981.333333 725.418667v-170.837334A127.957333 127.957333 0 0 0 853.76 426.666667H170.24A127.573333 127.573333 0 0 0 42.666667 554.581333V725.418667zM128 213.418667v-170.837334a42.24 42.24 0 0 1 42.24-42.581333h683.52c23.125333 0 42.24 19.157333 42.24 42.581333v170.837334a42.24 42.24 0 0 1-42.24 42.581333H170.24a42.624 42.624 0 0 1-42.24-42.581333z m-85.333333 0A127.957333 127.957333 0 0 0 170.24 341.333333h683.52A127.573333 127.573333 0 0 0 981.333333 213.418667v-170.837334A127.957333 127.957333 0 0 0 853.76-85.333333H170.24A127.573333 127.573333 0 0 0 42.666667 42.581333v170.837334zM298.666667 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM298.666667 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="scissors" unicode="&#59583;" d="M298.666667 469.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM298.666667-42.66666699999996a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM494.336 384L358.954667 519.381333a42.666667 42.666667 0 0 0 60.330666 60.330667L554.666667 444.330667l311.168 311.168a42.666667 42.666667 0 0 0 60.330666-60.330667l-506.88-506.88a42.666667 42.666667 0 1 0-60.330666 60.330667L494.336 384z m135.594667-136.021333a42.666667 42.666667 0 0 0 60.245333 60.416l235.946667-235.52a42.666667 42.666667 0 0 0-60.245334-60.416l-235.946666 235.52z" horiz-adv-x="1024" />
<glyph glyph-name="share-" unicode="&#59584;" d="M768 512a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667zM256 213.33333300000004a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM768-85.33333300000004a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667zM345.045333 282.709333a42.666667 42.666667 0 1 0 42.922667 73.728l291.413333-169.813333a42.666667 42.666667 0 1 0-42.922666-73.728l-291.413334 169.813333z m290.944 372.394667a42.666667 42.666667 0 1 0 43.008-73.728l-290.986666-169.813333a42.666667 42.666667 0 1 0-43.008 73.728l290.986666 169.813333z" horiz-adv-x="1024" />
<glyph glyph-name="share" unicode="&#59585;" d="M128 384v-341.333333a128 128 0 0 1 128-128h512a128 128 0 0 1 128 128v341.333333a42.666667 42.666667 0 0 1-85.333333 0v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM652.501333 609.834667a42.666667 42.666667 0 0 1 60.330667 60.330666l-170.666667 170.666667a42.666667 42.666667 0 0 1-60.330666 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.330667-60.330666L512 750.336l140.501333-140.501333zM469.333333 810.666667v-554.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="shield" unicode="&#59586;" d="M531.072-80.810667a42.666667 42.666667 0 0 0-38.144 0 738.56 738.56 0 0 0-56.874667 32.64 958.506667 958.506667 0 0 0-122.837333 90.709334C198.229333 143.232 128 257.322667 128 384V725.333333a42.666667 42.666667 0 0 0 32.298667 41.386667l341.333333 85.333333a42.666667 42.666667 0 0 0 20.736 0l341.333333-85.333333A42.666667 42.666667 0 0 0 896 725.333333v-341.333333c0-126.72-70.229333-240.810667-185.216-341.461333a958.506667 958.506667 0 0 0-122.837333-90.709334 738.56 738.56 0 0 0-56.874667-32.64z m11.648 104.96a874.24 874.24 0 0 1 111.829333 82.645334C752.896 192.810667 810.666667 286.677333 810.666667 384V692.053333l-298.666667 74.666667-298.666667-74.666667V384c0-97.28 57.770667-191.189333 156.117334-277.205333A874.24 874.24 0 0 1 512 5.845333c9.429333 5.376 19.754667 11.477333 30.72 18.346667z" horiz-adv-x="1024" />
<glyph glyph-name="settings" unicode="&#59587;" d="M512 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM272.768 680.234667l-2.56 2.56a42.666667 42.666667 0 1 1-60.416-60.416l2.901333-2.901334c32.298667-33.024 41.258667-82.432 23.637334-122.197333A113.365333 113.365333 0 0 0 131.84 423.253333H128a42.666667 42.666667 0 0 1 0-85.333333h7.424a112.896 112.896 0 0 0 103.253333-68.096 113.237333 113.237333 0 0 0-22.912-125.056l-2.56-2.56a42.666667 42.666667 0 1 1 60.416-60.416l2.901334 2.901333c33.024 32.298667 82.432 41.258667 122.197333 23.637334a113.365333 113.365333 0 0 0 74.026667-104.490667V0a42.666667 42.666667 0 0 1 85.333333 0v7.424a112.896 112.896 0 0 0 68.096 103.253333 113.237333 113.237333 0 0 0 125.056-22.912l2.56-2.56a42.666667 42.666667 0 1 1 60.416 60.416l-2.901333 2.901334a113.066667 113.066667 0 0 0-22.613334 124.714666A112.981333 112.981333 0 0 0 892.16 341.333333H896a42.666667 42.666667 0 0 1 0 85.333334h-7.424a113.066667 113.066667 0 0 0-103.466667 68.522666l-3.456 8.064v4.266667a113.28 113.28 0 0 0 26.581334 115.712l2.56 2.56a42.666667 42.666667 0 1 1-60.416 60.416l-2.901334-2.901333a112.896 112.896 0 0 0-124.288-22.784A113.109333 113.109333 0 0 0 554.666667 764.16V768a42.666667 42.666667 0 0 1-85.333334 0v-7.424a113.066667 113.066667 0 0 0-68.522666-103.466667l-8.064-3.456h-4.266667a113.28 113.28 0 0 0-115.712 26.581334zM888.746667 512H896a128 128 0 0 0 0-256h-3.669333a27.733333 27.733333 0 0 1-25.386667-16.810667 27.733333 27.733333 0 0 1 5.034667-30.677333l2.56-2.56a128 128 0 1 0-181.077334-181.077333l-2.218666 2.218666a27.904 27.904 0 0 1-31.018667 5.376 27.690667 27.690667 0 0 1-16.810667-25.216V0a128 128 0 0 0-256 0 29.781333 29.781333 0 0 1-20.650666 29.226667 27.605333 27.605333 0 0 1-30.250667-5.205334l-2.56-2.56a128 128 0 1 0-181.077333 181.077334l2.218666 2.218666a27.904 27.904 0 0 1 5.376 31.018667 27.690667 27.690667 0 0 1-25.216 16.810667H128a128 128 0 0 0 0 256 29.781333 29.781333 0 0 1 29.226667 20.650666 27.605333 27.605333 0 0 1-5.205334 30.250667l-2.56 2.56a128 128 0 1 0 181.077334 181.077333l2.218666-2.218666a27.733333 27.733333 0 0 1 30.592-5.546667l8.234667 3.626667A25.258667 25.258667 0 0 1 384 760.746667V768a128 128 0 0 0 256 0v-3.669333c0.042667-11.093333 6.656-21.034667 17.237333-25.6a27.605333 27.605333 0 0 1 30.250667 5.248l2.56 2.56a128 128 0 1 0 181.077333-181.077334l-2.218666-2.218666a27.733333 27.733333 0 0 1-5.546667-30.592l3.626667-8.234667c5.12-8.277333 13.184-12.373333 21.76-12.416z" horiz-adv-x="1024" />
<glyph glyph-name="skip-back" unicode="&#59588;" d="M768 636.586667L452.266667 384l315.733333-252.586667V636.586667z m16-627.2l-426.666667 341.333333a42.666667 42.666667 0 0 0 0 66.56l426.666667 341.333333A42.666667 42.666667 0 0 0 853.333333 725.333333v-682.666666a42.666667 42.666667 0 0 0-69.333333-33.28zM256 85.333333V682.666667a42.666667 42.666667 0 1 1-85.333333 0v-597.333334a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="shuffle" unicode="&#59589;" d="M853.333333 554.666667a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-213.333333a42.666667 42.666667 0 0 1 0-85.333334h170.666666v-170.666666zM200.832 12.501333l725.333333 725.333334a42.666667 42.666667 0 1 1-60.330666 60.330666l-725.333334-725.333333a42.666667 42.666667 0 0 1 60.330667-60.330667zM682.666667 42.666667a42.666667 42.666667 0 0 1 0-85.333334h213.333333a42.666667 42.666667 0 0 1 42.666667 42.666667v213.333333a42.666667 42.666667 0 0 1-85.333334 0v-170.666666h-170.666666zM609.834667 225.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666zM140.501333 695.168l213.333334-213.333333a42.666667 42.666667 0 1 1 60.330666 60.330666l-213.333333 213.333334a42.666667 42.666667 0 0 1-60.330667-60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="sidebar" unicode="&#59590;" d="M85.333333 682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM341.333333 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333H341.333333V725.333333z m85.333334 0v-682.666666h384.213333c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H426.666667z" horiz-adv-x="1024" />
<glyph glyph-name="skip-forward" unicode="&#59591;" d="M256 131.413333L571.733333 384 256 636.586667v-505.173334z m-16 627.2l426.666667-341.333333a42.666667 42.666667 0 0 0 0-66.56l-426.666667-341.333333A42.666667 42.666667 0 0 0 170.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 69.333333 33.28zM768 682.666667v-597.333334a42.666667 42.666667 0 0 1 85.333333 0V682.666667a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="slack" unicode="&#59592;" d="M983.271856 524.026176c103.487213-343.691869 14.332936-507.582171-330.937263-611.495959C308.514752-190.956996 144.539135-101.845377 40.540031 243.339506-62.947182 587.074033 26.207095 750.964335 371.477293 854.920781 716.320916 958.706596 879.614012 870.405471 983.271856 524.026176z m-81.817179-24.52809C811.361935 800.788351 695.632005 863.324318 396.090699 773.14626 95.781557 682.754914 32.477754 566.342464 122.357209 267.952912c90.434003-300.223827 206.889111-363.527629 505.363979-273.690832 300.309142 90.434003 363.612944 206.803796 273.733489 505.236006zM495.866705 626.61758l152.714024-443.638505a42.657549 42.657549 0 0 1 80.708082 27.727406l-152.714024 443.638506a42.657549 42.657549 0 0 1-80.708082-27.727407zM294.523076 557.512352l152.714024-443.638506a42.657549 42.657549 0 0 1 80.708082 27.727407l-152.714024 443.638505a42.657549 42.657549 0 0 1-80.708082-27.727406zM685.308879 601.492284l-443.638506-152.714024a42.657549 42.657549 0 0 1 27.727407-80.708082l443.638505 152.714024a42.657549 42.657549 0 0 1-27.727406 80.708082zM754.414107 400.148655l-443.638505-152.714024a42.657549 42.657549 0 0 1 27.727406-80.708082l443.638506 152.714024a42.657549 42.657549 0 0 1-27.727407 80.708082z" horiz-adv-x="1024" />
<glyph glyph-name="slash" unicode="&#59593;" d="M512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m239.701333 169.301333L211.968 623.701333a384 384 0 0 1 539.733333-539.733333zM272.298667 684.032l539.733333-539.733333a384 384 0 0 1-539.733333 539.733333z" horiz-adv-x="1024" />
<glyph glyph-name="smartphone" unicode="&#59594;" d="M256 725.76v-683.52c0-23.04 19.285333-42.24 42.922667-42.24h426.154666A42.581333 42.581333 0 0 1 768 42.24V725.76c0 23.04-19.285333 42.24-42.922667 42.24H298.922667A42.581333 42.581333 0 0 1 256 725.76z m-85.333333 0A127.914667 127.914667 0 0 0 298.922667 853.333333h426.154666A128.128 128.128 0 0 0 853.333333 725.76v-683.52A127.914667 127.914667 0 0 0 725.077333-85.333333H298.922667A128.128 128.128 0 0 0 170.666667 42.24V725.76zM512 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="square" unicode="&#59595;" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88z" horiz-adv-x="1024" />
<glyph glyph-name="speaker" unicode="&#59596;" d="M213.333333 725.76v-683.52c0-23.125333 19.114667-42.24 42.410667-42.24h512.512a42.410667 42.410667 0 0 1 42.410667 42.24V725.76a42.538667 42.538667 0 0 1-42.410667 42.24H255.744A42.410667 42.410667 0 0 1 213.333333 725.76z m-85.333333 0A127.744 127.744 0 0 0 255.744 853.333333h512.512A127.872 127.872 0 0 0 896 725.76v-683.52A127.744 127.744 0 0 0 768.256-85.333333H255.744A127.872 127.872 0 0 0 128 42.24V725.76zM512 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM512 85.333333a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333334a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
<glyph glyph-name="star" unicode="&#59597;" d="M418.432 525.056a42.666667 42.666667 0 0 0-32.085333-23.338667l-209.365334-30.549333 151.466667-147.370667c10.069333-9.770667 14.634667-23.893333 12.288-37.717333l-35.754667-208.085333 187.178667 98.304a42.666667 42.666667 0 0 0 39.68 0l187.178667-98.304-35.754667 208.085333a42.581333 42.581333 0 0 0 12.288 37.717333l151.466667 147.370667-209.365334 30.549333a42.666667 42.666667 0 0 0-32.085333 23.338667L512 714.410667 418.432 525.056z m55.296 304.512a42.666667 42.666667 0 0 0 76.544 0l121.898667-246.741333 272.64-39.808a42.624 42.624 0 0 0 23.637333-72.704l-197.248-191.914667 46.506667-271.146667a42.666667 42.666667 0 0 0-61.866667-44.928L512 90.410667l-243.84-128.085334a42.666667 42.666667 0 0 0-61.866667 44.928l46.506667 271.146667-197.248 191.914667a42.624 42.624 0 0 0 23.594667 72.704l272.64 39.808 121.941333 246.741333z" horiz-adv-x="1024" />
<glyph glyph-name="stop-circle" unicode="&#59598;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM426.666667 469.333333v-170.666666h170.666666v170.666666h-170.666666zM384 554.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-256a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="sun" unicode="&#59599;" d="M512 128a256 256 0 1 0 0 512 256 256 0 0 0 0-512z m0 85.333333a170.666667 170.666667 0 1 1 0 341.333334 170.666667 170.666667 0 0 1 0-341.333334zM469.333333 853.333333v-85.333333a42.666667 42.666667 0 0 1 85.333334 0V853.333333a42.666667 42.666667 0 0 1-85.333334 0zM469.333333 0v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM149.888 685.781333l60.586667-60.586666a42.666667 42.666667 0 0 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 0 1-60.330667-60.330667zM753.194667 82.474667l60.586666-60.586667a42.666667 42.666667 0 0 1 60.330667 60.330667l-60.586667 60.586666a42.666667 42.666667 0 0 1-60.330666-60.330666zM42.666667 341.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 341.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM210.218667 21.888l60.586666 60.586667a42.666667 42.666667 0 0 1-60.330666 60.330666l-60.586667-60.586666a42.666667 42.666667 0 0 1 60.330667-60.330667zM813.525333 625.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 1 1 60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="sunrise" unicode="&#59600;" d="M768 128a256 256 0 1 1-512 0 42.666667 42.666667 0 0 1 85.333333 0 170.666667 170.666667 0 1 0 341.333334 0 42.666667 42.666667 0 0 1 85.333333 0zM469.333333 810.666667v-298.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0zM149.888 429.781333l60.586667-60.586666a42.666667 42.666667 0 1 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 1 1-60.330667-60.330667zM42.666667 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM813.525333 369.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 0 1 60.330666-60.330666zM981.333333 0H42.666667a42.666667 42.666667 0 0 1 0-85.333333h938.666666a42.666667 42.666667 0 0 1 0 85.333333zM652.501333 609.834667a42.666667 42.666667 0 0 1 60.330667 60.330666l-170.666667 170.666667a42.666667 42.666667 0 0 1-60.330666 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.330667-60.330666L512 750.336l140.501333-140.501333z" horiz-adv-x="1024" />
<glyph glyph-name="tablet" unicode="&#59601;" d="M810.666667 42.24V725.76a42.538667 42.538667 0 0 1-42.410667 42.24H255.744A42.410667 42.410667 0 0 1 213.333333 725.76v-683.52c0-23.125333 19.114667-42.24 42.410667-42.24h512.512a42.410667 42.410667 0 0 1 42.410667 42.24z m85.333333 0A127.744 127.744 0 0 0 768.256-85.333333H255.744A127.872 127.872 0 0 0 128 42.24V725.76A127.744 127.744 0 0 0 255.744 853.333333h512.512A127.872 127.872 0 0 0 896 725.76v-683.52zM512 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="tag" unicode="&#59602;" d="M841.813333 417.536l-351.146666 351.146667H127.317333V405.333333l351.146667-350.72a42.325333 42.325333 0 0 1 59.904 0l303.36 303.36a42.282667 42.282667 0 0 1 0.085333 59.562667z m59.946667-119.253333l-303.530667-303.488a126.976 126.976 0 0 0-179.626666-0.042667l-363.52 363.093333A42.325333 42.325333 0 0 0 42.666667 387.84V811.093333C42.666667 834.346667 61.610667 853.333333 84.992 853.333333h423.210667c11.221333 0 21.973333-4.48 29.909333-12.373333l363.648-363.648a126.976 126.976 0 0 0 0-179.029333zM298.666667 597.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="sunset" unicode="&#59603;" d="M768 128a256 256 0 1 1-512 0 42.666667 42.666667 0 0 1 85.333333 0 170.666667 170.666667 0 1 0 341.333334 0 42.666667 42.666667 0 0 1 85.333333 0zM554.666667 512V810.666667a42.666667 42.666667 0 0 1-85.333334 0v-298.666667a42.666667 42.666667 0 0 1 85.333334 0zM149.888 429.781333l60.586667-60.586666a42.666667 42.666667 0 1 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 1 1-60.330667-60.330667zM42.666667 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM813.525333 369.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 0 1 60.330666-60.330666zM981.333333 0H42.666667a42.666667 42.666667 0 0 1 0-85.333333h938.666666a42.666667 42.666667 0 0 1 0 85.333333zM371.498667 712.832a42.666667 42.666667 0 0 1-60.330667-60.330667l170.666667-170.666666a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666666a42.666667 42.666667 0 1 1-60.330667 60.330667L512 572.330667 371.498667 712.832z" horiz-adv-x="1024" />
<glyph glyph-name="target" unicode="&#59604;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM512 85.333333a298.666667 298.666667 0 1 0 0 597.333334 298.666667 298.666667 0 0 0 0-597.333334z m0 85.333334a213.333333 213.333333 0 1 1 0 426.666666 213.333333 213.333333 0 0 1 0-426.666666zM512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="thermometer" unicode="&#59605;" d="M715.216338 38.506413A234.660898 234.660898 0 1 0 341.337529 287.673621V746.670338a149.329662 149.329662 0 0 0 298.659324 0v-459.039382a234.660898 234.660898 0 0 0 75.219485-249.167208zM554.665618 266.255481V746.670338a63.998427 63.998427 0 0 1-127.996854 0v-480.414857a42.665618 42.665618 0 0 0-18.943534-35.455128 149.329662 149.329662 0 1 1 165.883922 0A42.665618 42.665618 0 0 0 554.665618 266.255481z" horiz-adv-x="1024" />
<glyph glyph-name="thumbs-up" unicode="&#59606;" d="M850.005333 554.666667a130.730667 130.730667 0 0 0 99.456-43.989334c25.002667-28.373333 36.138667-66.090667 30.378667-103.253333l-59.733333-383.957333c-9.685333-63.146667-65.109333-109.525333-129.365334-108.8H302.421333c-23.893333 0-43.306667 19.114667-43.306666 42.666666V426.666667c0 5.973333 1.28 11.861333 3.754666 17.322666l173.141334 384c6.954667 15.402667 22.442667 25.344 39.552 25.344 95.658667 0 173.184-76.373333 173.184-170.666666v-128h201.258666z m-58.794666-554.666667a43.093333 43.093333 0 0 1 43.306666 36.352l59.733334 383.914667a42.24 42.24 0 0 1-10.112 34.389333 43.861333 43.861333 0 0 1-33.664 14.677333H605.44c-23.893333 0-43.264 19.114667-43.264 42.666667V682.666667c0 38.101333-25.344 70.357333-60.288 81.322666l-156.16-346.368V0h445.482667z m-532.053334 384h-86.613333c-23.893333 0-43.306667-19.114667-43.306667-42.666667v-298.666666c0-23.552 19.413333-42.666667 43.306667-42.666667h86.613333v384z m43.264-469.333333H172.544C100.821333-85.333333 42.666667-28.032 42.666667 42.666667v298.666666c0 70.698667 58.154667 128 129.877333 128h129.877333c23.893333 0 43.264-19.114667 43.264-42.666666v-469.333334c0-23.552-19.370667-42.666667-43.264-42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="thumbs-down" unicode="&#59607;" d="M173.482667 213.333333a130.005333 130.005333 0 0 0-98.858667 43.733334 127.104 127.104 0 0 0-30.464 103.637333l59.818667 383.914667A128.853333 128.853333 0 0 0 232.832 853.333333H721.92a42.666667 42.666667 0 0 0 42.666667-42.666666v-469.333334a42.666667 42.666667 0 0 0-3.754667-17.578666l-173.44-384a42.666667 42.666667 0 0 0-38.869333-25.088c-95.274667 0-172.757333 76.245333-172.757334 170.666666v128h-202.24z m58.88 554.666667a43.648 43.648 0 0 1-44.074667-36.437333l-59.818667-383.957334a41.728 41.728 0 0 1 10.112-34.048c8.448-9.557333 20.906667-15.061333 34.432-14.933333h245.376a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666666c0-38.229333 25.856-70.741333 61.568-81.493334l156.586667 346.709334V768H232.362667z m532.181333-384h73.813333A57.088 57.088 0 0 1 896 429.952V721.92c-4.906667 26.794667-29.141333 46.506667-58.325333 46.037333H764.586667v-384z m-42.666667 469.333333h115.029334C909.184 854.528 971.178667 802.133333 980.906667 731.093333L981.333333 725.333333v-298.666666l-0.426666-5.845334A142.122667 142.122667 0 0 0 837.674667 298.666667H721.92a42.666667 42.666667 0 0 0-42.666667 42.666666V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="toggle-left" unicode="&#59608;" d="M85.333333 384c0-141.184 114.602667-256 255.616-256h342.101334A255.786667 255.786667 0 0 1 938.666667 384c0 141.184-114.602667 256-255.616 256H340.906667A255.786667 255.786667 0 0 1 85.333333 384z m-85.333333 0c0 188.501333 152.618667 341.333333 340.949333 341.333333h342.101334C871.253333 725.333333 1024 572.288 1024 384c0-188.501333-152.618667-341.333333-340.949333-341.333333H340.906667C152.746667 42.666667 0 195.712 0 384zM341.333333 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="toggle-right" unicode="&#59609;" d="M85.333333 384c0-141.184 114.602667-256 255.616-256h342.101334A255.786667 255.786667 0 0 1 938.666667 384c0 141.184-114.602667 256-255.616 256H340.906667A255.786667 255.786667 0 0 1 85.333333 384z m-85.333333 0c0 188.501333 152.618667 341.333333 340.949333 341.333333h342.101334C871.253333 725.333333 1024 572.288 1024 384c0-188.501333-152.618667-341.333333-340.949333-341.333333H340.906667C152.746667 42.666667 0 195.712 0 384zM682.666667 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="trash-" unicode="&#59610;" d="M128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM768 640v-597.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 1 1-85.333333 0v-597.333333a128 128 0 0 1 128-128h426.666666a128 128 0 0 1 128 128V640a42.666667 42.666667 0 0 1-85.333333 0zM384 640V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 1 85.333333 0V725.333333a128 128 0 0 1-128 128h-170.666666a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0zM384 426.666667v-256a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-85.333333 0zM554.666667 426.666667v-256a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="trash" unicode="&#59611;" d="M128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM768 640v-597.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 1 1-85.333333 0v-597.333333a128 128 0 0 1 128-128h426.666666a128 128 0 0 1 128 128V640a42.666667 42.666667 0 0 1-85.333333 0zM384 640V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 1 85.333333 0V725.333333a128 128 0 0 1-128 128h-170.666666a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0z" horiz-adv-x="1024" />
<glyph glyph-name="trending-up" unicode="&#59612;" d="M392.832 478.165333a42.666667 42.666667 0 0 1-60.330667 0l-320-320a42.666667 42.666667 0 0 1 60.330667-60.330666L362.666667 387.669333l183.168-183.168a42.666667 42.666667 0 0 1 60.330666 0l405.333334 405.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L576 294.997333 392.832 478.165333zM938.666667 384a42.666667 42.666667 0 0 1 85.333333 0V640a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333334v-213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="trending-down" unicode="&#59613;" d="M72.832 670.165333A42.666667 42.666667 0 0 1 12.501333 609.834667l320-320a42.666667 42.666667 0 0 1 60.330667 0L576 473.002667l375.168-375.168a42.666667 42.666667 0 0 1 60.330667 60.330666l-405.333334 405.333334a42.666667 42.666667 0 0 1-60.330666 0L362.666667 380.330667 72.832 670.165333zM725.333333 170.666667a42.666667 42.666667 0 0 1 0-85.333334h256a42.666667 42.666667 0 0 1 42.666667 42.666667v256a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333334z" horiz-adv-x="1024" />
<glyph glyph-name="triangle" unicode="&#59614;" d="M402.517333 753.237333a128.128 128.128 0 0 0 219.136 0L983.466667 149.333333a128 128 0 0 0-109.909334-192H150.144a128 128 0 0 0-109.098667 192.597334l361.472 603.306666zM114.602667 106.666667A42.666667 42.666667 0 0 1 150.613333 42.666667h722.474667a42.666667 42.666667 0 0 1 36.821333 63.402666L548.565333 709.162667a42.666667 42.666667 0 0 1-72.96 0.085333L114.645333 106.666667z" horiz-adv-x="1024" />
<glyph glyph-name="type" unicode="&#59615;" d="M213.333333 682.666667h597.333334v-85.333334a42.666667 42.666667 0 0 1 85.333333 0V725.333333a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666667v-128a42.666667 42.666667 0 1 1 85.333333 0V682.666667zM384 0h256a42.666667 42.666667 0 0 1 0 85.333333H384a42.666667 42.666667 0 0 1 0-85.333333zM469.333333 725.333333v-682.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="twitter" unicode="&#59616;" d="M956.843947 759.765333c32.213333 22.741333 75.349333-6.698667 66.048-45.056a372.736 372.736 0 0 0-85.12-161.28c0.64-6.869333 0.938667-13.866667 0.981333-20.864C938.75328 25.856 450.390613-234.410667 22.01728 3.925333c-39.253333 21.802667-22.485333 81.792 22.442667 80a453.461333 453.461333 0 0 1 207.957333 41.344c-94.037333 58.026667-154.24 134.869333-183.808 225.792-30.506667 93.866667-26.026667 192.512-0.597333 286.208 7.68 28.330667 15.530667 49.664 21.077333 62.208a42.666667 42.666667 0 0 0 73.898667 7.168A412.032 412.032 0 0 1 469.419947 532.309333a234.112 234.112 0 0 0 150.4 220.288 233.6 233.6 0 0 0 239.274666-44.202666 422.186667 422.186667 0 0 1 97.706667 51.370666z m-97.109334-141.226666a42.666667 42.666667 0 0 0-44.501333 12.885333 148.352 148.352 0 0 1-164.949333 41.344A148.906667 148.906667 0 0 1 554.75328 531.285333v-42.709333a42.666667 42.666667 0 0 0-41.557333-42.709333c-139.093333-3.626667-272.042667 51.2-367.872 148.906666-16.853333-72.832-18.090667-147.925333 4.437333-217.258666 28.885333-88.917333 95.018667-161.066667 208.981333-211.797334 30.592-13.610667 34.346667-55.552 6.656-74.368a538.922667 538.922667 0 0 0-154.88-72.490666C538.198613-67.456 853.419947 150.357333 853.419947 532.437333a149.76 149.76 0 0 1-2.645334 27.562667 42.752 42.752 0 0 0 11.946667 38.442667c9.514667 9.386667 18.304 19.413333 26.368 29.952-9.685333-3.584-19.456-6.826667-29.354667-9.813334z" horiz-adv-x="1024" />
<glyph glyph-name="upload" unicode="&#59617;" d="M85.333333 170.666667v-128a128 128 0 0 1 128-128h597.333334a128 128 0 0 1 128 128v128a42.666667 42.666667 0 0 1-85.333334 0v-128a42.666667 42.666667 0 0 0-42.666666-42.666667H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v128a42.666667 42.666667 0 0 1-85.333334 0zM652.501333 609.834667a42.666667 42.666667 0 0 1 60.330667 60.330666l-170.666667 170.666667a42.666667 42.666667 0 0 1-60.330666 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.330667-60.330666L512 750.336l140.501333-140.501333zM469.333333 810.666667v-597.333334a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="umbrella" unicode="&#59618;" d="M554.666667 341.33333300000004v-256a85.333333 85.333333 0 1 1 170.666666 0 42.666667 42.666667 0 0 0 85.333334 0 170.666667 170.666667 0 1 0-341.333334 0v256H42.666667a42.666667 42.666667 0 0 0-42.453334 46.72 514.133333 514.133333 0 0 0 1023.573334 0A42.666667 42.666667 0 0 0 981.333333 341.33333300000004H554.666667zM512 768c-205.098667 0-379.008-144.64-419.84-341.333333h839.68c-40.832 196.693333-214.741333 341.333333-419.84 341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="upload-cloud" unicode="&#59619;" d="M652.517547 183.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-170.666666 170.666666a42.666667 42.666667 0 0 1-60.330667 0l-170.666667-170.666666a42.666667 42.666667 0 0 1 60.330667-60.330667L512.016213 323.669333l140.501334-140.501333zM469.349547 384v-384a42.666667 42.666667 0 0 1 85.333333 0v384a42.666667 42.666667 0 0 1-85.333333 0zM427.57888 808.106667a384 384 0 0 1-331.306667-635.818667 42.666667 42.666667 0 1 1 63.957334 56.490667A298.666667 298.666667 0 1 0 673.168213 501.333333a42.666667 42.666667 0 0 1 41.301334-32h53.76a170.666667 170.666667 0 0 0 81.578666-320.512 42.666667 42.666667 0 1 1 40.832-74.922666A256 256 0 0 1 768.272213 554.666667h-22.229333a384 384 0 0 1-318.464 253.44zM652.517547 183.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-170.666666 170.666666a42.666667 42.666667 0 0 1-60.330667 0l-170.666667-170.666666a42.666667 42.666667 0 0 1 60.330667-60.330667L512.016213 323.669333l140.501334-140.501333z" horiz-adv-x="1024" />
<glyph glyph-name="unlock" unicode="&#59620;" d="M256 469.333333V597.205333c-0.128 131.413333 100.266667 241.621333 232.192 254.805334 131.968 13.226667 252.586667-74.837333 278.954667-203.648a42.666667 42.666667 0 0 0-33.621334-50.261334 43.008 43.008 0 0 0-50.730666 33.28c-17.578667 85.888-97.962667 144.597333-185.941334 135.765334-87.978667-8.789333-154.88-82.218667-154.794666-169.898667V469.333333h468.821333A127.957333 127.957333 0 0 0 938.666667 341.674667v-299.349334A127.701333 127.701333 0 0 0 810.88-85.33333300000004H213.12A127.957333 127.957333 0 0 0 85.333333 42.325333v299.349334A127.701333 127.701333 0 0 0 213.12 469.333333H256z m-85.333333-127.658666v-299.349334c0-23.168 19.157333-42.325333 42.453333-42.325333h597.76c23.466667 0 42.453333 18.944 42.453333 42.325333v299.349334a42.624 42.624 0 0 1-42.453333 42.325333H213.12a42.368 42.368 0 0 1-42.453333-42.325333z" horiz-adv-x="1024" />
<glyph glyph-name="user-check" unicode="&#59621;" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM755.498667 456.832a42.666667 42.666667 0 0 1-60.330667-60.330667l85.333333-85.333333a42.666667 42.666667 0 0 1 60.330667 0l170.666667 170.666667a42.666667 42.666667 0 1 1-60.330667 60.330666L810.666667 401.664l-55.168 55.168z" horiz-adv-x="1024" />
<glyph glyph-name="user-minus" unicode="&#59622;" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM981.333333 469.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="user-plus" unicode="&#59623;" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM810.666667 554.666667v-256a42.666667 42.666667 0 0 1 85.333333 0V554.666667a42.666667 42.666667 0 0 1-85.333333 0zM981.333333 469.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="user-x" unicode="&#59624;" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM737.834667 524.501333l213.333333-213.333333a42.666667 42.666667 0 0 1 60.330667 60.330667l-213.333334 213.333333a42.666667 42.666667 0 0 1-60.330666-60.330667zM951.168 584.832l-213.333333-213.333333a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333333a42.666667 42.666667 0 1 1-60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="user" unicode="&#59625;" d="M896 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H341.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h341.333334a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM512 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
<glyph glyph-name="users" unicode="&#59626;" d="M768 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h341.333334a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM384 384A213.333333 213.333333 0 1 0 384 810.666667a213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM1024 0v85.333333a213.333333 213.333333 0 0 1-160 206.421334 42.666667 42.666667 0 1 1-21.333333-82.602667A128 128 0 0 0 938.666667 85.290667V0a42.666667 42.666667 0 0 1 85.333333 0zM672.085333 721.109333a128 128 0 0 0 0-247.978666 42.666667 42.666667 0 0 1 21.162667-82.688 213.333333 213.333333 0 0 1 0 413.354666 42.666667 42.666667 0 0 1-21.162667-82.688z" horiz-adv-x="1024" />
<glyph glyph-name="video-off" unicode="&#59627;" d="M640.197128 213.158348v-42.644794a42.644793 42.644793 0 0 0-42.644793-42.644793H128.459607a42.644793 42.644793 0 0 0-42.644793 42.644793V596.961489a42.644793 42.644793 0 0 0 42.644793 42.644793h85.289587a42.644793 42.644793 0 1 1 0 85.289587H128.459607a127.93438 127.93438 0 0 1-127.93438-127.93438v-426.447935a127.93438 127.93438 0 0 1 127.93438-127.93438h469.092728a127.93438 127.93438 0 0 1 127.93438 127.93438v42.644794a42.644793 42.644793 0 0 1-85.289587 0z m316.168499 418.345423l-255.868761-185.078403 55.139718-4.392414-42.644793 42.644793 12.494924-30.149869V596.961489a127.93438 127.93438 0 0 1-127.93438 127.93438h-142.43361a42.644793 42.644793 0 0 1 0-85.289587H597.552335a42.644793 42.644793 0 0 0 42.644793-42.644793v-142.433611a42.644793 42.644793 0 0 1 12.494925-30.149869l42.644793-42.644793a42.644793 42.644793 0 0 1 55.139718-4.392414L938.710682 513.462983V170.513554a42.644793 42.644793 0 0 1 85.289587 0V596.961489a42.644793 42.644793 0 0 1-67.634642 34.542282zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
<glyph glyph-name="video" unicode="&#59628;" d="M956.544427 632.064A42.666667 42.666667 0 0 0 1024.000427 597.333333v-426.666666a42.666667 42.666667 0 0 0-67.456-34.730667l-298.666667 213.333333a42.666667 42.666667 0 0 0 0 69.461334l298.666667 213.333333zM756.05376 384L938.667093 253.568V514.432L756.05376 384zM85.33376 597.077333v-426.154666A42.581333 42.581333 0 0 1 127.659093 128h470.016A42.666667 42.666667 0 0 1 640.000427 170.922667V597.077333A42.581333 42.581333 0 0 1 597.675093 640H127.659093A42.666667 42.666667 0 0 1 85.33376 597.077333z m-85.333333 0A128 128 0 0 0 127.659093 725.333333h470.016A127.914667 127.914667 0 0 0 725.33376 597.077333v-426.154666A128 128 0 0 0 597.675093 42.666667H127.659093A127.914667 127.914667 0 0 0 0.000427 170.922667V597.077333z" horiz-adv-x="1024" />
<glyph glyph-name="voicemail" unicode="&#59629;" d="M608.306773 256a234.666667 234.666667 0 1 0 181.034667-85.333333h-554.666667a234.666667 234.666667 0 1 0 181.034667 85.333333h192.597333zM234.674773 256a149.333333 149.333333 0 1 1 0 298.666667 149.333333 149.333333 0 0 1 0-298.666667z m554.666667 0a149.333333 149.333333 0 1 1 0 298.666667 149.333333 149.333333 0 0 1 0-298.666667z" horiz-adv-x="1024" />
<glyph glyph-name="volume-x" unicode="&#59630;" d="M442.666667 715.946667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L241.066667 213.333333H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V512a42.666667 42.666667 0 0 0 42.666666 42.666667h155.733334l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 256 469.333333H128v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L426.666667 174.08V593.92l-144-115.2zM951.168 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330667-60.330666l256 256a42.666667 42.666667 0 1 1-60.330667 60.330666zM695.168 481.834667l256-256a42.666667 42.666667 0 0 1 60.330667 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330667-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="volume-" unicode="&#59631;" d="M528 715.946667A42.666667 42.666667 0 0 0 597.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L326.4 213.333333H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667h155.733333l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 341.333333 469.333333H213.333333v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L512 174.08V593.92l-144-115.2zM718.208 504.874667a170.666667 170.666667 0 0 0 0-241.322667 42.666667 42.666667 0 1 1 60.330667-60.330667 256 256 0 0 1 0 361.984 42.666667 42.666667 0 1 1-60.330667-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="volume-1" unicode="&#59632;" d="M442.666667 715.946667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L241.066667 213.333333H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V512a42.666667 42.666667 0 0 0 42.666666 42.666667h155.733334l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 256 469.333333H128v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L426.666667 174.08V593.92l-144-115.2zM783.488 655.488a384 384 0 0 0 0-542.976 42.666667 42.666667 0 1 1 60.330667-60.330667c183.210667 183.253333 183.210667 480.384 0 663.637334a42.666667 42.666667 0 1 1-60.330667-60.330667z m-150.613333-150.613333a170.666667 170.666667 0 0 0 0-241.322667 42.666667 42.666667 0 1 1 60.330666-60.330667 256 256 0 0 1 0 361.984 42.666667 42.666667 0 1 1-60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="volume" unicode="&#59633;" d="M656 715.946667A42.666667 42.666667 0 0 0 725.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L454.4 213.333333H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667h155.733333l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 469.333333 469.333333H341.333333v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L640 174.08V593.92l-144-115.2z" horiz-adv-x="1024" />
<glyph glyph-name="watch" unicode="&#59634;" d="M512 42.66716399999996a341.332622 341.332622 0 1 0 0 682.665245 341.332622 341.332622 0 0 0 0-682.665245z m0 85.333156a255.999467 255.999467 0 1 1 0 511.998933 255.999467 255.999467 0 0 1 0-511.998933zM554.666578 511.99952v-110.33577l51.498559-51.49856a42.666578 42.666578 0 0 0-60.330541-60.33054l-63.999866 63.999866A42.666578 42.666578 0 0 0 469.333422 383.99978699999997V511.99952a42.666578 42.666578 0 0 0 85.333156 0z m107.263776-352.383266a42.666578 42.666578 0 0 0 84.991823-7.765317l-14.933302-163.370326A127.957067 127.957067 0 0 0 604.159808-127.999147H419.584193a127.999733 127.999733 0 0 0-127.999734 116.437091l-14.933302 163.412993a42.666578 42.666578 0 0 0 84.991823 7.765317l14.933302-163.455659c2.005329-22.058621 20.522624-38.911919 42.837244-38.826586h184.916948a42.666578 42.666578 0 0 1 42.666578 38.869252l14.933302 163.412993zM362.069646 608.383319a42.666578 42.666578 0 1 0-84.991823 7.765317l14.933302 163.370327A127.999733 127.999733 0 0 0 419.413526 895.99872h185.428947a127.999733 127.999733 0 0 0 127.999734-116.437091l14.933302-163.412993a42.666578 42.666578 0 0 0-84.991823-7.765317l-14.933302 163.45566A42.709244 42.709244 0 0 1 605.01314 810.665564H419.413526a42.666578 42.666578 0 0 1-42.410578-38.869252l-14.933302-163.412993z" horiz-adv-x="1024" />
<glyph glyph-name="wifi" unicode="&#59635;" d="M240.64 327.765333a426.666667 426.666667 0 0 0 546.133333 0 42.666667 42.666667 0 0 1 54.613334 65.536 512 512 0 0 1-655.36 0 42.666667 42.666667 0 1 1 54.613333-65.536zM88.405333 480a640 640 0 0 0 846.762667 0 42.666667 42.666667 0 0 1 56.490667 64C717.44 785.877333 306.133333 785.877333 31.914667 544a42.666667 42.666667 0 1 1 56.490666-64z m299.818667-306.133333a213.333333 213.333333 0 0 0 247.125333 0 42.666667 42.666667 0 0 1 49.408 69.546666 298.666667 298.666667 0 0 1-345.941333 0 42.666667 42.666667 0 0 1 49.408-69.546666zM512 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="x-square" unicode="&#59636;" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM353.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666zM609.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="wind" unicode="&#59637;" d="M439.466667 670.08A42.666667 42.666667 0 1 0 469.461333 597.333333H85.333333a42.666667 42.666667 0 1 1 0-85.333333h384a127.957333 127.957333 0 0 1 64.298667 238.890667 128 128 0 0 1-154.709333-20.650667 42.666667 42.666667 0 0 1 60.501333-60.16z m67.413333-632.32A128 128 0 1 1 597.205333 256H85.333333a42.666667 42.666667 0 0 1 0-85.333333h512a42.709333 42.709333 0 0 0 21.674667-79.616 42.666667 42.666667 0 0 0-51.584 6.869333 42.666667 42.666667 0 1 1-60.501333-60.16z m279.722667 498.218667A64 64 0 1 0 831.914667 426.666667H85.333333a42.666667 42.666667 0 0 1 0-85.333334h746.666667a149.333333 149.333333 0 1 1-105.642667 255.061334 42.666667 42.666667 0 1 1 60.245334-60.416z" horiz-adv-x="1024" />
<glyph glyph-name="x" unicode="&#59638;" d="M737.834667 670.165333l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666zM225.834667 609.834667l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="x-circle" unicode="&#59639;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM609.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666zM353.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="zap" unicode="&#59640;" d="M128 256a42.666667 42.666667 0 0 0-32.768 69.973333l426.666667 512c27.264 32.725333 80.384 9.685333 75.093333-32.597333L560.298667 512H896a42.666667 42.666667 0 0 0 32.768-69.973333l-426.666667-512c-27.264-32.725333-80.384-9.685333-75.093333 32.597333l36.693333 293.376H128z m91.093333 85.333333H512a42.666667 42.666667 0 0 0 42.325333-47.957333l-24.618666-196.949333 275.2 330.24H512a42.666667 42.666667 0 0 0-42.325333 47.957333l24.618666 196.949333L219.093333 341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="zoom-in" unicode="&#59641;" d="M469.333333 42.666667a384 384 0 1 0 300.032 144.298666l156.8-156.8a42.666667 42.666667 0 0 0-60.330666-60.330666l-156.8 156.8A382.378667 382.378667 0 0 0 469.333333 42.666667z m0 85.333333a298.666667 298.666667 0 1 1 0 597.333333 298.666667 298.666667 0 0 1 0-597.333333zM426.666667 554.666667v-256a42.666667 42.666667 0 0 1 85.333333 0V554.666667a42.666667 42.666667 0 0 1-85.333333 0zM341.333333 384h256a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="zoom-out" unicode="&#59642;" d="M709.034667 126.634667a384 384 0 1 0 60.330666 60.330666l156.8-156.8a42.666667 42.666667 0 0 0-60.330666-60.330666l-156.8 156.8zM469.333333 128a298.666667 298.666667 0 1 1 0 597.333333 298.666667 298.666667 0 0 1 0-597.333333zM341.333333 384h256a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="command" unicode="&#59643;" d="M597.333333 213.33333300000004h-170.666666v-85.333333a170.666667 170.666667 0 1 0-170.666667 170.666667h85.333333v170.666666H256a170.666667 170.666667 0 1 0 170.666667 170.666667v-85.333333h170.666666V640a170.666667 170.666667 0 1 0 170.666667-170.666667h-85.333333v-170.666666h85.333333a170.666667 170.666667 0 1 0-170.666667-170.666667v85.333333z m-170.666666 256v-170.666666h170.666666v170.666666h-170.666666zM341.333333 554.666667V640a85.333333 85.333333 0 1 1-85.333333-85.333333h85.333333z m0-341.333334H256a85.333333 85.333333 0 1 1 85.333333-85.333333v85.333333z m341.333334-85.333333a85.333333 85.333333 0 1 1 85.333333 85.333333h-85.333333v-85.333333z m85.333333 426.666667a85.333333 85.333333 0 1 1-85.333333 85.333333v-85.333333h85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="cloud" unicode="&#59644;" d="M768.190293 512a255.914667 255.914667 0 1 0 0-511.829333H384.318293A383.914667 383.914667 0 1 0 745.918293 512h22.186667z m0-85.290667h-53.76a42.666667 42.666667 0 0 0-41.301333 32 298.581333 298.581333 0 1 1-288.853333-373.248h383.914666a170.624 170.624 0 1 1 0 341.248z" horiz-adv-x="1044" />
<glyph glyph-name="hash" unicode="&#59645;" d="M170.666667 469.333333h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 1 1 0-85.333334zM170.666667 213.33333300000004h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 0 1 0-85.333334zM384.256 772.6933329999999l-85.333333-768a42.666667 42.666667 0 1 1 84.821333-9.386666l85.333333 768a42.666667 42.666667 0 1 1-84.821333 9.386666zM640.256 772.6933329999999l-85.333333-768a42.666667 42.666667 0 1 1 84.821333-9.386666l85.333333 768a42.666667 42.666667 0 1 1-84.821333 9.386666z" horiz-adv-x="1024" />
<glyph glyph-name="headphones" unicode="&#59646;" d="M85.333333 213.33333300000004v170.666667C85.333333 619.648 276.352 810.666667 512 810.666667s426.666667-191.018667 426.666667-426.666667v-298.666667a128 128 0 0 0-128-128h-42.666667a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h85.333333v42.666667a341.333333 341.333333 0 0 1-682.666666 0v-42.666667h85.333333a128 128 0 0 0 128-128v-128a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128v128z m768 42.666667h-85.333333a42.666667 42.666667 0 0 1-42.666667-42.666667v-128a42.666667 42.666667 0 0 1 42.666667-42.666666h42.666667a42.666667 42.666667 0 0 1 42.666666 42.666666v170.666667zM170.666667 256v-170.666667a42.666667 42.666667 0 0 1 42.666666-42.666666h42.666667a42.666667 42.666667 0 0 1 42.666667 42.666666v128a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="underline" unicode="&#59647;" d="M213.333333 768a42.666667 42.666667 0 1 0 85.333334 0v-298.666667a213.333333 213.333333 0 0 1 426.666666 0V768a42.666667 42.666667 0 0 0 85.333334 0v-298.666667a298.666667 298.666667 0 0 0-597.333334 0V768zM170.666667-42.666667a42.666667 42.666667 0 0 0 0 85.333334h682.666666a42.666667 42.666667 0 0 0 0-85.333334H170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="italic" unicode="&#59648;" d="M669.568 682.666667H810.666667a42.666667 42.666667 0 0 1 0 85.333333h-384a42.666667 42.666667 0 1 1 0-85.333333h151.765333l-224-597.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333333h384a42.666667 42.666667 0 0 1 0 85.333333h-151.765333l224 597.333334z" horiz-adv-x="1024" />
<glyph glyph-name="bold" unicode="&#59649;" d="M743.936 399.701333A213.333333 213.333333 0 0 0 640 0H256a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h341.333333a213.333333 213.333333 0 0 0 146.602667-368.298667zM298.666667 682.666667v-256h298.666666a128 128 0 0 1 0 256H298.666667z m0-597.333334h341.333333a128 128 0 0 1 0 256H298.666667v-256z" horiz-adv-x="1024" />
<glyph glyph-name="crop" unicode="&#59650;" d="M302.764169 679.379651L682.710044 682.664978a127.999733 127.999733 0 0 0 127.999734-127.999734v-383.9992h170.666311a42.666578 42.666578 0 0 0 0-85.333155h-170.666311v-170.666311a42.666578 42.666578 0 0 0-85.333156 0v170.666311H341.377422c-70.698519 0-127.999733 57.301214-127.999733 128.383732l3.285326 379.561876-173.567638-1.49333a42.666578 42.666578 0 0 0-0.767998 85.333156l175.060968 1.535996L218.924344 853.715288a42.666578 42.666578 0 0 0 85.333156-0.767998l-1.493331-173.567639z m-0.767998-85.333155L298.710844 213.332622a42.666578 42.666578 0 0 1 42.666578-42.666578h383.9992V554.665244c0 23.551951-19.114627 42.666578-42.282578 42.666578l-381.097873-3.285326z" horiz-adv-x="1024" />
<glyph glyph-name="help-circle" unicode="&#59651;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z m0 128a42.666667 42.666667 0 1 0 0 85.333333 42.666667 42.666667 0 0 0 0-85.333333z m-83.925333 369.834667a42.666667 42.666667 0 1 0-80.469334 28.330666A170.666667 170.666667 0 0 0 679.253333 469.333333c0-54.613333-32.341333-97.706667-82.986666-131.498666a323.2 323.2 0 0 0-74.197334-36.992 42.666667 42.666667 0 1 0-26.965333 80.981333 255.488 255.488 0 0 1 53.845333 27.008c29.312 19.584 44.970667 40.448 44.970667 60.586667a85.333333 85.333333 0 0 1-165.845333 28.416z" horiz-adv-x="1024" />
<glyph glyph-name="paperclip" unicode="&#59652;" d="M884.522667 428.586667l-392.106667-392.106667a213.461333 213.461333 0 0 0-301.909333 301.909333l392.106666 392.106667a128.085333 128.085333 0 1 0 181.162667-181.162667l-392.533333-392.106666a42.709333 42.709333 0 1 0-60.416 60.416l362.24 361.813333a42.666667 42.666667 0 0 1-60.288 60.330667l-362.24-361.813334a128.042667 128.042667 0 1 1 181.034666-181.077333l392.533334 392.106667a213.418667 213.418667 0 1 1-301.824 301.824l-392.106667-392.106667a298.794667 298.794667 0 1 1 422.570667-422.570667l392.106666 392.106667a42.666667 42.666667 0 0 1-60.330666 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="shopping-cart" unicode="&#59653;" d="M341.333333-128a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z m512-85.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM278.912 682.666667H981.333333a42.666667 42.666667 0 0 0 41.813334-51.029334l-71.68-357.930666A127.786667 127.786667 0 0 0 824.32 170.666667H373.674667a128 128 0 0 0-128 111.36L180.864 773.546667A42.666667 42.666667 0 0 1 138.666667 810.666667H42.666667a42.666667 42.666667 0 1 0 0 85.333333h96.085333a128 128 0 0 0 126.72-111.36L278.869333 682.666667z m51.413333-389.546667c2.773333-21.376 21.077333-37.290667 43.008-37.12h451.84a42.666667 42.666667 0 0 1 42.666667 34.389333L929.28 597.333333H290.133333l40.192-304.213333z" horiz-adv-x="1024" />
<glyph glyph-name="tv" unicode="&#59654;" d="M409.002667 640L268.501333 780.501333a42.666667 42.666667 0 0 0 60.330667 60.330667L512 657.664l183.168 183.168a42.666667 42.666667 0 0 0 60.330667-60.330667L614.997333 640H853.333333a128 128 0 0 0 128-128v-469.333333a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V512a128 128 0 0 0 128 128h238.336zM170.666667 554.666667a42.666667 42.666667 0 0 1-42.666667-42.666667v-469.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667V512a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="wifi-off" unicode="&#59655;" d="M669.172142 166.544518a42.497957 42.497957 0 0 0-33.035022 7.033262 213.129173 213.129173 0 0 1-246.888835 0 42.625835 42.625835 0 1 0-49.360716 69.480111 298.167714 298.167714 0 0 0 198.721641 54.006932l-118.542446 118.585072a423.700797 423.700797 0 0 1-178.602247-88.278103 42.625835 42.625835 0 1 0-54.688946 65.38803A508.952466 508.952466 0 0 0 350.92766 484.703748L251.950472 583.766187a635.551195 635.551195 0 0 1-162.233927-104.305417A42.625835 42.625835 0 1 0 33.27994 543.31427 720.802864 720.802864 0 0 0 187.926468 647.790191L13.458927 822.300358A42.625835 42.625835 0 1 0 73.731857 882.530663l217.604886-217.562261 1.321401-1.364026 168.158918-168.158918c2.685428-2.131292 5.1151-4.518338 7.246392-7.203766l543.479392-543.479392a42.625835 42.625835 0 0 0-60.315556-60.27293l-282.055148 282.012522zM512.479573-0.122496a42.625835 42.625835 0 1 0 0 85.251669 42.625835 42.625835 0 0 0 0-85.251669z m182.481199 385.380171a42.625835 42.625835 0 0 0 37.425482 76.641251c38.107496-18.62749 73.742694-41.901195 106.053077-69.352233a42.625835 42.625835 0 1 0-55.15783-64.961772 423.700797 423.700797 0 0 1-88.320729 57.672754z m-234.015833 252.003935a42.625835 42.625835 0 0 0-6.862759 84.995914A724.639189 724.639189 0 0 0 991.679207 543.356896a42.625835 42.625835 0 0 0-56.436605-63.938752A639.38752 639.38752 0 0 1 460.902313 637.26161z" horiz-adv-x="1024" />
<glyph glyph-name="minimize" unicode="&#59533;" d="M298.666667 768v-128a42.666667 42.666667 0 0 0-42.666667-42.666667H128a42.666667 42.666667 0 1 1 0-85.333333h128a128 128 0 0 1 128 128V768a42.666667 42.666667 0 1 1-85.333333 0z m597.333333-170.666667h-128a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 1-85.333333 0v-128a128 128 0 0 1 128-128h128a42.666667 42.666667 0 0 1 0 85.333333z m-170.666667-597.333333v128a42.666667 42.666667 0 0 0 42.666667 42.666667h128a42.666667 42.666667 0 0 1 0 85.333333h-128a128 128 0 0 1-128-128v-128a42.666667 42.666667 0 0 1 85.333333 0zM128 170.666667h128a42.666667 42.666667 0 0 0 42.666667-42.666667v-128a42.666667 42.666667 0 0 1 85.333333 0v128a128 128 0 0 1-128 128H128a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="maximize" unicode="&#59656;" d="M341.333333 810.666667H213.333333a128 128 0 0 1-128-128v-128a42.666667 42.666667 0 1 1 85.333334 0V682.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h128a42.666667 42.666667 0 1 1 0 85.333334z m597.333334-256V682.666667a128 128 0 0 1-128 128h-128a42.666667 42.666667 0 0 1 0-85.333334h128a42.666667 42.666667 0 0 0 42.666666-42.666666v-128a42.666667 42.666667 0 0 1 85.333334 0z m-256-597.333334h128a128 128 0 0 1 128 128v128a42.666667 42.666667 0 0 1-85.333334 0v-128a42.666667 42.666667 0 0 0-42.666666-42.666666h-128a42.666667 42.666667 0 0 1 0-85.333334zM85.333333 213.333333v-128a128 128 0 0 1 128-128h128a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v128a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
<glyph glyph-name="gitlab" unicode="&#59657;" d="M537.088-82.730667a42.666667 42.666667 0 0 0-50.176 0L32.341333 247.637333a78.421333 78.421333 0 0 0-28.16 87.594667l52.053334 161.365333 104.96 322.645334c3.413333 8.832 8.832 16.725333 15.701333 22.912a61.269333 61.269333 0 0 0 83.157333-0.810667 59.733333 59.733333 0 0 0 15.616-25.173333L370.176 526.08h283.648l95.274667 293.12c3.413333 8.874667 8.874667 16.768 15.744 22.954667a61.269333 61.269333 0 0 0 83.157333-0.810667 59.733333 59.733333 0 0 0 15.616-25.173333l103.936-319.957334 54.741333-162.133333a78.506667 78.506667 0 0 0-31.573333-87.125333l-453.632-329.685334zM86.869333 313.514667L512 4.522667l426.794667 310.186666-52.224 154.666667-80.725334 248.490667L725.333333 470.229333a42.666667 42.666667 0 0 0-40.576-29.482666h-345.6A42.666667 42.666667 0 0 0 298.666667 470.186667L217.898667 717.952 137.472 470.314667l-50.602667-156.8z" horiz-adv-x="1025" />
<glyph glyph-name="sliders" unicode="&#59658;" d="M810.666667 170.666667v-170.666667a42.666667 42.666667 0 0 1 85.333333 0v170.666667h85.333333a42.666667 42.666667 0 0 1 0 85.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h85.333334zM469.333333 597.333333V768a42.666667 42.666667 0 0 0 85.333334 0v-170.666667h85.333333a42.666667 42.666667 0 0 0 0-85.333333H384a42.666667 42.666667 0 1 0 0 85.333333h85.333333z m-341.333333-341.333333v-256a42.666667 42.666667 0 0 1 85.333333 0v256h85.333334a42.666667 42.666667 0 0 1 0 85.333333H42.666667a42.666667 42.666667 0 0 1 0-85.333333h85.333333z m85.333333 213.333333a42.666667 42.666667 0 0 0-85.333333 0V768a42.666667 42.666667 0 1 0 85.333333 0v-298.666667z m341.333334-469.333333a42.666667 42.666667 0 0 0-85.333334 0v384a42.666667 42.666667 0 0 0 85.333334 0v-384z m341.333333 384a42.666667 42.666667 0 0 0-85.333333 0V768a42.666667 42.666667 0 0 0 85.333333 0v-384z" horiz-adv-x="1024" />
<glyph glyph-name="star-on" unicode="&#59659;" d="M473.728 829.568a42.666667 42.666667 0 0 0 76.544 0l121.898667-246.741333 272.64-39.808a42.624 42.624 0 0 0 23.637333-72.704l-197.248-191.914667 46.506667-271.146667a42.666667 42.666667 0 0 0-61.866667-44.928L512 90.410667l-243.84-128.085334a42.666667 42.666667 0 0 0-61.866667 44.928l46.506667 271.146667-197.248 191.914667a42.624 42.624 0 0 0 23.594667 72.704l272.64 39.808 121.941333 246.741333z" horiz-adv-x="1024" />
<glyph glyph-name="heart-on" unicode="&#59660;" d="M527.061333 729.472A277.333333 277.333333 0 0 0 1000.618667 533.333333a277.333333 277.333333 0 0 0-81.28-196.138666l-377.173334-377.173334a42.666667 42.666667 0 0 0-60.330666 0l-377.173334 377.173334a277.376 277.376 0 0 0 392.277334 392.277333l15.061333-15.061333 15.061333 15.061333z" horiz-adv-x="1024" />
</font>
</defs></svg>

BIN
src/main/resources/static/files/assets/icon/feather/fonts/feather.ttf

BIN
src/main/resources/static/files/assets/icon/feather/fonts/feather.woff

1545
src/main/resources/static/files/assets/icon/flag-icons/css/flag-icon.css
File diff suppressed because it is too large
View File

152
src/main/resources/static/files/assets/icon/flag-icons/fonts/ad.svg
File diff suppressed because it is too large
View File

6
src/main/resources/static/files/assets/icon/flag-icons/fonts/ae.svg

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<path fill="#00732f" d="M0 0h512v170.667H0z"/>
<path fill="#fff" d="M0 170.667h512v170.667H0z"/>
<path d="M0 341.333h512V512H0z"/>
<path fill="red" d="M0 0h180v512H0z"/>
</svg>

83
src/main/resources/static/files/assets/icon/flag-icons/fonts/af.svg

@ -0,0 +1,83 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" width="512" height="512">
<g stroke-width="1pt" fill-rule="evenodd">
<path d="M0 0h511.994v512H0z"/>
<path d="M341.332 0h170.67v512h-170.67z" fill="#090"/>
<path d="M170.67 0h170.67v512H170.67z" fill="#bf0000"/>
</g>
<g transform="translate(2.167 86.78) scale(.84611)" fill="#fff" fill-rule="evenodd" stroke="#bd6b00" stroke-width=".5">
<path d="M319.5 225.84l8.354.001c.031 3.157 1.881 6.549 4.48 8.493h-16.008c2.505-2.271 3.19-4.963 3.174-8.494z"/>
<path d="M266.71 178.53l4.574 5.04 56.934.093 4.668-5.04-14.56-.186-7.094-4.947-22.868-.093-6.627 5.133H266.71z" stroke="none"/>
<path d="M290.02 172.74l19.66-.02c2.662-1.408 3.492-5.902 3.479-8.416-.037-7.429-5.233-10.991-10.447-11.18-.781-.04-1.688-.648-1.895-1.36-.514-1.613-.381-2.641-.944-2.584-.5-.007-.353.94-.799 2.453-.245.752-1.09 1.494-1.934 1.537-6.49.324-10.676 5.062-10.513 11.134.11 4.015.577 6.413 3.393 8.437z"/>
<path d="M257.66 242.83h84.469l-7.56-6.16H265.22l-7.56 6.16z" stroke="none"/>
<path d="M296.39 219.69l1.54 4.62h3.499l-2.799-4.621h-2.24zm-1.96 4.62l.887 4.573 4.106.046-1.493-4.62h-3.5zm6.953.046l2.847 4.527h5.834l-4.573-4.575-4.107.048zm-34.44 10.36c3.095-2.878 5.07-5.335 5.086-8.866h7.56c.015 1.976.73 3.157 1.82 3.08l7.654-.047-.046-4.527h-5.554l-.001-24.688c-.202-8.726 10.609-13.813 15.028-13.767l-26.275-.046v-.793h55.255l.047.793-26.647.046c7.902.016 15.524 7.5 15.587 13.815v7h-1.028l-.046-6.906c0-6.908-8.7-13.363-15.681-13.161-6.037.173-15.4 5.927-15.307 13.115v2.146l14.327.094-.14 2.472 2.25 1.436 4.486 1.43-.065 3.71 3.213.947.028 3.706 3.855 1.654v3.836l2.445 1.507-.112 3.895 3.314 2.333h-7.84l4.9 5.46h-7.234l-3.594-5.46h-4.76l2.147 5.413-5.085-.046-1.215-5.367h-6.206l.046 5.786h-22.214zm22.168-14.98v4.572h5.32l-1.075-4.573h-4.245z"/>
<path fill="none" d="M289.39 211.66h3.313v7.607h-3.313z"/>
<path d="M284.71 219.8h3.234l-.02-5.597c-.042-2.433 2.142-4.885 3.187-4.967 1.159-.044 2.867 2.297 2.924 4.776l.047 5.806 3.43-.007v-14.41l-12.802.067V219.8zm25.59 3.34h4.014v3.127H310.3zm-2.38-5.37h4.014v3.127h-4.014zm-3.87-5.37h4.014v3.127h-4.014zm-3.31-4.52h4.014v3.127h-4.014z" fill="none"/>
<path d="M298.08 219.82l4.106.14 7.327 6.487v-3.827l-2.473-1.773v-3.034l-3.594-2.052v-3.268l-3.5-1.166v-4.434l-1.774-1.447-.092 14.374z" fill="none"/>
<path d="M315.43 210.35h.98v7.047h-.98z"/>
<g id="a">
<path d="M257.32 186.53c-1.234-1.982-2.712 2.749-7.788 6.27-2.363 1.609-4.009 5.894-4.025 8.713-.077 1.937.216 3.868 0 5.741-.137 1.186-1.372 3.816-.527 4.489 2.234 1.66 5.126 5.43 6.467 6.731 1.16 1.017 2.165-5.248 3.036-8.051.933-3.005.515-6.596 3.102-9.372 1.834-1.875 6.46-3.72 5.94-4.554l-6.205-9.967z"/>
<path d="M257.06 201.88a10.09 10.09 0 0 0-1.656-2.594c-.699-.792-1.525-1.457-2.438-1.781-.881-.325-1.779-.751-2.406-1.531a3.645 3.645 0 0 1-.719-1.469c-.124-.544-.123-1.21-.03-1.969-.11.08-.169.172-.282.25-2.363 1.608-4.016 5.9-4.031 8.719a28.487 28.487 0 0 0 0 2.313c.175.485.343.955.593 1.25.326.383.714.636 1.125.812.824.352 1.775.425 2.657.75.912.324 1.851 1.058 2.656 1.938a10.51 10.51 0 0 1 1.75 2.656c.066-.243.154-.604.219-.813.845-2.721.697-5.889 2.562-8.531z" fill="#bf0000"/>
<path d="M249.82 192.39c-.484 3.356 1.385 4.473 3.148 5.123 1.825.648 3.322 2.606 4.093 4.378M245.3 203.44c.77 2.893 2.798 2.531 4.561 3.181 1.826.649 3.745 2.957 4.516 4.729" fill="none"/>
<path d="M255.61 184.48l.925-.594 17.752 29.898-.924.594-17.753-29.898z"/>
<path d="M257.52 183.29a2.046 2.046 0 1 1-4.092 0 2.046 2.046 0 1 1 4.092 0zm15.18-24.02h7.194v1.65H272.7zm0 3.13h7.194v13.784H272.7zm-.44-5.01l7.98.047c.312-2.706-2.39-5.63-3.966-5.6-1.56.076-4.076 2.956-4.014 5.553z"/>
<path d="M292.62 155.76c-1.521.64-2.688 2.377-3.406 4.375-.719 1.998-.992 4.267-.656 6.094v.031c.127.63.3 1.083.5 1.406.199.324.422.514.687.563.265.049.514-.093.656-.313.143-.22.212-.509.188-.844-.144-1.878-.135-3.732.312-5.406.448-1.674 1.338-3.164 2.97-4.375.294-.216.463-.463.5-.719.035-.255-.1-.474-.282-.625-.364-.301-.938-.407-1.469-.187zm.156.438c.37-.154.842-.064 1.031.093.095.079.106.133.094.219-.012.086-.077.234-.312.406-1.713 1.272-2.657 2.872-3.125 4.625-.47 1.754-.459 3.66-.313 5.563a.927.927 0 0 1-.125.562c-.07.108-.107.14-.187.125-.081-.015-.248-.117-.407-.375-.158-.257-.317-.656-.437-1.25-.315-1.714-.037-3.947.656-5.875.694-1.927 1.803-3.538 3.125-4.094z" fill="#bd6b00" stroke="none"/>
<path d="M295.19 157.73c-1.52.639-2.501 2.292-3.031 4.188-.53 1.895-.614 4.065-.281 5.874.26 1.284.934 1.962 1.593 2.063.33.05.648-.08.844-.344.196-.264.26-.619.156-1.062-.372-1.498-.515-3.366-.25-5.063.266-1.696.94-3.211 2.22-4.125.295-.215.463-.463.5-.719.035-.255-.1-.505-.282-.656-.364-.302-.937-.376-1.469-.156zm.188.438c.37-.154.81-.064 1 .093.094.079.137.134.125.219-.012.085-.109.235-.344.406-1.412 1.009-2.129 2.664-2.406 4.438-.278 1.773-.105 3.664.28 5.218.083.354.001.592-.093.72-.094.127-.214.185-.406.155-.384-.059-.983-.554-1.219-1.718-.318-1.732-.227-3.868.281-5.688.509-1.82 1.457-3.287 2.781-3.844z" fill="#bd6b00" stroke="none"/>
<path d="M272.31 187.39h8.027v11.107h-8.027zm.47 17.46h7.747v2.333h-7.747zm-.19 4.1h7.933v8.68h-7.933zm-.56 10.46h8.68v4.853h-8.68zm1.07-16.65h6.995l1.387-2.31h-9.636l1.254 2.31zm9.43-8.51l.066-6.071h4.818c-1.893 1.561-3.652 3.454-4.884 6.071z"/>
<path d="M273.56 196.74c.048 1.299 1.518.72 1.518.066 0-2.004.027-4.17-.053-5.588-.01-1.045 2.49-.783 2.476-.14.01 1.692.029 4.012.038 5.992-.018.964 1.615.88 1.593 0-.01-2.212-.011-5.425 0-7.052.014-2.096-5.502-2.05-5.545-.047.002 1.645-.03 4.59-.027 6.769zm.01 13.24h5.694v7.094h-5.694z" fill="none"/>
<path d="M277.21 212.92h2.007v1.167h-2.007zm-3.5 0h1.96v1.167h-1.96z"/>
<path d="M275.67 210.07h1.54v2.893h-1.54zm0 3.97h1.54v3.08h-1.54zm-31.68-75.07c.356 5.567-1.371 8.623-4.32 8.158-.812-3.088 1.036-5.16 4.32-8.158zm-6.47 12.34c-2.621-1.333-.73-11.513.276-15.78.744 5.497 1.99 13.309-.276 15.78z"/>
<path d="M238.45 151.79c4.406 1.533 7.894-3.212 9.073-8.708-3.636 5.019-9.554 5.025-9.073 8.708zm-3.34 5.14c-3.445-.91-1.37-11.71-.744-16.03.757 4.462 3.132 14.552.744 16.03zm1.18-.34c.192-3.725 3.905-2.648 6.468-4.636-.418 1.86-1.994 5.16-6.468 4.636zm-4.22 4.99c-3.414-.921-1.362-12.544-1.555-17.329 1 4.135 4.17 16.209 1.555 17.329zm1.59-.5c2.797.91 6.501-.908 6.793-4.239-2.409 1.635-6.254.385-6.793 4.239z"/>
<path d="M229.52 166.71c-3.265.26-1.804-9.638-1.802-18.857 1.2 8.617 4.467 16.505 1.802 18.857z"/>
<path d="M230.65 166.26c2.205 1.106 6.156-.662 7.284-4.387-3.984 1.733-6.648.04-7.284 4.387zm25.63-22.13c-.58 4.829-2.554 7.638-5.503 7.174-.812-3.088 1.579-5.062 5.503-7.174zm-7.8 12.39c4.898.695 6.662-3.064 9.96-7.87-4.621 3.344-10.146 4.039-9.96 7.87z"/>
<path d="M247.09 155.97c-2.67-3.204-.09-7.228 1.95-10.657-.438 5.102 1.3 7.94-1.95 10.657zm-1.18 5.29c-.301-3.134 5.038-3.83 7.452-5.572-.812 1.811-2.043 6.687-7.452 5.572z"/>
<path d="M244.79 161.33c-3.691-.418-2.159-6.686.487-10.17-1.114 4.807 1.95 8.15-.487 10.17z"/>
<path d="M242.01 166.55c-4.202-1.858-1.509-7.127.07-10.238-.673 4.086 2.693 7.196-.07 10.238z"/>
<path d="M242.84 166.06c2.205 2.879 6.501-.859 7.383-5.224-3.738 3.112-6.5 2.6-7.383 5.224zm-9.6 20.26c-.432-4.287 2.793-12.084.504-16.24-.312-.571.685-2.087 1.33-1.167 1.006 1.468 2.04 5.652 2.473 4.107.459-1.68.53-4.65 2.017-5.228.949-.338 2.29-.559 1.924.934-.363 1.436-1.177 3.42-.275 3.547.523.078 2.03-1.954 3.3-2.893 1.022-.838 2.548.473 1.053 1.726-4.861 4.037-9.57 5.854-12.326 15.214zm-8.73 64.53c-.57-.11-1.352-.303-.64.584 5.678 6.996 7.321 8.924 15.602 7.94 8.365-1.102 10.357-3.364 16.214-6.65 3.129-1.836 7.703-2.243 11.17-1.106 1.614.528 2.59.56 1.434-.599-1.158-1.157-2.525-2.73-3.949-3.815-3.118-2.394-8.407-3.432-12.723-2.662-6.104.958-11.148 4.845-17.176 6.313-3.167.723-6.64.614-9.931-.005zm47.79 12.5c1.056.131 1.725 2.177 2.245.792.881-2.242.264-4.026-.727-3.829-1.17.312-3.147 2.934-1.518 3.037z"/>
<path d="M220.6 182.92c-1.215-1.269-.864-1.754.933-1.774 1.425-.09 4.25.873 5.32.093.983-.713.592-3.738 1.028-5.133.19-.778.735-1.999 1.96-.093 3.622 5.804 8.146 12.773 10.08 19.6 1.057 3.826.062 9.8-3.454 13.814.124-3.423-1.152-5.725-2.707-8.587-1.921-3.762-9.057-13.951-13.16-17.92z" stroke="none"/>
<path d="M235.53 213.44c3.983.02 4.667-5.32 4.667-6.813-1.96.373-5.414 3.64-4.667 6.813zm34.42 51.82c2.833.645 2.794-6.178-.1-9.07 1.274 4.382-2.128 8.388.1 9.07zm-1.1-.06c.187 3.243-7.959-.424-10.052-2.946 4.813 2.044 9.815.352 10.052 2.946zm-3.57-4.63c.291 3.141-7.064.38-9.238-2.074 4.83 1.56 8.917-.511 9.238 2.074zm1.35.44c2.833.645 2.374-6.412-.38-8.837 1.322 4.71-1.848 8.155.38 8.837zm-2.98-4.29c2.833.645 1.207-5.431-.893-7.857.341 4.43-1.055 7.502.893 7.857zm-1.5-.02c.292 3.235-5.43.751-7.65-2.309 4.782 1.561 7.329-.276 7.65 2.309zm-1.56-2.46c1.856-1.334-.113-4.863-3.645-4.645.346 2.132 1.566 5.88 3.645 4.645zm13.95 14.63c.187 3.243-7.96 1.63-10.519-1.825 5.139.97 10.281-.769 10.519 1.825zm-32.36-5.8c.292 3.235-8.602-.322-10.823-3.383 4.783 1.561 10.502.798 10.823 3.383zm5.45 1.38c1.856-1.334-1.933-4.77-4.951-5.578.346 2.131 2.872 6.813 4.951 5.578zm.57 2.24c.199 2.908-9.537 1.313-12.084-1.374 8.377 1.514 11.81-1.117 12.084 1.374z"/>
<path d="M252.76 268.63c1.08 2.701-8.264 2.042-11.545.471 5.301-.046 10.802-2.353 11.545-.471z"/>
<path d="M257.13 270.6c1.034 2.421-7.61 2.369-11.824 1.03 5.581-.045 10.801-3.426 11.824-1.03zm6.29 1.3c1.531 2.865-7.588 3.143-10.547 1.733 5.273-.725 9.242-3.988 10.547-1.733zm-10.68-4.9c-2.901 1.83-2.746-3.564-5.053-7.3 3.625 3.302 7.02 5.556 5.053 7.3z"/>
<path d="M257.88 268.94c-2.433 2.156-4.379-5.246-6.594-9.399 3.58 3.954 8.84 7.609 6.594 9.399zm6.8 2.06c-2.06 2.389-8.02-7.018-10.187-11.919 3.3 3.815 11.826 9.895 10.187 11.919zm-5.8 7.18c-1.028 3.632-16.192-3.423-17.885-7.079 8.677 4.598 18.092 3.636 17.885 7.079zm-48.73-73.8c-.355-.46-1.374.012-1.12 1.12.237 1.501 2.45 9.204 6.252 11.854 2.712 1.954 16.965 5.102 23.427 6.439 3.556.715 6.535 2.49 8.868 5.32-.965-3.702-1.74-6.445-2.987-9.8-1.211-2.947-4.421-6.173-7.746-6.346-6.175-.222-14.167-.748-19.974-3.268-2.997-1.252-4.792-2.943-6.72-5.32z"/>
<path d="M245.54 234.87c1.947 1.434 4.096-3.704 1.623-8.588-.078 4.701-3.815 6.28-1.623 8.588z"/>
<path d="M247.41 239.58c2.693.827 3.536-3.937 1.763-7.747.295 4.093-4.234 6.56-1.763 7.747z"/>
<path d="M249.46 243.36c2.6 1.295 3.585-3.518 1.716-7.092.204 4.56-3.72 5.904-1.716 7.092z"/>
<path d="M248.39 243.65c-1.03 3.08-7.007-2.655-8.014-5.775 3.71 3.685 8.757 3.278 8.014 5.775z"/>
<path d="M245.68 238.94c-1.171 3.08-8.687-4.85-10.348-8.668 3.71 3.685 11.184 6.498 10.348 8.668z"/>
<path d="M244.19 234.32c-1.17 3.5-9.34-5.829-11.654-9.135 3.897 3.639 12.537 6.592 11.654 9.135zm-.26-3.46c2.877-.56-.163-2.955-3.69-6.849-.164 4.1.509 6.966 3.69 6.849z"/>
<path d="M239.08 228.53c1.242-1.353-1.19-1.929-4.203-5.31-.444 2.28 2.794 6.454 4.203 5.31zm13.92 15.2c1.574.921 2.652-2.304.69-5.225-.45 3.16-2.133 4.037-.69 5.225zm-34.19-20.35c-3.342 2.004-8.652-5.992-10.068-9.282 2.933 3.776 10.699 7.224 10.068 9.282z"/>
<path d="M221.65 228.04c-1.85 2.05-7.671-3.519-9.694-6.341 3.12 2.702 10.512 3.023 9.694 6.341z"/>
<path d="M224.82 232.22c-.61 2.801-9.106-3.495-11.092-6.476 3.663 3.452 11.649 3.14 11.092 6.476z"/>
<path d="M223.52 235.25c-1.31 2.522-8.22-3.727-9.88-6.987 4.223 3.685 10.95 4.493 9.88 6.987zm-3.55-12.28c2.18-2.299 1.252-3.376-.338-7-.869 3.721-2.18 5.206.338 7zm2.89 4.34c3.954.174.038-4.638-.897-8.68.344 4.607-1.014 8.238.897 8.68z"/>
<path d="M225.38 231.13c2.74-.62 1.95-4.497-.15-9.193.436 5.073-2.321 8.005.15 9.193zm-.93 7.67c-1.03 3.08-8.826-4.056-10.067-6.755 3.943 3.312 10.763 4.445 10.067 6.755z"/>
<path d="M229.12 243.61c-1.17 3.082-9.34-3.167-11.839-6.568 4.922 3.872 12.443 3.513 11.839 6.568z"/>
<path d="M233.88 248.46c-1.31 4.294-9.853-2.56-12.399-5.915 5.436 4.151 13.096 2.86 12.399 5.915zm-8.03-11.03c2.32 1.201 3.258-5.384 1.949-10.033.017 5.074-4.654 8.845-1.949 10.033z"/>
<path d="M229.81 242.66c2.788.828 1.904-6.27-.478-10.873-.309 4.561-2.366 8.892.478 10.873zm4.95 4.9c3.114.174.971-6.084-1.597-9.613.437 4.607-1.013 9.079 1.597 9.613zm-5.46 2.67c-.936 1.586-3.226-1.347-6.986-3.489 3.382.885 7.402 2.019 6.986 3.489zm-1.78-52.74c2.906-2.15.69-6.173 0-9.998-.935 3.628-3.397 8.389 0 9.998zm-.1 5.36c-4.366-.524-3.71-6.171-3.84-9.75 1.312 4.858 4.891 5.679 3.84 9.75zm.69-.73c3.694-.214 3.498-4.417 3.695-8.668-1.872 3.907-4.09 4.514-3.695 8.668z"/>
<path d="M227.96 207.34c-2.873.23-4.366-2.594-5.023-6.993 2.725 4.054 5.203 2.79 5.023 6.993zm1.03-.35c3.694.475 3.104-3.825 2.955-6.995-1.132 3.022-4.136 3.974-2.955 6.995z"/>
<path d="M223.23 205.17c.295 2.807 2.07 7.634 4.926 6.55 1.181-3.448-2.513-4.137-4.926-6.55z"/>
<path d="M229.04 212.02c-1.28-2.462 2.905-3.695 3.792-6.895.509 4.58.082 7.584-3.792 6.895zm-11.91-29.18c2.3-2.477.269-6.406-.42-10.231-.936 3.628-2.557 8.435.42 10.231zm-.07 4.61c-4.039.41-5.016-7.804-5.427-11.337 1.313 4.859 5.965 7.08 5.427 11.337zm.83-.08c2.854-1.474 2.191-4.65 3.088-7.035-1.919 2.928-3.669 3.347-3.088 7.035z"/>
<path d="M217.09 192.75c-4.225.362-6.742-8.739-6.874-12.318 1.313 4.859 7.366 7.5 6.874 12.318zm.81-.14c3.973-.914 3.498-3.483 2.902-7.642-1.265 4.188-3.483 3.3-2.902 7.642z"/>
<path d="M217.04 198c-4.646.788-4.32-6.56-8.009-11.893 3.191 3.96 8.936 8.95 8.009 11.893zm1.05-.25c3.507.102 3.85-5.179 3.656-7.32-.807 2.133-4.93 4.159-3.656 7.32z"/>
<path d="M209.78 192.34c1.742 5.654 4.216 11.32 7.259 10.89 1.46-3.215-2.887-3.624-7.259-10.89z"/>
<path d="M218.14 202.4c-1.28-2.462 2.905-3.695 3.792-6.895.509 4.58.082 7.584-3.792 6.895zm-7.16-3.6c2.487 5.094 3.609 10.948 7.024 10.097 1.275-3.961-3.771-4.79-7.024-10.097z"/>
<path d="M218.71 207.93c-1.467-2.695 2.719-3.648 3.745-7.362.556 4.86.036 8.33-3.745 7.362zm7.16-34.48c2.451.663 5.022-2.09 4.131-6.208-2.801.697-4.087 3.24-4.131 6.208zm-7.84-2.06c.214 1.159 1.623 1.264 1.214-.373-.342-1.328-.4-2.327 0-3.407.548-1.353.365-3.658-.047-4.62-.416-1.015-1.793-.42-1.214.375.638.92.672 2.837.233 3.732-.577 1.32-.42 3.075-.186 4.293zm22.87 15.92c-.947 1.393-2.881.541-1.408-1.372 1.208-1.549 2.928-2.814 3.055-4.414.1-2.029 1.291-5.107 2.373-6.145 1.118-1.106 2.409.45 1.214 1.188-1.342.872-2.214 4.456-2.185 5.836-.045 2.001-2.041 3.447-3.049 4.907zm-2.98-2.24c-.947 1.393-2.457.585-1.601-1.652.722-1.549.8-3.468 1.604-4.6 1.125-1.717 3.03-3.147 4.112-4.186 1.118-1.106 2.046-.04 1.021.908-1.244 1.245-2.595 2.795-3.345 3.97-1.4 2.28-.783 4.1-1.79 5.56zm-15.74-7.21c-.112 1.967 1.47 2.443 1.4-.409-.072-2.978-2.179-5.702-.886-10.235.68-2.217.691-6.281.28-8.441-.363-2.142-1.887-.743-1.308.925.638 1.935-.12 5.645-.607 7.511-1.463 5.434 1.207 8.08 1.121 10.65zm4.32-10.88c-.232 1.81-1.764 1.974-1.319-.582.371-2.075.435-3.635 0-5.321-.596-2.114-.397-5.714.05-7.216.452-1.585 1.95-.656 1.32.584-.694 1.439-.73 4.432-.254 5.83.627 2.063.457 4.802.203 6.705zM210.94 204c.758.902 2.036.298.871-.923-.952-.987-.639-1.298-1.22-2.5-.574-1.343-.544-2.084-1.237-3.044-.613-.91-1.535.019-.917.785.775.906.561 1.574 1.035 2.45.877 1.5.663 2.288 1.468 3.232zm20.4 24.61c2.44 1.2 4.291 4.196 4.413 6.636.207 2.809.612 5.18 1.873 7.176-2.008-.559-2.97-3.76-3.255-6.825-.29-3.173-1.999-4.549-3.031-6.987zm5.08 5.88c1.688 3.116 4.049 4.304 4.17 6.617.204 2.66.406 2.797 1.127 5.413-1.987-.53-2.487-.703-3.024-4.684-.33-2.798-2.57-4.772-2.273-7.346z"/>
<path d="M288.97 263.32c.949 1.788 2.038 4.51 4.013 4.013.03-1.37-2.131-2.318-4.013-4.013zm2.94.61c3.835 1.572 7.147 1.184 7.56 3.595-3.598.388-4.914-1.09-7.56-3.595zm-16.06-12.69c2.583 2.116 4.259 4.531 5.04 7.653.815 2.908 1.96 5.226 3.641 7.84-2.738-1.867-4.46-4.407-5.32-7.467-.757-3.009-1.65-5.257-3.361-8.026zm3.18-.01c2.77 2.21 5.38 4.719 6.16 7.84.815 2.908 1.308 5.134 3.175 8.027-2.925-1.867-4.086-4.688-4.947-7.748-.756-3.007-2.49-5.255-4.388-8.119zm9.14 7.24c-.076-.546.297-1.023.747-1.166a33.429 33.429 0 0 1 2.612-.84c.986-.233 1.538.47 1.541.933.005.77.04 1.423 0 2.006-.053.726-.192.78-.653.888-.738.124-1.685.25-2.426.746-.588.361-1.153.076-1.447-.559-.19-.485-.294-1.433-.374-2.008zm10.63 0c.068-.546-.22-1.07-.621-1.213-.781-.327-1.56-.407-2.38-.374-.912-.014-1.141.192-1.144.654-.004.77-.037 1.516 0 2.099.048.726.032.78.444.888.66.124 1.784.157 2.447.653.525.36 1.124.075 1.153-.606-.013-.513.03-1.526.1-2.101z" stroke="none"/>
</g>
<use height="100%" width="100%" x="-600" xlink:href="#a" transform="scale(-1 1)"/>
<g stroke="none">
<path d="M328.54 286.65c.047 1.181.188 2.131.888 3.08-4.076-1.633-9.831-.759-13.767 1.074-1.756.838-3.88-.958-1.821-2.66 2.93-2.374 9.706-1.028 14.7-1.494zm-57.505-.062c.057 1.113-.072 2.133-.481 3.106 4.43-1.835 9.187-.31 13.664 1.494 3.077 1.273 3.325-.93 2.782-1.692-.934-1.353-2.742-2.838-5.028-2.87-1.522-.021-7.382-.074-10.937-.038zm3.74-21.642c-1.236-.533-2.672-.02-3.96 1.335-4.327 4.24-9.404 8.371-13.502 11.584-1.529 1.329-3.091 3.712 3.431 6.094.237.09 4.991 1.852 8.004 1.964 1.23-.034 1.227 1.803.999 2.293-.52.978-.143 1.352-1.193 2.293-1.095.924.117 2.12.977 1.307 3.672-3.188 9.627-1.148 15.366.718 1.356.375 3.837.27 3.815-1.6.024-2.038 1.5-3.48 2.404-3.532 2.343.406 13.919.535 17.485.102 2.079-.27 2.204 2.848 3.316 4.077.767.815 3.72 1.031 5.743.137 4-1.858 10.097-1.858 12.582-.082 1.021.778 1.828.147 1.247-.643-.748-1.08-.731-1.58-1.103-2.433-.933-1.898-.188-2.363.79-2.5 11.054-1.426 14.582-5.197 11.202-8.272-4.364-3.828-9.222-7.676-13.408-12.198-1.135-1.2-1.885-1.68-4.247-.699-7.221 3.289-16.388 5.687-25.358 5.862-8.347.072-19.824-3.79-24.589-5.807z"/>
<path d="M326.62 265.54c-.58.058-1.197.238-1.656.406-8.921 3.134-17.117 5.328-25.656 5.313-8.335-.016-17.066-2.31-24.906-5.531-.446-.191-.96-.161-1.469-.032-.509.13-1.012.366-1.344.688-3.64 3.626-7.582 7.148-11.812 10.344-.639.488-.535 1.73.5 2.156h.031c8.305 2.98 16.412 8.532 39.625 8.313 23.433-.222 31.746-5.64 39.188-8.125.525-.2 1.065-.5 1.313-.97a1.03 1.03 0 0 0 .062-.812c-.095-.286-.283-.554-.625-.843h-.03c-4.224-3.453-8.75-6.207-11.72-10.406-.334-.48-.92-.558-1.5-.5zm.031.438c.507-.051.895.027 1.094.312 3.041 4.301 7.621 7.074 11.812 10.5.3.254.442.48.5.656a.498.498 0 0 1-.031.438c-.15.284-.59.57-1.063.75-7.534 2.515-15.668 7.904-39.03 8.125-23.116.218-31.095-5.303-39.47-8.313-.754-.31-.687-1.16-.406-1.375 4.242-3.206 8.227-6.741 11.875-10.375.25-.243.653-.45 1.094-.562.44-.113.912-.131 1.219 0 7.879 3.238 16.613 5.578 25.03 5.594 8.619.015 16.904-2.204 25.845-5.344.445-.163 1.024-.356 1.53-.406z" fill="#bd6b00"/>
<path d="M269.71 114.56c-.068-1.379 2.07-1.484 1.824.412-.313 2.362 4.459 8.342 4.854 12.029.265 2.473-1.453 4.637-3.154 5.984-2.086 1.616-5.293 1.394-6.794.467-.908-.731-1.735-3.234-1.056-4.224.24-.334 1.328 3.673 3.722 3.657 3.258-.02 5.896-2.468 5.993-4.65.167-3.802-5.33-9.81-5.389-13.676zm9.53 9.39c.539-.385 1.399 1.296.792 1.716-.505.337-1.492-1.25-.792-1.716zm1.45-3.41c-.272.132-.814-.056-.652-.287.762-1.089 2.387-2.728 3.565-3.3.362-.176.995.463.776.776-.705 1.007-2.42 2.195-3.689 2.811zm12.59-9.99c.302-.63 2.117-1.344 2.58-1.77.427-.439.631.37.448.751-.302.63-1.868 1.696-2.555 1.724-.37.016-.656-.324-.473-.705zm4.31.2c.393-1.107 1.66-2.786 2.533-3.339.448-.283 1.252-.06 1.101.364-.333.94-1.884 2.581-2.927 3.355-.316.282-.798-.123-.707-.38zm-3.69 2.77c-.263.132-.12.691.133.776.538.18 1.52.214 1.964-.03.645-.398.35-2.845-.513-1.538-.58.806-1.002.547-1.584.792zm-7.29 5.62c-1.318-1.026.355-2.464 1.732-1.46 2.683 2.024-4.003 9.778-7.64 13.403-.666.71-1.25-1.078-.397-1.848 2.608-2.212 5.05-4.855 6.747-7.586.327-.525.64-1.658-.442-2.509zm15.27-6.67c.164-.982-1.589.02-1.621-1.281-.017-.69 1.915-1.173 2.722-.38 1.365 1.384.345 3.718-1.924 3.865-1.891.084-5.046 2.685-4.566 3.232.546.675 5.45 1.121 8.302.675 1.765-.248 1.395 1.331-.414 1.545-1.747.201-3.171.015-4.805.528-1.922.549-2.76 3.13-3.828 4.092-.238.167-.88-.846-.636-1.227.77-1.203 1.996-3.045 3.346-3.572.852-.345-2.348-.454-3.37-.745-.81-.244-.574-1.274-.264-1.848.412-.895 3.429-3.916 4.645-3.867 1.142.049 2.3-.284 2.413-1.017zm5.08.26c.567-.5.858-1.338 1.453-1.848.326-.327.847.065.76.853-.073.621-.907 1.156-1.468 1.623-.456.342-.986-.396-.745-.628zm6.47-2.3c.845-.093 1.055 1.537.131 1.801-.56.187-1.05-1.705-.131-1.801zm-2.13 5.04c-.013 1.404.68 1.275 2.002 1.227 1.283-.049 2.412.033 2.407-1.235-.006-1.314-.727-2.464-.939-1.57-.186.84-.334 2.216-.823 1.617-.46-.515-.278-.628-1.071.217-.44.466-.49-.226-.754-.66-.184-.257-.82.208-.822.404zm-9.22 7.16c-.315 1.858-.026 4.459.925 4.488 1.175.038 3.607-4.061 4.759-6.188.69-1.187 1.877-1.394 1.382-.156-.749 1.91-.682 5.998-.024 7.199.354.647 2.964-.593 3.386-1.515.767-1.675.143-4.762.412-6.647.13-1.237 1.263-1.496 1.203-.349-.112 2.052-.307 5.815-.162 7.524.086.982 2.894 2.432 3.346-.543.238-1.872 1.202-3.719-.047-5.793-.774-1.297 1.136-1.134 2.166.637.72 1.206-.607 3.202-.56 4.744.12 2.373-1.726 3.722-3.066 3.75-1.197.024-1.977-1.446-2.957-1.467-1.089-.07-2.207 1.693-3.106 1.63-3.486-.238-1.64-5.333-2.703-5.395-1.181-.07-2.574 4.994-4.03 4.813-1.434-.172-2.919-4.127-2.322-5.8.54-1.557 1.558-1.922 1.398-.932z"/>
<path d="M318.96 114.6c-1.701-1.038.108-3.736.939-2.788 1.606 1.923 3.224 6.487 4.356 6.864.716.24.683-3.374 1.188-5.016.326-1.213 1.793-.817 1.513.737-.096.52-1.917 6.422-1.777 6.655 1.262 2.522 2.51 5.081 3.3 7.788.326 1.167-1.075.381-1.243.139-.894-1.338-2.46-6.452-2.46-6.219-.72 3.598-.89 4.66-1.655 7.717-.233.98-1.675.802-1.35-.924.313-1.418 2.375-8.392 2.259-8.594-1.621-2.862-3.104-5.125-5.07-6.359z"/>
<path d="M322.03 131.2c-.474-.054-1.21 1.055 1.152 1.49 3.156.572 6.61-.491 7.67-3.586 1.212-3.687 2.013-7.177 2.646-8.493.791-1.535 1.803-1.411 1.056-3.651-.526-1.612-1.51-1.126-1.716-.264-.552 2.35-2.646 9.952-3.3 11.352-1.233 2.555-3.718 3.565-7.508 3.152z"/>
<path d="M328.35 119.07c-.338-.725-1.127-.164-.986.63a1.197 1.197 0 0 0 1.25 1.086c.692-.024 2.155.023 2.159-1.125.002-.807-.632-1.481-1.103-.591-.45.806-1.03.722-1.32 0zm.79-3.04c-.243.168-.025 1.066.264 1.056 1.031-.035 2.492-.363 3.275-.908.229-.16.133-.702-.193-.69-.994.032-2.575.006-3.346.542zm8.76 2.26c.747-1.167 2.806-1.286 2.066.38-.525 1.148-5.652 11.055-6.352 12.315-.764 1.417-1.389.715-.846-.388.73-1.42 4.898-11.962 5.132-12.307z"/>
<path d="M330.18 133.04c-.219-.788-1.442-1.954-1.304.155.243 3.828 5.503 2.618 7.096 1.257 1.445-1.28.19 4.323 2.112 4.922 1.058.34 3.05-1.105 4.03-2.376 2.717-3.525 4.446-8.578 7.058-12.058.987-1.36-.54-2.332-1.157-1.25-2.272 3.81-5.094 11.586-8.176 13.605-2.513 1.608-1.768-2.07-1.856-3.176-.11-.81-1.097-2.003-2.415-.908-.921.72-2.352 1.305-3.648 1.188-.752-.042-1.386-.029-1.74-1.359z"/>
<path d="M339.57 125.93c.028-.216-1.112-.314-1.056.792.04.819 1.019 1.041 1.188.924 1.54-1.12-.328-.562-.132-1.716zm-2.24 4.49c-.303.071-.582 1.04.133 1.095.653.046 3.213-.229 3.92-.187.458-.017.632-.892-.348-.845-1.19.06-2.754-.239-3.705-.063zm-61.96-16.66c.406.02 1.52 1.462 1.447 1.913-.05.213-1.191-.031-1.54-.326-.258-.219-.154-1.599.093-1.587zm-5.369 10.452c-1.017.555.162 1.651.924 1.188 2.86-1.853 7.154-3.799 8.052-7.468.287-1.243 1.443-3.148 2.54-3.573 1.059-.411 2.598 1.917 3.602.085.59-1.047 2.654.687 3.152-.433.607-1.354.318-2.099.343-3.395-.045-.85-.693-1.103-1.164.272-.245.623.043 1.251-.156 1.576-.152.247-.625.486-.9.28-.253-.19-.078-.72-.685-.955-.235-.118-.612-.216-.776.086-.72 1.284-1.12 2.482-2.128 1.117-.898-1.176-1.353-3.209-2.011-.427-.237.982-1.73 2.407-2.61 2.407-1.099 0-.823-2.894-3.237-2.453-1.241.264-1.155 2.64-.97 3.517.305 1.22 3.931.344 3.751 1.141-.62 2.771-4.467 5.406-7.727 7.035zM247.3 137.42c-.154.464.462 1.723 1.101 1.816.628.046.948-1.36.746-1.816-.15-.336-1.737-.329-1.847 0zm3.33 4.88c-.403-.434-1.589.73-.63 1.553.54.436 2.513 1.07 3.053.148.73-1.185-.72-5.488-.078-6.057.502-.444 2.828 2.875 3.976 3.114 2.697.373 2.05-4.619 4.956-4.28 1.98.264 2.198-2.211 1.922-3.756-.22-1.483-2.622-3.624-3.726-4.582-1.452-1.21-2.1.892-1.188 1.584 1.173.94 3.236 2.837 3.565 4.093.155.592-1.434 1.77-2.02 1.451-1.35-.737-2.607-3.898-3.789-4.62-.402-.246-1.393.31-.916 1.296.536 1.057 2.905 2.693 3.044 3.821.125 1.029-1.056 3.253-1.831 3.253-.853 0-3.028-2.688-3.706-3.953-.34-.606-1.515-.547-1.638.29-.195 1.255.182 3.912.481 5.558.238 1.559-.878 1.638-1.475 1.087zm-4.07-8.57c-.34.384.792 1.134 1.017.94.436-.378 2.128-2.308 1.802-2.983-.29-.601-2.618-1.918-2.997-1.266-.702 1.128 2.195 1.634 1.74 1.965-.223.128-1.02.679-1.562 1.344zm4.17-8.46s.728 2.49 1.32 1.452c.48-.719-1.32-1.452-1.32-1.452zm1.19 3.96c-.266.146-1.017.74-.528 1.056.773.457 2.875.82 2.421-.676-.275-.88 3.171.025 2.331-2.36-.22-.66-1.259-1.612-1.77-1.747-.325-.085-1.429.52-.738.854.504.26 2.024 1.154 1.46 1.74-.642.612-1.089-.275-1.887-.132-.401.076-.14 1.218-.366 1.53-.126.172-.706-.383-.923-.265zm5.48-9.46c-.435.217-1.214 1.396-1.242 1.941-.016.291.303.691.552.567.456-.228 1.16-1.344 1.187-1.856.017-.324-.227-.787-.497-.652zm2.84-.31c-.84-1.027.891-2.55 1.67-.496.47 1.29 5.488 7.892 6.514 10.132.727 1.516-.026 2.142-.924 1.056-2.541-3.242-4.626-7.283-7.26-10.692zm5.15.14c.895-.97 2.721-2.95 2.23-4.053-.378-.95-1.488-.856-1.678-.636-1.086 1.296.772.97.504 1.413-.553 1.038-1.104 1.61-1.39 2.608-.066.234.173.843.334.668zm77.78 3.24c-.643-.52.632-3.044 1.494-2.053 2.368 2.74 3.469 11.636 4.153 18.294 0 0-1.064.887-1.073.746 0-3.547-1.425-14.397-4.574-16.987zm-53.1-8.66c-.766-1.76 1.15-2.412 1.436-1.157 1.33 5.783 4.517 10.16 6.942 14.093.73 1.23.145 1.962-1.63.83-1.23-.842-2.478-3.916-3.083-4.037-1.094-.204-3.713 4.993-9.07 3.51-1.385-.388-1.293-4.508-1.32-6.329-.058-.853.885-1.078.917.086.049 1.678-.002 5.164 2.144 5.281 1.75.098 5.627-2.376 6.444-4.31.728-1.99-1.952-5.942-2.78-7.967z"/>
<path d="M344.61 138.38c.428-1.191 6.114-10.735 6.86-12.835.383-1.013 2.015 1.737.421 3.22-1.4 1.26-5.53 8.034-6.301 10.408-.355 1.072-1.432.562-.98-.793z"/>
<path d="M354.28 129.28c1.05-3.935 3.593.607 1.353 2.847-3.458 3.387-4.5 9.854-9.987 10.827-1.479.318-4.082-.666-4.853-1.214-.301-.214.194-1.618 1.119-.933 1.337 1.044 4.098 1.28 5.555.093 3.118-3.06 5.657-7.113 6.813-11.62zm-57.01 12.74c-.247.284-1.004.238-1.072.637-.297 1.48 0 2.23-.326 3.655-.312 1.365-1.259 1.416-1.194.304.086-1.442 1.274-3.478.435-3.618-.56-.13-.99-.879-.413-1.248 1.092-.757 1.679-.641 2.43-.413.26.08.328.464.14.683z"/>
<path d="M296.5 140.09c-1.448 1.266-2.79 1.784-4.123 3.384-.544.656-.529 1.57-.854 2.406-.326.888-1.375 1.062-1.7.877-.543-.357-.465-2.003-1.071-1.117-.515.816-.847 1.94-1.608 1.926-.689-.014-1.987-1.422-1.329-1.49 2.252-.23 2.225-2.033 3.068-2.151.946-.127 1.008 1.488 1.592 1.165.46-.236.675-2.117 1.173-2.625 1.527-1.56 2.735-2.385 4.293-3.531.788-.629 1.35.505.559 1.156zm5.28 4.85c-1.159.234-.962 1.724-.621 1.909.561.262 1.43.372 1.755-1.342.151-.703.289 3.498 1.831 1.88.888-.981 3.087.178 4.008-1.056.66-.822.863-1.396.349-2.61-.15-.369-1.053-.187-1.001.709.045.755-.535 1.687-1.29 1.528-.367-.067.206-1.847-.162-2.33-.203-.265-.511-.236-.713.039-.283.384.284 2.09-.646 2.315-1.174.27-.56-1.141-1.056-1.4-1.599-.806-1.753.21-2.454.358zm9.05-2.86c.85-.239.584-.24 1.921-1.334.52-.395.624.76.569 1.216-.097.775-1.018.228-1.304.91-.418.886-.248 2.948-.388 3.788-.096.431-.787.394-.853.054-.198-1.024.14-2.026.108-3.307-.011-.435-.634-1.117-.053-1.327zm-5-2.62c-.205.927-.19 1.69-.19 2.325.047.514.986.183.982.118-.047-.814.139-1.94-.102-2.253-.13-.17-.642-.365-.69-.19z"/>
<path d="M299.54 130.19l-1.458 5.594-2.03-3.75v3.844l-4.374-5.188 1.521 5.563-3.93-3.344 2.092 3.781-6.975-4.5 4.438 5.188-5.58-2.75 3.995 3.375-9.13-3.438 8.813 4.344c3.223-1.588 7.64-2.563 12.554-2.563 4.896 0 9.335.985 12.554 2.563.012.006.052-.006.064 0l8.75-4.344-9.004 3.469 3.931-3.406-5.516 2.718 4.375-5.156-6.975 4.5 2.093-3.781-3.932 3.344 1.522-5.563-4.375 5.22.063-3.876-2.029 3.75-1.458-5.594z"/>
</g>
</g>
<path d="M249.08 299.688c0 .501-.076 1.226-.227 2.172h-.35c0-.645-.03-1.14-.09-1.488a7.364 7.364 0 0 0-.34-1.239 5.776 5.776 0 0 0-.459-1.03 11.338 11.338 0 0 0-.797-1.143l.701-1.73c.325.414.555.733.69.955.155.257.3.58.436.968a7.45 7.45 0 0 1 .436 2.535m5.5-3.351c0 .528-.1.924-.3 1.188-.2.264-.542.453-1.024.566.14.49.231.873.277 1.149.049.275.073.583.073.922 0 .219-.013.453-.04.702-.022.249-.065.584-.13 1.007h-.316c0-.377-.021-.702-.063-.973a4.398 4.398 0 0 0-.175-.776 28.8 28.8 0 0 0-.3-.797 8.374 8.374 0 0 0-.532-1.183c-.173-.317-.458-.752-.854-1.307l.543-1.63c.287.412.538.696.753.855.215.155.47.232.763.232.642 0 .962-.347.962-1.041h.328c0 .226.006.415.017.566.012.147.017.32.017.52m5.051 3.825l-.407 1.697c-.256-.072-.465-.273-.628-.605-.135-.276-.234-.625-.294-1.047a9.878 9.878 0 0 1-.085-1.313c-.343.09-.615.136-.814.136-.397 0-.725-.104-.985-.311a.99.99 0 0 1-.385-.798c0-.69.177-1.31.532-1.862.358-.554.762-.831 1.21-.831.348 0 .59.098.725.294.151.215.243.46.277.735.034.276.051.808.051 1.596 0 .705.057 1.203.17 1.494.09.226.302.498.634.815m-1.528-2.818c-.068-.43-.294-.645-.679-.645a.825.825 0 0 0-.458.136c-.14.09-.21.17-.21.237 0 .227.272.34.815.34a2.2 2.2 0 0 0 .532-.068m6.875 2.395l-.203 2.06c-.404-.284-.778-.795-1.12-1.534-.36-.773-.721-1.87-1.087-3.288-.313 1.366-.572 2.367-.775 3.005-.2.634-.398 1.082-.594 1.347-.132.177-.344.356-.634.537l.045-1.969c.374-.51.636-.898.787-1.166a6.07 6.07 0 0 0 .548-1.386c.148-.532.28-1.243.396-2.133h.374c.23.894.453 1.605.668 2.133.2.498.433.938.701 1.318.189.268.487.627.894 1.076" fill="#fff"/>
<path d="M280.521 319.165c.275.323.468.639.58.949.108.306.186.744.235 1.314l-.614.05c-.261-.512-.516-.913-.763-1.202a15.15 15.15 0 0 0-.913-.943c-.42-.407-.85-.804-1.29-1.19a27.306 27.306 0 0 0-1.689-1.353c-.24-.178-.392-.306-.457-.382-.096-.112-.171-.333-.227-.663a8.923 8.923 0 0 1-.11-1.245l2.142 1.742a35.26 35.26 0 0 1 2.008 1.764c.408.392.774.78 1.098 1.16m-7.6-4.58l-.128 1.576-2.523-.069.19-1.608 2.462.1m6.637 7.054l-6.012 1.832-1.106-1.529 5.197-1.584a6.28 6.28 0 0 0-.547-.683c-.201-.2-.43-.356-.689-.47a1.132 1.132 0 0 1-.358.761 2.06 2.06 0 0 1-.862.49c-.462.14-.924.16-1.385.058-.462-.102-.8-.303-1.018-.603-.32-.442-.492-1.03-.515-1.764-.026-.806.194-1.28.662-1.422.606-.185 1.426-.016 2.46.506 1.033.522 1.826 1.165 2.38 1.93l1.793 2.478m-4.617-3.21a3.091 3.091 0 0 0-.68-.238.903.903 0 0 0-.459.009.542.542 0 0 0-.358.294.392.392 0 0 0 .049.418c.062.086.167.143.314.171.15.023.31.009.477-.042a.888.888 0 0 0 .346-.195c.1-.094.204-.233.31-.417m-6.44-1.23l-.368 1.56-2.5-.23.38-1.576 2.488.246m5.927 6.089l-1.335.306a4.209 4.209 0 0 1-1.357.1 2.832 2.832 0 0 1-1.203-.402c-.221.402-.61.74-1.165 1.012a5.896 5.896 0 0 1-1.283.439l-.947.217-.868-1.592.947-.217c.5-.115.84-.21 1.022-.287.185-.082.417-.221.696-.417a4.673 4.673 0 0 0-.74-.39c-.228-.084-.43-.106-.604-.066a.32.32 0 0 0-.164.09.485.485 0 0 0-.1.208l-.417.056c-.384-.706-.472-1.253-.263-1.639.213-.391.725-.68 1.537-.866.837-.192 1.55-.235 2.143-.13.596.1.995.336 1.197.707.108.2.15.405.123.617-.028.209-.132.51-.31.902.124.054.27.087.438.097.168.01.318 0 .45-.031l1.335-.307.868 1.593m-6.383 1.485l-1.302.204c-.726.114-1.322.002-1.788-.333-.519-.37-.966-1.06-1.342-2.07l-.641-1.72c-.146-.39-.343-.681-.59-.872-.12-.092-.363-.214-.728-.365l.443-1.667c.48.266.849.544 1.109.836.303.34.561.793.772 1.36l.443 1.19c.314.84.618 1.41.913 1.71.234.24.5.336.797.29l1.302-.205.612 1.642m-5.565-5.978l-.841 1.48-2.38-.549.848-1.494 2.373.563m1.384 6.702l-5.933.538-.36-1.673 4.985-.452a1.847 1.847 0 0 0-.531-.673c-.118-.098-.379-.262-.783-.493l.444-1.532c.549.305.95.641 1.202 1.007.259.365.47.923.63 1.673l.346 1.605m-4.763.76a13.04 13.04 0 0 1-1.77-.159 8.346 8.346 0 0 1-1.37-.362 4.466 4.466 0 0 1-1.021.301c-.291.045-.726.057-1.306.038l-1.558-.052c-.427-.014-.759-.098-.996-.25-.237-.154-.441-.4-.612-.742-.378.335-.79.57-1.235.705-.38.116-.827.165-1.343.148l-1.367-.046.133-1.686 1.367.045c.67.022 1.236-.081 1.702-.31.604-.3.933-.773.984-1.422l.626.083c-.023.132-.048.282-.074.451-.026.17-.048.357-.064.564-.017.21.081.39.293.538.212.148.461.227.748.236l1.176.04c.777.025 1.337-.027 1.68-.156.414-.156.64-.466.676-.929.008-.1.063-.186.165-.262a2.61 2.61 0 0 1 .37-.193l.377-.174c.007.08.008.187.004.324-.005.132-.008.22-.011.26-.018.228-.093.528-.225.9.23.083.49.156.778.22.29.063.595.115.918.154.01-.14-.055-.325-.196-.553-.142-.229-.21-.382-.203-.461a.415.415 0 0 1 .086-.246c.014-.02.09-.082.225-.185l.87-.686c.15.266.253.508.306.725.06.213.077.48.052.798l-.185 2.344m-9.007-6.93l-1.499 1.06-1.13-.698-1.112.83-1.487-.897 1.42-1.01 1.2.67 1.158-.847 1.45.891m-2.356 6.46l-5.809-.951.638-1.638 4.88.8a1.296 1.296 0 0 0-.102-.753c-.052-.12-.198-.336-.438-.649l1.3-1.31c.33.416.507.825.53 1.226.027.401-.102.97-.388 1.704l-.611 1.571m-4.89-.758l-1.256-.302c-.7-.168-1.1-.476-1.197-.924-.112-.495.11-1.23.667-2.203l.948-1.66c.215-.376.302-.689.26-.937-.02-.12-.116-.309-.288-.566l1.8-1.223c.17.394.237.76.202 1.095-.04.392-.217.862-.53 1.41l-.655 1.146c-.464.811-.702 1.394-.714 1.749-.013.284.125.46.412.53l1.256.302-.905 1.583m-2.975-6.286l-2.039.86-1.4-1.364 2.056-.868 1.383 1.372m-.867 5.266c-.424.501-.84.877-1.25 1.128-.405.247-.86.402-1.363.463-.498.064-1.129.035-1.892-.086a11.805 11.805 0 0 1-2.199-.55c-1.359-.485-2.27-1.02-2.735-1.606-.462-.58-.443-1.166.058-1.758a5.588 5.588 0 0 1 1.522-1.256c.648-.37 1.658-.789 3.03-1.258l.31.408c-1.072.416-1.812.73-2.219.944a3.322 3.322 0 0 0-.975.765c-.323.381-.274.805.147 1.271.429.465 1.155.88 2.178 1.244 1.007.36 1.96.536 2.86.53.9-.004 1.503-.188 1.81-.551.19-.225.318-.47.382-.735.07-.264.113-.709.127-1.337l1.982-1.206c.001.6-.027 1.003-.085 1.21-.1.375-.355.806-.766 1.292l-.922 1.088" fill="#bf0000"/>
</svg>

14
src/main/resources/static/files/assets/icon/flag-icons/fonts/ag.svg

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill="#25ff01" d="M108.95 47.6h464.86v464.86H108.95z"/>
</clipPath>
</defs>
<g clip-path="url(#a)" fill-rule="evenodd" transform="translate(-120 -52.427) scale(1.1014)">
<path fill="#fff" d="M0 47.6h693V512H0z"/>
<path d="M1.53 48.16h690.83v196.2H1.53z"/>
<path fill="#0061ff" d="M128.29 232.12h458.52v103.35H128.29z"/>
<path d="M692.53 49.19v463.27H346.86L692.53 49.19zm-691.34 0v463.27h345.67L1.19 49.19z" fill="#e20000"/>
<path d="M508.78 232.22l-69.285-17.58 58.944-44.467-72.388 10.34 37.228-63.08-64.115 37.23L410.54 81.24l-43.432 57.91-17.58-67.217-19.648 69.285-43.433-58.944 12.41 75.49-64.115-39.296 37.228 63.08-70.32-11.375 57.91 43.433-72.387 18.614h321.61z" fill="#ffd600"/>
</g>
</svg>

767
src/main/resources/static/files/assets/icon/flag-icons/fonts/ai.svg

@ -0,0 +1,767 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".67" d="M0 0h512v512H0z"/>
</clipPath>
</defs>
<g clip-path="url(#a)">
<path fill-rule="evenodd" fill="#fff" d="M-167.86.45h429.52v256.07h-429.52z"/>
<path d="M-167.86.45l-.018 19.22 102.5 63.22 38.565 1.34L-167.863.45z" fill="#c00"/>
<path d="M-123.97.45L.29 78.366V.45h-124.26z" fill="#006"/>
<path d="M16.866.45v99.468h-184.73v56.84h184.73v99.467h56.84v-99.468h184.73v-56.84H73.705V.45h-56.84z" fill="#c00"/>
<path d="M90.283.45v73.417L211.853 1.02 90.283.45z" fill="#006"/>
<path d="M94.12 81.87l34.19-.33L261.13 1.02l-35.24.688L94.12 81.87z" fill="#c00"/>
<path d="M259.78 22.495L158.32 82.89l100.11.45v89.995h-85.258l84.47 54.942 1.24 27.948-45.117-.647-123.48-72.77v73.417H.29v-73.417l-115.83 73.22-52.315.197v255.78h852.58V.455l-424.04-.46m-428.54 28.87l-.45 53.12 89.757 1.35-89.307-54.472zm-.005 144.465v54.47l85.258-53.9-85.258-.57z" fill="#006"/>
<path d="M160.45 175.58l-35.543-.33 133.97 80.07-.88-18.318-97.55-61.422zm-295.02 81.09L-8.95 177.5l-32.994.262-125.92 78.79" fill="#c00"/>
<path d="M368.61 245.108l2.165 2.166-2.165-2.166z" fill="#49497d"/>
<path d="M370.775 245.108l2.166 2.166-2.165-2.166z" fill="#0e0e6e"/>
<path d="M364.28 247.274l2.164 2.165-2.165-2.166z" fill="#262678"/>
<path d="M366.444 247.274l2.166 2.165-2.166-2.166z" fill="#808067"/>
<path d="M372.94 247.274l2.166 2.165-2.165-2.166z" fill="#58587b"/>
<path d="M292.817 249.44l2.166 2.165-2.166-2.166z" fill="#0e0e6e"/>
<path d="M359.948 249.44l2.165 2.165-2.165-2.166z" fill="#1b1b74"/>
<path d="M362.113 249.44l2.166 2.165-2.167-2.166z" fill="#6e6c70"/>
<path d="M296.628 253.36c0 55.95-6.45 119.004 35.255 162.823 8.58 9.014 24.9 29.572 38.892 28.783 14.647-.825 33.483-22.5 41.86-33.114 36.304-47.754 30.533-104.713 31.767-160.14-16.393 7.363-24.557 9.788-38.892 9.745-10.618 1.09-26.998-6.045-36.792-10.714-6.4 4.275-15.687 9.373-32.374 9.945-19.273.848-25.38-2.418-39.716-7.33z" fill="#cc3"/>
<path d="M375.106 249.44l2.166 2.165-2.166-2.166z" fill="#99994e"/>
<path d="M377.272 249.44l2.165 2.165-2.165-2.166z" fill="#49497d"/>
<path d="M444.402 249.44l2.166 2.165-2.166-2.166z" fill="#0e0e6e"/>
<path d="M294.983 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M297.148 251.605l2.166 2.165-2.166-2.165z" fill="#6e6c70"/>
<path d="M299.314 251.605l2.165 2.165-2.166-2.165z" fill="#3a3a7c"/>
<path d="M355.617 251.605l2.165 2.165-2.165-2.165z" fill="#1b1b74"/>
<path d="M357.782 251.605l2.166 2.165-2.166-2.165z" fill="#6e6c70"/>
<path d="M359.948 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M368.61 251.605l2.165 2.165-2.165-2.165z" fill="#d0d045"/>
<path d="M377.272 251.605l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M379.437 251.605l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
<path d="M381.603 251.605l2.165 2.165-2.165-2.165z" fill="#3a3a7c"/>
<path d="M437.906 251.605l2.165 2.165-2.164-2.165z" fill="#262678"/>
<path d="M440.07 251.605l2.167 2.165-2.166-2.165z" fill="#53527c"/>
<path d="M442.237 251.605l2.165 2.165-2.165-2.165z" fill="#8d8d5b"/>
<path d="M303.645 253.77l2.165 2.166-2.165-2.166z" fill="#737370"/>
<path d="M305.81 253.77l2.166 2.166-2.166-2.166z" fill="#53527c"/>
<path d="M307.976 253.77l2.165 2.166-2.164-2.166z" fill="#1b1b74"/>
<path d="M351.286 253.77l2.165 2.166-2.164-2.166z" fill="#262678"/>
<path d="M353.45 253.77l2.167 2.166-2.166-2.166z" fill="#6e6c70"/>
<path d="M355.617 253.77l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
<path d="M366.444 253.77l2.166 2.166-2.166-2.166z" fill="#e5e59d"/>
<path d="M301.068 259.444c-1.165 29.392-.27 62.49 4.324 93.94 5.08 16.43 4.4 25.454 11.95 35.3l105.67-.822c6.368-10.36 11.09-26.068 11.7-32.313 5.9-31.763 6.04-66.814 6.182-98.164-10.626 5.65-24.542 9.652-38.048 7.895-10.827-.824-20.832-3.296-32.482-9.88-10.107 6.054-13.63 8.818-30.317 9.525-12.993.64-23.518 1.693-38.98-5.482z" fill="#fff"/>
<path d="M370.775 253.77l2.166 2.166-2.165-2.166z" fill="#f2f1d7"/>
<path d="M372.94 253.77l2.166 2.166-2.165-2.166z" fill="#d9d868"/>
<path d="M381.603 253.77l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
<path d="M383.768 253.77l2.166 2.166-2.166-2.166z" fill="#99994e"/>
<path d="M385.934 253.77l2.165 2.166-2.166-2.166z" fill="#49497d"/>
<path d="M388.1 253.77l2.165 2.166-2.166-2.166z" fill="#0e0e6e"/>
<path d="M431.41 253.77l2.165 2.166-2.166-2.166z" fill="#3a3a7c"/>
<path d="M433.575 253.77l2.165 2.166-2.165-2.166z" fill="#667"/>
<path d="M435.74 253.77l2.166 2.166-2.166-2.166z" fill="#99994e"/>
<path d="M437.906 253.77l2.165 2.166-2.164-2.166m-129.93 2.166l2.165 2.165-2.164-2.164z" fill="#a4a43d"/>
<path d="M310.14 255.936l2.167 2.165-2.166-2.164z" fill="#99994e"/>
<path d="M312.307 255.936l2.165 2.165-2.165-2.164z" fill="#6e6c70"/>
<path d="M314.472 255.936l2.166 2.165-2.166-2.164z" fill="#49497d"/>
<path d="M316.638 255.936l2.165 2.165-2.165-2.164m28.15 0l2.167 2.165-2.166-2.164z" fill="#1b1b74"/>
<path d="M346.955 255.936l2.165 2.165-2.165-2.164z" fill="#53527c"/>
<path d="M349.12 255.936l2.166 2.165-2.166-2.164z" fill="#8d8d5b"/>
<path d="M351.286 255.936l2.165 2.165-2.164-2.164z" fill="#a4a43d"/>
<path d="M362.113 255.936l2.166 2.165-2.167-2.164z" fill="#e5e59d"/>
<path d="M364.28 255.936l2.164 2.165-2.165-2.164z" fill="#fbfaf2"/>
<path d="M375.106 255.936l2.166 2.165-2.166-2.164z" fill="#f2f1d2"/>
<path d="M377.272 255.936l2.165 2.165-2.165-2.164z" fill="#d9d868"/>
<path d="M388.1 255.936l2.165 2.165-2.166-2.164z" fill="#a4a43d"/>
<path d="M390.265 255.936l2.165 2.165-2.165-2.164z" fill="#6e6c70"/>
<path d="M392.43 255.936l2.166 2.165-2.166-2.164z" fill="#3a3a7c"/>
<path d="M420.582 255.936l2.165 2.165-2.165-2.164z" fill="#0e0e6e"/>
<path d="M422.747 255.936l2.166 2.165-2.166-2.164z" fill="#32327b"/>
<path d="M424.913 255.936l2.165 2.165-2.165-2.164z" fill="#58587b"/>
<path d="M427.078 255.936l2.166 2.165-2.166-2.164z" fill="#808067"/>
<path d="M430.694 256.65l1.443.722-1.443-.722z" fill="#a4a43d"/>
<path d="M299.314 258.1l2.165 2.167-2.166-2.166z" fill="#dddc7a"/>
<path d="M301.48 258.1l2.165 2.167-2.166-2.166z" fill="#d0d045"/>
<path d="M318.088 258.816l1.443.722-1.442-.722z" fill="#a4a43d"/>
<path d="M320.97 258.1l2.164 2.167-2.165-2.166z" fill="#808067"/>
<path d="M323.134 258.1l2.166 2.167-2.166-2.166z" fill="#667"/>
<path d="M325.3 258.1l2.165 2.167-2.165-2.166z" fill="#58587b"/>
<path d="M327.465 258.1l2.166 2.167-2.165-2.166z" fill="#49497d"/>
<path d="M340.458 258.1l2.166 2.167-2.166-2.166z" fill="#737370"/>
<path d="M342.624 258.1l2.165 2.167-2.166-2.166z" fill="#99994e"/>
<path d="M344.79 258.1l2.165 2.167-2.166-2.166z" fill="#a4a43d"/>
<path d="M357.782 258.1l2.166 2.167-2.166-2.166z" fill="#e5e59d"/>
<path d="M359.948 258.1l2.165 2.167-2.165-2.166z" fill="#fbfaf2"/>
<path d="M379.437 258.1l2.166 2.167-2.166-2.166z" fill="#f2f1d2"/>
<path d="M381.603 258.1l2.165 2.167-2.165-2.166z" fill="#d9d868"/>
<path d="M393.88 258.816l1.443.722-1.442-.722z" fill="#a4a43d"/>
<path d="M396.76 258.1l2.167 2.167-2.166-2.166z" fill="#808067"/>
<path d="M398.927 258.1l2.165 2.167-2.165-2.166z" fill="#667"/>
<path d="M401.092 258.1l2.166 2.167-2.166-2.166z" fill="#58587b"/>
<path d="M403.258 258.1l2.165 2.167-2.165-2.166z" fill="#3a3a7c"/>
<path d="M413.37 258.816l1.443.722-1.443-.722z" fill="#58587b"/>
<path d="M416.25 258.1l2.166 2.167-2.165-2.166z" fill="#737370"/>
<path d="M418.416 258.1l2.166 2.167-2.166-2.166z" fill="#99994e"/>
<path d="M420.582 258.1l2.165 2.167-2.165-2.166z" fill="#a4a43d"/>
<path d="M437.906 258.1l2.165 2.167-2.164-2.166z" fill="#dddc7a"/>
<path d="M440.07 258.1l2.167 2.167-2.166-2.166z" fill="#d0d045"/>
<path d="M303.645 260.267l2.165 2.165-2.165-2.165z" fill="#f2f1d7"/>
<path d="M305.81 260.267l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
<path d="M307.976 260.267l2.165 2.165-2.164-2.165z" fill="#dddc7a"/>
<path d="M351.286 260.267l2.165 2.165-2.164-2.165z" fill="#d9d868"/>
<path d="M353.45 260.267l2.167 2.165-2.166-2.165z" fill="#e5e3af"/>
<path d="M383.768 260.267l2.166 2.165-2.166-2.165z" fill="#f6f6e4"/>
<path d="M385.934 260.267l2.165 2.165-2.166-2.165z" fill="#e1e18c"/>
<path d="M429.244 260.267l2.165 2.165-2.166-2.165z" fill="#d4d456"/>
<path d="M431.41 260.267l2.165 2.165-2.166-2.165z" fill="#e1e18c"/>
<path d="M433.575 260.267l2.165 2.165-2.165-2.165z" fill="#eeedc1"/>
<path d="M312.307 262.432l2.165 2.166-2.165-2.166z" fill="#f2f1d2"/>
<path d="M314.472 262.432l2.166 2.166-2.166-2.166z" fill="#e0dea1"/>
<path d="M316.638 262.432l2.165 2.166-2.165-2.166z" fill="#dddc7a"/>
<path d="M318.803 262.432l2.166 2.166-2.167-2.166z" fill="#d0d045"/>
<path d="M344.79 262.432l2.165 2.166-2.166-2.166z" fill="#dddc7a"/>
<path d="M346.955 262.432l2.165 2.166-2.165-2.166z" fill="#e5e3af"/>
<path d="M349.12 262.432l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
<path d="M390.265 262.432l2.165 2.166-2.165-2.166z" fill="#eeedc1"/>
<path d="M392.43 262.432l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
<path d="M394.596 262.432l2.165 2.166-2.164-2.166z" fill="#d4d456"/>
<path d="M420.582 262.432l2.165 2.166-2.165-2.166z" fill="#d9d868"/>
<path d="M422.747 262.432l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
<path d="M424.913 262.432l2.165 2.166-2.165-2.166z" fill="#eeedc1"/>
<path d="M427.078 262.432l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
<path d="M323.134 264.598l2.166 2.165-2.166-2.165z" fill="#f2f1d7"/>
<path d="M325.3 264.598l2.165 2.165-2.165-2.165z" fill="#f2f1d2"/>
<path d="M327.465 264.598l2.166 2.165-2.165-2.165z" fill="#eeedc1"/>
<path d="M337.578 265.312l1.442.722-1.442-.722z" fill="#f2f1d2"/>
<path d="M340.458 264.598l2.166 2.165-2.166-2.165z" fill="#fbfaf2"/>
<path d="M351.286 264.598l4.33 4.33v-4.33h-4.33z" fill="#fef8f1"/>
<path d="M398.927 264.598l2.165 2.165-2.165-2.165z" fill="#f2f1d7"/>
<path d="M401.092 264.598l2.166 2.165-2.166-2.165z" fill="#f2f1d2"/>
<path d="M403.258 264.598l2.165 2.165-2.165-2.165z" fill="#e5e3af"/>
<path d="M406.874 265.312l1.442.722-1.442-.722z" fill="#e5e59d"/>
<path d="M409.754 264.598l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
<path d="M413.37 265.312l1.443.722-1.443-.722z" fill="#f2f1d2"/>
<path d="M416.25 264.598l2.166 2.165-2.165-2.165z" fill="#fbfaf2"/>
<path d="M346.955 266.763l2.165 2.166-2.165-2.167z" fill="#fef8f1"/>
<path d="M349.12 266.763l2.166 2.166-2.166-2.167z" fill="#fbbe66"/>
<path d="M346.955 268.93l2.165 2.164-2.165-2.165z" fill="#fbc477"/>
<path d="M351.286 268.93l2.165 2.164-2.164-2.165z" fill="#fcb144"/>
<path d="M346.955 271.094l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M351.286 271.094l2.165 2.166-2.164-2.166z" fill="#fea522"/>
<path d="M344.79 273.26l2.165 2.165-2.166-2.165m8.66 0l2.167 2.165-2.166-2.165z" fill="#fae3c9"/>
<path d="M364.28 273.26l2.164 2.165-2.165-2.165z" fill="#fbead6"/>
<path d="M366.444 273.26l2.166 2.165-2.166-2.165z" fill="#f9d6aa"/>
<path d="M375.106 273.26l2.166 2.165-2.166-2.165z" fill="#fae3c9"/>
<path d="M377.272 273.26l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
<path d="M344.79 275.425l2.165 2.166-2.166-2.165z" fill="#f9d099"/>
<path d="M353.45 275.425l2.167 2.166-2.166-2.165z" fill="#fdab33"/>
<path d="M357.782 275.425l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
<path d="M359.948 275.425l2.165 2.166-2.165-2.165z" fill="#fbc477"/>
<path d="M362.113 275.425l2.166 2.166-2.167-2.165z" fill="#fea522"/>
<path d="M379.437 275.425l2.166 2.166-2.166-2.165z" fill="#fcb755"/>
<path d="M381.603 275.425l2.165 2.166-2.165-2.165z" fill="#f9d6aa"/>
<path d="M344.79 277.59l2.165 2.166-2.166-2.165z" fill="#faca88"/>
<path d="M355.617 277.59l2.165 2.166-2.165-2.165m28.15 0l2.167 2.166-2.166-2.165z" fill="#fea522"/>
<path d="M385.934 277.59l2.165 2.166-2.166-2.165z" fill="#f8dcbb"/>
<path d="M299.314 279.756l2.165 2.166-2.166-2.166z" fill="#f6f6e4"/>
<path d="M344.79 279.756l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M388.1 279.756l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
<path d="M390.265 279.756l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
<path d="M344.79 281.922l2.165 2.165-2.166-2.165z" fill="#faca88"/>
<path d="M394.596 281.922l2.165 2.165-2.164-2.165z" fill="#fcb755"/>
<path d="M396.76 281.922l2.167 2.165-2.166-2.165z" fill="#f8dcbb"/>
<path d="M342.624 284.087l2.165 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M344.79 284.087l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M405.423 284.087l2.166 2.166-2.167-2.166z" fill="#fdab33"/>
<path d="M407.59 284.087l2.164 2.166-2.165-2.166z" fill="#fcb144"/>
<path d="M409.754 284.087l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M411.92 284.087l4.33 4.33-4.33-4.33z" fill="#f9d6aa"/>
<path d="M414.085 284.087l2.166 2.166-2.165-2.166z" fill="#fef8f1"/>
<path d="M342.624 286.253l2.165 2.165-2.166-2.165z" fill="#fcb144"/>
<path d="M372.94 286.253l2.166 2.165-2.165-2.165z" fill="#fdab33"/>
<path d="M375.106 286.253l2.166 2.165-2.166-2.165zm8.662 0l2.166 2.165-2.166-2.165z" fill="#fbc477"/>
<path d="M385.934 286.253l2.165 2.165-2.166-2.165z" fill="#fea522"/>
<path d="M340.458 288.418l2.166 2.166-2.166-2.166z" fill="#fae3c9"/>
<path d="M368.61 288.418l2.165 2.166-2.165-2.166z" fill="#fcb144"/>
<path d="M370.775 288.418l2.166 2.166-2.165-2.166z" fill="#fae3c9"/>
<path d="M388.1 288.418l2.165 2.166-2.166-2.166z" fill="#f8dcbb"/>
<path d="M390.265 288.418l2.165 2.166-2.165-2.166z" fill="#fdab33"/>
<path d="M403.258 288.418l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M405.423 288.418l2.166 2.166-2.167-2.166z" fill="#fcb755"/>
<path d="M407.59 288.418l2.164 2.166-2.165-2.166z" fill="#f9d099"/>
<path d="M409.754 288.418l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
<path d="M340.458 290.584l2.166 2.165-2.166-2.166z" fill="#fcb144"/>
<path d="M366.444 290.584l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
<path d="M392.43 290.584l2.166 2.165-2.166-2.166z" fill="#f9d099"/>
<path d="M401.092 290.584l2.166 2.165-2.166-2.166z" fill="#fbead6"/>
<path d="M338.293 292.75l2.165 2.165-2.165-2.166z" fill="#fcf1e4"/>
<path d="M364.28 292.75l2.164 2.165-2.165-2.166z" fill="#fbbe66"/>
<path d="M394.596 292.75l2.165 2.165-2.164-2.166z" fill="#f9d099"/>
<path d="M401.092 292.75l2.166 2.165-2.166-2.166z" fill="#fae3c9"/>
<path d="M338.293 294.915l2.165 2.165-2.165-2.165z" fill="#fbc477"/>
<path d="M362.113 294.915l2.166 2.165-2.167-2.165m34.648 0l2.167 2.165-2.166-2.165z" fill="#fcb144"/>
<path d="M401.092 294.915l2.166 2.165-2.166-2.165z" fill="#fbbe66"/>
<path d="M299.314 297.08l2.165 2.166-2.166-2.166z" fill="#f6f6e4"/>
<path d="M338.293 297.08l2.165 2.166-2.165-2.166z" fill="#fea522"/>
<path d="M362.113 297.08l2.166 2.166-2.167-2.166z" fill="#fbead6"/>
<path d="M396.76 297.08l2.167 2.166-2.166-2.166z" fill="#fcf1e4"/>
<path d="M403.258 297.08l2.165 2.166-2.165-2.166z" fill="#fef8f1"/>
<path d="M336.127 299.246l2.166 2.165-2.166-2.164z" fill="#fcf1e4"/>
<path d="M359.948 299.246l2.165 2.165-2.165-2.164z" fill="#fbbe66"/>
<path d="M398.927 299.246l2.165 2.165-2.165-2.164z" fill="#faca88"/>
<path d="M403.258 299.246l2.165 2.165-2.165-2.164z" fill="#f9d099"/>
<path d="M336.127 301.41l2.166 2.167-2.166-2.166z" fill="#f9d6aa"/>
<path d="M359.948 301.41l2.165 2.167-2.165-2.166z" fill="#fcf1e4"/>
<path d="M370.775 301.41l2.166 2.167-2.165-2.166z" fill="#fae3c9"/>
<path d="M372.94 301.41l2.166 2.167-2.165-2.166z" fill="#fea522"/>
<path d="M375.106 301.41l2.166 2.167-2.166-2.166z" fill="#fcb144"/>
<path d="M377.272 301.41l2.165 2.167-2.165-2.166z" fill="#f9d6aa"/>
<path d="M398.927 301.41l2.165 2.167-2.165-2.166z" fill="#fef8f1"/>
<path d="M401.092 301.41l2.166 2.167-2.166-2.166z" fill="#fea522"/>
<path d="M403.258 301.41l2.165 2.167-2.165-2.166z" fill="#fdab33"/>
<path d="M336.127 303.577l-2.165 6.496 2.165-6.496z" fill="#faca88"/>
<path d="M357.782 303.577l2.166 2.165-2.166-2.165z" fill="#fea522"/>
<path d="M359.948 303.577l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
<path d="M370.775 303.577l2.166 2.165-2.165-2.165z" fill="#f9d099"/>
<path d="M379.437 303.577l2.166 2.165-2.166-2.165z" fill="#fdab33"/>
<path d="M381.603 303.577l2.165 2.165-2.165-2.165z" fill="#fae3c9"/>
<path d="M401.092 303.577l2.166 2.165-2.166-2.165z" fill="#f8dcbb"/>
<path d="M403.258 303.577l2.165 2.165-2.165-2.165z" fill="#f90"/>
<path d="M406.138 305.027l.723 1.444-.722-1.443z" fill="#fbead6"/>
<path d="M362.113 305.742l2.166 2.166-2.167-2.166z" fill="#fea522"/>
<path d="M364.28 305.742l2.164 2.166-2.165-2.166z" fill="#fbbe66"/>
<path d="M366.444 305.742l2.166 2.166-2.166-2.166z" fill="#faca88"/>
<path d="M368.61 305.742l2.165 2.166-2.165-2.166z" fill="#fcb144"/>
<path d="M370.775 305.742l2.166 2.166-2.165-2.166z" fill="#fae3c9"/>
<path d="M372.94 305.742l2.166 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M383.768 305.742l2.166 2.166-2.166-2.166z" fill="#fdab33"/>
<path d="M385.934 305.742l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M388.1 305.742l2.165 2.166-2.166-2.166z" fill="#faca88"/>
<path d="M390.265 305.742l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
<path d="M393.88 306.457l1.443.722-1.442-.723z" fill="#fae3c9"/>
<path d="M396.76 305.742l2.167 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M403.258 305.742l2.165 2.166-2.165-2.166z" fill="#fbc477"/>
<path d="M310.14 307.908l2.167 2.165-2.166-2.165z" fill="#fef8f1"/>
<path d="M312.307 307.908l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
<path d="M368.61 307.908l2.165 2.165-2.165-2.165z" fill="#fcb755"/>
<path d="M372.94 307.908l2.166 2.165-2.165-2.165z" fill="#fbead6"/>
<path d="M375.106 307.908l2.166 2.165-2.166-2.165z" fill="#fea522"/>
<path d="M392.43 307.908l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M394.596 307.908l-2.166 4.33 2.166-4.33z" fill="#fcb144"/>
<path d="M398.927 307.908l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
<path d="M401.092 307.908l2.166 2.165-2.166-2.165z" fill="#fbbe66"/>
<path d="M403.258 307.908l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
<path d="M310.14 310.073l2.167 2.166-2.166-2.167z" fill="#fae3c9"/>
<path d="M312.307 310.073l4.33 4.33-4.33-4.33z" fill="#fe9f11"/>
<path d="M314.472 310.073l2.166 2.166-2.166-2.167zm19.49 0l2.165 2.166-2.165-2.167z" fill="#fbead6"/>
<path d="M336.127 310.073l2.166 2.166-2.166-2.167z" fill="#fae3c9"/>
<path d="M355.617 310.073l2.165 2.166-2.165-2.167z" fill="#fe9f11"/>
<path d="M357.782 310.073l2.166 2.166-2.166-2.167z" fill="#fbc477"/>
<path d="M359.948 310.073l2.165 2.166-2.165-2.167z" fill="#fea522"/>
<path d="M366.444 310.073l2.166 2.166-2.166-2.167z" fill="#fbc477"/>
<path d="M368.61 310.073l2.165 2.166-2.165-2.167z" fill="#fef8f1"/>
<path d="M377.272 310.073l2.165 2.166-2.165-2.167z" fill="#fbc477"/>
<path d="M394.596 310.073l2.165 2.166-2.164-2.167z" fill="#fff"/>
<path d="M396.76 310.073l2.167 2.166-2.166-2.167z" fill="#fdab33"/>
<path d="M405.423 310.073l2.166 2.166-2.167-2.167z" fill="#fbc477"/>
<path d="M310.14 312.24l2.167 2.164-2.166-2.165z" fill="#fef8f1"/>
<path d="M316.638 312.24l2.165 2.164-2.165-2.165z" fill="#fbead6"/>
<path d="M327.465 312.24l2.166 2.164-2.165-2.165z" fill="#f9d6aa"/>
<path d="M338.293 312.24l2.165 2.164-2.165-2.165z" fill="#fe9f11"/>
<path d="M341.91 312.953l1.44.722-1.44-.722z" fill="#f9d6aa"/>
<path d="M355.617 312.24l2.165 2.164-2.165-2.165z" fill="#f8dcbb"/>
<path d="M362.113 312.24l2.166 2.164-2.167-2.165z" fill="#fcf1e4"/>
<path d="M379.437 312.24l2.166 2.164-2.166-2.165z" fill="#f9d6aa"/>
<path d="M394.596 312.24l2.165 2.164-2.164-2.165z" fill="#fdab33"/>
<path d="M407.59 312.24l2.164 2.164-2.165-2.165z" fill="#fcb755"/>
<path d="M409.754 312.24l2.166 2.164-2.166-2.165z" fill="#fef8f1"/>
<path d="M292.817 314.404l2.166 2.166-2.166-2.166z" fill="#53527c"/>
<path d="M312.307 314.404l2.165 2.166-2.165-2.166z" fill="#fcb755"/>
<path d="M316.638 314.404l2.165 2.166-2.165-2.166z" fill="#fea522"/>
<path d="M325.3 314.404l2.165 2.166-2.165-2.166z" fill="#fbead6"/>
<path d="M329.63 314.404l2.166 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M331.796 314.404l2.166 2.166-2.166-2.166z" fill="#fcf1e4"/>
<path d="M338.293 314.404l2.165 2.166-2.165-2.166z" fill="#fbbe66"/>
<path d="M340.458 314.404l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M342.624 314.404l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
<path d="M353.45 314.404l2.167 2.166-2.166-2.166z" fill="#fea522"/>
<path d="M381.603 314.404l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
<path d="M409.754 314.404l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M444.402 314.404l2.166 2.166-2.166-2.166z" fill="#8d8d5b"/>
<path d="M299.314 316.57l2.165 2.165-2.166-2.165z" fill="#e5e3af"/>
<path d="M312.307 316.57l2.165 2.165-2.165-2.165z" fill="#f8dcbb"/>
<path d="M318.803 316.57l2.166 2.165-2.167-2.165z" fill="#fdab33"/>
<path d="M325.3 316.57l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
<path d="M329.63 316.57l2.166 2.165-2.165-2.165z" fill="#faca88"/>
<path d="M338.293 316.57l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
<path d="M353.45 316.57l2.167 2.165-2.166-2.165m30.318 0l2.166 2.165-2.166-2.165z" fill="#f9d099"/>
<path d="M411.92 316.57l2.165 2.165-2.165-2.165z" fill="#fbbe66"/>
<path d="M314.472 318.735l2.166 2.166-2.166-2.165z" fill="#fea522"/>
<path d="M320.97 318.735l2.164 2.166-2.165-2.165z" fill="#fdab33"/>
<path d="M323.134 318.735l2.166 2.166-2.166-2.165z" fill="#fea522"/>
<path d="M327.465 318.735l2.166 2.166-2.165-2.165z" fill="#fe9f11"/>
<path d="M329.63 318.735l2.166 2.166-2.165-2.165z" fill="#fef8f1"/>
<path d="M340.458 318.735l2.166 2.166-2.166-2.165z" fill="#fbbe66"/>
<path d="M353.45 318.735l2.167 2.166-2.166-2.165z" fill="#fef8f1"/>
<path d="M385.934 318.735l2.165 2.166-2.166-2.165z" fill="#fbbe66"/>
<path d="M414.085 318.735l2.166 2.166-2.165-2.165z" fill="#f9d099"/>
<path d="M314.472 320.9l2.166 2.166-2.166-2.165z" fill="#f9d6aa"/>
<path d="M327.465 320.9l2.166 2.166-2.165-2.165z" fill="#f9d099"/>
<path d="M340.458 320.9l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
<path d="M351.286 320.9l2.165 2.166-2.164-2.165m36.813 0l2.165 2.166-2.166-2.165z" fill="#fdab33"/>
<path d="M416.25 320.9l2.166 2.166-2.165-2.165z" fill="#fbead6"/>
<path d="M316.638 323.066l2.165 2.166-2.165-2.166z" fill="#fea522"/>
<path d="M325.3 323.066l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M342.624 323.066l2.165 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M351.286 323.066l2.165 2.166-2.164-2.166z" fill="#faca88"/>
<path d="M388.1 323.066l2.165 2.166-2.166-2.166z" fill="#f8dcbb"/>
<path d="M416.25 323.066l2.166 2.166-2.165-2.166z" fill="#fcb144"/>
<path d="M299.314 325.232l2.165 2.165-2.166-2.165z" fill="#d3d079"/>
<path d="M316.638 325.232l2.165 2.165-2.165-2.165zm25.986 0l2.165 2.165-2.166-2.165z" fill="#faca88"/>
<path d="M351.286 325.232l2.165 2.165-2.164-2.165m36.813 0l2.165 2.165-2.166-2.165z" fill="#fae3c9"/>
<path d="M418.416 325.232l2.166 2.165-2.166-2.165z" fill="#f8dcbb"/>
<path d="M437.906 325.232l2.165 2.165-2.164-2.165z" fill="#f2f1d7"/>
<path d="M445.117 326.682l.723 1.444-.723-1.444z" fill="#58587b"/>
<path d="M300.028 328.848l.723 1.443-.722-1.442z" fill="#d9d868"/>
<path d="M316.638 327.397l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
<path d="M385.934 327.397l2.165 2.166-2.166-2.166z" fill="#f9d6aa"/>
<path d="M388.1 327.397l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M418.416 327.397l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M438.62 328.848l.723 1.443-.723-1.442z" fill="#f2f1d2"/>
<path d="M316.638 329.563l2.165 2.165-2.165-2.165z" fill="#fcf1e4"/>
<path d="M383.768 329.563l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
<path d="M385.934 329.563l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M392.43 329.563l-2.165 4.33 2.165-4.33z" fill="#fdab33"/>
<path d="M394.596 329.563l2.165 2.165-2.164-2.165z" fill="#fcb755"/>
<path d="M420.582 329.563l2.165 2.165-2.165-2.165z" fill="#fea522"/>
<path d="M422.747 329.563l2.166 2.165-2.166-2.165z" fill="#f9d099"/>
<path d="M444.402 329.563l2.166 2.165-2.166-2.165z" fill="#53527c"/>
<path d="M295.697 333.18l.723 1.44-.723-1.44z" fill="#808067"/>
<path d="M318.803 331.728l2.166 2.166-2.167-2.166m6.497 0l2.165 2.166-2.165-2.166z" fill="#fea522"/>
<path d="M349.12 331.728l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M383.768 331.728l2.166 2.166-2.166-2.166z" fill="#fae3c9"/>
<path d="M392.43 331.728l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M396.76 331.728l2.167 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M424.913 331.728l2.165 2.166-2.165-2.166z" fill="#fcb755"/>
<path d="M427.078 331.728l4.33 4.33-4.33-4.33z" fill="#fef8f1"/>
<path d="M438.62 333.18l.723 1.44-.723-1.44z" fill="#e5e59d"/>
<path d="M445.117 333.18l.723 1.44-.723-1.44z" fill="#32327b"/>
<path d="M319.518 335.344l.723 1.443-.722-1.443z" fill="#fcb755"/>
<path d="M327.465 333.894l2.166 2.165-2.165-2.166z" fill="#fef8f1"/>
<path d="M349.12 333.894l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
<path d="M383.768 333.894l2.166 2.165-2.166-2.166z" fill="#fbead6"/>
<path d="M388.1 333.894l2.165 2.165-2.166-2.166z" fill="#fe9f11"/>
<path d="M390.265 333.894l2.165 2.165-2.165-2.166z" fill="#fcf1e4"/>
<path d="M396.76 333.894l2.167 2.165-2.166-2.166z" fill="#fbead6"/>
<path d="M427.078 333.894l2.166 2.165-2.166-2.166z" fill="#fdab33"/>
<path d="M294.983 336.06l2.165 2.165-2.165-2.166z" fill="#667"/>
<path d="M301.48 336.06l2.165 2.165-2.166-2.166z" fill="#f6f6e4"/>
<path d="M327.465 336.06l2.166 2.165-2.165-2.166z" fill="#f9d6aa"/>
<path d="M344.79 336.06l2.165 2.165-2.166-2.166z" fill="#fdab33"/>
<path d="M346.955 336.06l2.165 2.165-2.165-2.166z" fill="#fe9f11"/>
<path d="M349.12 336.06l2.166 2.165-2.166-2.166z" fill="#fcf1e4"/>
<path d="M385.934 336.06l2.165 2.165-2.166-2.166z" fill="#fea522"/>
<path d="M388.1 336.06l2.165 2.165-2.166-2.166m10.827 0l2.165 2.165-2.165-2.166z" fill="#faca88"/>
<path d="M429.244 336.06l2.165 2.165-2.166-2.166z" fill="#fcb144"/>
<path d="M437.906 336.06l2.165 2.165-2.164-2.166z" fill="#dddc7a"/>
<path d="M294.983 338.225l2.165 2.165-2.165-2.165z" fill="#58587b"/>
<path d="M301.48 338.225l2.165 2.165-2.166-2.165z" fill="#f2f1d2"/>
<path d="M319.518 339.675l.723 1.443-.722-1.443z" fill="#fcb144"/>
<path d="M327.465 338.225l2.166 2.165-2.165-2.165z" fill="#fea522"/>
<path d="M349.12 338.225l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
<path d="M351.286 338.225l2.165 2.165-2.164-2.165z" fill="#fea522"/>
<path d="M355.617 338.225l2.165 2.165-2.165-2.165z" fill="#fcb144"/>
<path d="M357.782 338.225l2.166 2.165-2.166-2.165z" fill="#fbead6"/>
<path d="M385.934 338.225l2.165 2.165-2.166-2.165z" fill="#f8dcbb"/>
<path d="M388.1 338.225l2.165 2.165-2.166-2.165z" fill="#fcf1e4"/>
<path d="M398.927 338.225l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
<path d="M401.092 338.225l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M431.41 338.225l2.165 2.165-2.166-2.165z" fill="#fbead6"/>
<path d="M437.906 338.225l2.165 2.165-2.164-2.165z" fill="#d9d868"/>
<path d="M294.983 340.39l2.165 2.166-2.165-2.166z" fill="#3a3a7c"/>
<path d="M301.48 340.39l2.165 2.166-2.166-2.166z" fill="#e5e3af"/>
<path d="M329.63 340.39l2.166 2.166-2.165-2.166z" fill="#faca88"/>
<path d="M351.286 340.39l2.165 2.166-2.164-2.166z" fill="#fbead6"/>
<path d="M357.782 340.39l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M359.948 340.39l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
<path d="M383.768 340.39l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
<path d="M385.934 340.39l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
<path d="M388.1 340.39l2.165 2.166-2.166-2.166z" fill="#fbead6"/>
<path d="M401.092 340.39l2.166 2.166-2.166-2.166m17.324 0l2.166 2.166-2.166-2.166z" fill="#fbbe66"/>
<path d="M420.582 340.39l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
<path d="M422.747 340.39l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M424.913 340.39l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
<path d="M427.078 340.39l2.166 2.166-2.166-2.166z" fill="#fcb755"/>
<path d="M431.41 340.39l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
<path d="M442.237 340.39l2.165 2.166-2.165-2.166z" fill="#808067"/>
<path d="M294.983 342.556l2.165 2.165-2.165-2.164z" fill="#32327b"/>
<path d="M297.863 344.006l.723 1.443-.723-1.444z" fill="#a4a43d"/>
<path d="M301.48 342.556l2.165 2.165-2.166-2.164z" fill="#e5e59d"/>
<path d="M318.803 342.556l2.166 2.165-2.167-2.164z" fill="#fbc477"/>
<path d="M331.796 342.556l2.166 2.165-2.166-2.164z" fill="#f9d6aa"/>
<path d="M353.45 342.556l2.167 2.165-2.166-2.164z" fill="#fbbe66"/>
<path d="M359.948 342.556l2.165 2.165-2.165-2.164z" fill="#f9d099"/>
<path d="M379.437 342.556l2.166 2.165-2.166-2.164z" fill="#fae3c9"/>
<path d="M381.603 342.556l2.165 2.165-2.165-2.164z" fill="#fcb144"/>
<path d="M390.265 342.556l2.165 2.165-2.165-2.164z" fill="#fae3c9"/>
<path d="M401.092 342.556l2.166 2.165-2.166-2.164z" fill="#f8dcbb"/>
<path d="M418.416 342.556l2.166 2.165-2.166-2.164z" fill="#f9d099"/>
<path d="M429.244 342.556l2.165 2.165-2.166-2.164z" fill="#fbc477"/>
<path d="M431.41 342.556l2.165 2.165-2.166-2.164z" fill="#fbead6"/>
<path d="M442.237 342.556l2.165 2.165-2.165-2.164z" fill="#737370"/>
<path d="M301.48 344.72l2.165 2.167-2.166-2.166z" fill="#d9d868"/>
<path d="M318.803 344.72l2.166 2.167-2.167-2.166z" fill="#f9d099"/>
<path d="M333.962 344.72l2.165 2.167-2.165-2.166m19.49 0l2.165 2.167-2.166-2.166z" fill="#f9d6aa"/>
<path d="M359.948 344.72l2.165 2.167-2.165-2.166z" fill="#fbc477"/>
<path d="M370.775 344.72l2.166 2.167-2.165-2.166z" fill="#fef8f1"/>
<path d="M372.94 344.72l2.166 2.167-2.165-2.166z" fill="#f8dcbb"/>
<path d="M375.106 344.72l2.166 2.167-2.166-2.166z" fill="#fbc477"/>
<path d="M377.272 344.72l2.165 2.167-2.165-2.166z" fill="#fea522"/>
<path d="M390.265 344.72l2.165 2.167-2.165-2.166z" fill="#fbead6"/>
<path d="M435.74 344.72l2.166 2.167-2.166-2.166z" fill="#f2f1d2"/>
<path d="M442.237 344.72l2.165 2.167-2.165-2.166z" fill="#58587b"/>
<path d="M297.148 346.887l2.166 2.165-2.166-2.165z" fill="#99994e"/>
<path d="M301.48 346.887l2.165 2.165-2.166-2.165z" fill="#d0d045"/>
<path d="M336.127 346.887l2.166 2.165-2.166-2.165z" fill="#fcb144"/>
<path d="M338.293 346.887l2.165 2.165-2.165-2.165z" fill="#fae3c9"/>
<path d="M353.45 346.887l2.167 2.165-2.166-2.165z" fill="#fef8f1"/>
<path d="M362.113 346.887l2.166 2.165-2.167-2.165z" fill="#fcb755"/>
<path d="M364.28 346.887l2.164 2.165-2.165-2.165z" fill="#fbc477"/>
<path d="M366.444 346.887l2.166 2.165-2.166-2.165z" fill="#fcb144"/>
<path d="M368.61 346.887l2.165 2.165-2.165-2.165z" fill="#fea522"/>
<path d="M385.934 346.887l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M388.1 346.887l2.165 2.165-2.166-2.165z" fill="#f9d6aa"/>
<path d="M418.416 346.887l2.166 2.165-2.166-2.165z" fill="#fef8f1"/>
<path d="M435.74 346.887l2.166 2.165-2.166-2.165z" fill="#e0dea1"/>
<path d="M442.237 346.887l2.165 2.165-2.165-2.165z" fill="#3a3a7c"/>
<path d="M297.148 349.052l2.166 2.166-2.166-2.166z" fill="#737370"/>
<path d="M303.645 349.052l2.165 2.166-2.165-2.166z" fill="#fbfaf2"/>
<path d="M320.97 349.052l2.164 2.166-2.165-2.166z" fill="#fea522"/>
<path d="M340.458 349.052l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M342.624 349.052l2.165 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M344.79 349.052l2.165 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M346.955 349.052l2.165 2.166-2.165-2.166z" fill="#faca88"/>
<path d="M349.12 349.052l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M351.286 349.052l2.165 2.166-2.164-2.166z" fill="#fcb144"/>
<path d="M353.45 349.052l2.167 2.166-2.166-2.166z" fill="#fdab33"/>
<path d="M383.768 349.052l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M385.934 349.052l2.165 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M416.25 349.052l2.166 2.166-2.165-2.166z" fill="#fdab33"/>
<path d="M435.74 349.052l2.166 2.166-2.166-2.166z" fill="#e1e18c"/>
<path d="M440.786 350.503l.723 1.442-.724-1.442z" fill="#a4a43d"/>
<path d="M442.237 349.052l2.165 2.166-2.165-2.166z" fill="#262678"/>
<path d="M297.148 351.218l2.166 2.165-2.166-2.165z" fill="#58587b"/>
<path d="M303.645 351.218l2.165 2.165-2.165-2.165z" fill="#f2f1d2"/>
<path d="M320.97 351.218l2.164 2.165-2.165-2.165z" fill="#faca88"/>
<path d="M379.437 351.218l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M381.603 351.218l2.165 2.165-2.165-2.165z" fill="#fbead6"/>
<path d="M401.092 351.218l2.166 2.165-2.166-2.165z" fill="#fbc477"/>
<path d="M416.25 351.218l2.166 2.165-2.165-2.165z" fill="#faca88"/>
<path d="M435.74 351.218l2.166 2.165-2.166-2.165z" fill="#d4d456"/>
<path d="M297.148 353.383l2.166 2.166-2.166-2.167z" fill="#32327b"/>
<path d="M303.645 353.383l2.165 2.166-2.165-2.167z" fill="#e5e59d"/>
<path d="M320.97 353.383l2.164 2.166-2.165-2.167z" fill="#fef8f1"/>
<path d="M323.134 353.383l2.166 2.166-2.166-2.167z" fill="#fe9f11"/>
<path d="M379.437 353.383l2.166 2.166-2.166-2.167z" fill="#fbead6"/>
<path d="M401.092 353.383l2.166 2.166-2.166-2.167z" fill="#fea522"/>
<path d="M416.25 353.383l2.166 2.166-2.165-2.167z" fill="#fcf1e4"/>
<path d="M440.07 353.383l2.167 2.166-2.166-2.167z" fill="#808067"/>
<path d="M297.148 355.55l2.166 2.164-2.166-2.165z" fill="#0e0e6e"/>
<path d="M299.314 355.55l2.165 2.164-2.166-2.165z" fill="#a4a43d"/>
<path d="M303.645 355.55l2.165 2.164-2.165-2.165z" fill="#d9d868"/>
<path d="M323.134 355.55l2.166 2.164-2.166-2.165z" fill="#f8dcbb"/>
<path d="M398.927 355.55l2.165 2.164-2.165-2.165z" fill="#f9d6aa"/>
<path d="M414.085 355.55l2.166 2.164-2.165-2.165z" fill="#faca88"/>
<path d="M433.575 355.55l2.165 2.164-2.165-2.165z" fill="#f2f1d2"/>
<path d="M440.07 355.55l2.167 2.164-2.166-2.165z" fill="#58587b"/>
<path d="M299.314 357.714l2.165 2.166-2.166-2.166z" fill="#8d8d5b"/>
<path d="M325.3 357.714l2.165 2.166-2.165-2.166z" fill="#f9d6aa"/>
<path d="M368.61 357.714l2.165 2.166-2.165-2.166z" fill="#fdab33"/>
<path d="M370.775 357.714l2.166 2.166-2.165-2.166z" fill="#fff"/>
<path d="M374.39 358.43l1.444.722-1.443-.723z" fill="#fcb144"/>
<path d="M396.76 357.714l-2.164 4.33 2.165-4.33z" fill="#fef8f1"/>
<path d="M398.927 357.714l2.165 2.166-2.165-2.166z" fill="#fe9f11"/>
<path d="M411.92 357.714l-2.166 4.33 2.166-4.33z" fill="#fdab33"/>
<path d="M433.575 357.714l2.165 2.166-2.165-2.166z" fill="#e5e59d"/>
<path d="M440.07 357.714l2.167 2.166-2.166-2.166z" fill="#3a3a7c"/>
<path d="M299.314 359.88l2.165 2.165-2.166-2.165z" fill="#667"/>
<path d="M305.81 359.88l2.166 2.165-2.166-2.165z" fill="#f2f1d2"/>
<path d="M327.465 359.88l2.166 2.165-2.165-2.165z" fill="#f9d6aa"/>
<path d="M368.61 359.88l2.165 2.165-2.165-2.165z" fill="#fe9f11"/>
<path d="M370.775 359.88l2.166 2.165-2.165-2.165z" fill="#faca88"/>
<path d="M372.94 359.88l2.166 2.165-2.165-2.165z" fill="#fea522"/>
<path d="M375.106 359.88l2.166 2.165-2.166-2.165z" fill="#fcf1e4"/>
<path d="M396.76 359.88l2.167 2.165-2.166-2.165z" fill="#fdab33"/>
<path d="M411.92 359.88l2.165 2.165-2.165-2.165z" fill="#fef8f1"/>
<path d="M433.575 359.88l2.165 2.165-2.165-2.165z" fill="#d9d868"/>
<path d="M437.906 359.88l2.165 2.165-2.164-2.165z" fill="#a4a43d"/>
<path d="M440.07 359.88l2.167 2.165-2.166-2.165z" fill="#0e0e6e"/>
<path d="M299.314 362.045l2.165 2.166-2.166-2.165z" fill="#3a3a7c"/>
<path d="M305.81 362.045l2.166 2.166-2.166-2.165z" fill="#e5e59d"/>
<path d="M329.63 362.045l4.332 4.33-4.33-4.33z" fill="#fae3c9"/>
<path d="M331.796 362.045l2.166 2.166-2.166-2.165z" fill="#fe9f11"/>
<path d="M372.94 362.045l2.166 2.166-2.165-2.165z" fill="#f8dcbb"/>
<path d="M392.43 362.045l2.166 2.166-2.166-2.165z" fill="#fcf1e4"/>
<path d="M394.596 362.045l2.165 2.166-2.164-2.165z" fill="#fdab33"/>
<path d="M407.59 362.045l2.164 2.166-2.165-2.165z" fill="#fcb144"/>
<path d="M409.754 362.045l2.166 2.166-2.166-2.165z" fill="#fef8f1"/>
<path d="M431.41 362.045l2.165 2.166-2.166-2.165z" fill="#fbfaf2"/>
<path d="M437.906 362.045l2.165 2.166-2.164-2.165z" fill="#8d8d5b"/>
<path d="M299.314 364.21l2.165 2.166-2.166-2.165z" fill="#0e0e6e"/>
<path d="M301.48 364.21l2.165 2.166-2.166-2.165z" fill="#a4a43d"/>
<path d="M305.81 364.21l2.166 2.166-2.166-2.165z" fill="#d4d456"/>
<path d="M370.775 364.21l2.166 2.166-2.165-2.165z" fill="#f9d6aa"/>
<path d="M390.265 364.21l2.165 2.166-2.165-2.165z" fill="#f9d099"/>
<path d="M392.43 364.21l2.166 2.166-2.166-2.165z" fill="#fe9f11"/>
<path d="M405.423 364.21l2.166 2.166-2.167-2.165z" fill="#faca88"/>
<path d="M431.41 364.21l2.165 2.166-2.166-2.165z" fill="#eeedc1"/>
<path d="M437.906 364.21l2.165 2.166-2.164-2.165z" fill="#58587b"/>
<path d="M301.48 366.376l2.165 2.166-2.166-2.166z" fill="#737370"/>
<path d="M307.976 366.376l2.165 2.166-2.164-2.166z" fill="#f6f6e4"/>
<path d="M331.796 366.376l2.166 2.166-2.166-2.166z" fill="#fbbe66"/>
<path d="M366.444 366.376l2.166 2.166-2.166-2.166z" fill="#fcb144"/>
<path d="M369.324 367.827l.723 1.442-.723-1.443z" fill="#f8dcbb"/>
<path d="M385.934 366.376l2.165 2.166-2.166-2.166z" fill="#fbbe66"/>
<path d="M388.1 366.376l2.165 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M401.092 366.376l2.166 2.166-2.166-2.166z" fill="#fbc477"/>
<path d="M403.258 366.376l2.165 2.166-2.165-2.166z" fill="#fcf1e4"/>
<path d="M431.41 366.376l2.165 2.166-2.166-2.166z" fill="#d3d079"/>
<path d="M435.74 366.376l2.166 2.166-2.166-2.166z" fill="#a4a43d"/>
<path d="M437.906 366.376l2.165 2.166-2.164-2.166z" fill="#262678"/>
<path d="M301.48 368.542l2.165 2.165-2.166-2.165z" fill="#49497d"/>
<path d="M307.976 368.542l2.165 2.165-2.164-2.165z" fill="#e0dea1"/>
<path d="M329.63 368.542l2.166 2.165-2.165-2.165z" fill="#fae3c9"/>
<path d="M359.948 368.542l2.165 2.165-2.165-2.165z" fill="#fdab33"/>
<path d="M362.113 368.542l2.166 2.165-2.167-2.165z" fill="#fbc477"/>
<path d="M364.28 368.542l2.164 2.165-2.165-2.165z" fill="#fbead6"/>
<path d="M370.775 368.542l2.166 2.165-2.165-2.165z" fill="#fcb144"/>
<path d="M398.927 368.542l2.165 2.165-2.165-2.165z" fill="#f9d6aa"/>
<path d="M435.74 368.542l2.166 2.165-2.166-2.165z" fill="#99994e"/>
<path d="M301.48 370.707l2.165 2.166-2.166-2.166z" fill="#0e0e6e"/>
<path d="M303.645 370.707l2.165 2.166-2.165-2.166z" fill="#a4a43d"/>
<path d="M307.976 370.707l2.165 2.166-2.164-2.166z" fill="#d4d456"/>
<path d="M327.465 370.707l2.166 2.166-2.165-2.166z" fill="#f9d099"/>
<path d="M329.63 370.707l2.166 2.166-2.165-2.166m10.828 0l2.166 2.166-2.166-2.166z" fill="#fe9f11"/>
<path d="M342.624 370.707l2.165 2.166-2.166-2.166z" fill="#f9d6aa"/>
<path d="M344.79 370.707l2.165 2.166-2.166-2.166z" fill="#f9d099"/>
<path d="M353.45 370.707l2.167 2.166-2.166-2.166z" fill="#f9d6aa"/>
<path d="M355.617 370.707l2.165 2.166-2.165-2.166z" fill="#fae3c9"/>
<path d="M357.782 370.707l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M375.106 370.707l2.166 2.166-2.166-2.166z" fill="#fbead6"/>
<path d="M377.272 370.707l2.165 2.166-2.165-2.166z" fill="#fae3c9"/>
<path d="M379.437 370.707l2.166 2.166-2.166-2.166z" fill="#faca88"/>
<path d="M381.603 370.707l2.165 2.166-2.165-2.166z" fill="#fbc477"/>
<path d="M383.768 370.707l2.166 2.166-2.166-2.166z" fill="#fdab33"/>
<path d="M394.596 370.707l2.165 2.166-2.164-2.166z" fill="#fe9f11"/>
<path d="M396.76 370.707l2.167 2.166-2.166-2.166z" fill="#f9d6aa"/>
<path d="M429.244 370.707l2.165 2.166-2.166-2.166z" fill="#e5e3af"/>
<path d="M435.74 370.707l2.166 2.166-2.166-2.166z" fill="#667"/>
<path d="M303.645 372.873l2.165 2.165-2.165-2.165z" fill="#737370"/>
<path d="M310.14 372.873l2.167 2.165-2.166-2.165z" fill="#f2f1d7"/>
<path d="M325.3 372.873l2.165 2.165-2.165-2.165z" fill="#fea522"/>
<path d="M336.127 372.873l2.166 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M338.293 372.873l2.165 2.165-2.165-2.165z" fill="#fbbe66"/>
<path d="M340.458 372.873l2.166 2.165-2.166-2.165z" fill="#fcf1e4"/>
<path d="M392.43 372.873l2.166 2.165-2.166-2.165z" fill="#fea522"/>
<path d="M394.596 372.873l2.165 2.165-2.164-2.165z" fill="#fbead6"/>
<path d="M429.244 372.873l2.165 2.165-2.166-2.165z" fill="#dddc7a"/>
<path d="M433.575 372.873l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M435.74 372.873l2.166 2.165-2.166-2.165z" fill="#262678"/>
<path d="M303.645 375.038l2.165 2.166-2.165-2.166z" fill="#49497d"/>
<path d="M306.525 376.49l.723 1.44-.723-1.44z" fill="#a4a43d"/>
<path d="M310.14 375.038l2.167 2.166-2.166-2.166z" fill="#d3d079"/>
<path d="M327.465 375.038l2.166 2.166-2.165-2.166z" fill="#f9d099"/>
<path d="M329.63 375.038l2.166 2.166-2.165-2.166z" fill="#fcb144"/>
<path d="M331.796 375.038l2.166 2.166-2.166-2.166z" fill="#faca88"/>
<path d="M333.962 375.038l2.165 2.166-2.165-2.166z" fill="#f8dcbb"/>
<path d="M336.127 375.038l2.166 2.166-2.166-2.166z" fill="#fef8f1"/>
<path d="M383.768 375.038l2.166 2.166-2.166-2.166z" fill="#f8dcbb"/>
<path d="M392.43 375.038l2.166 2.166-2.166-2.166z" fill="#fcf1e4"/>
<path d="M427.078 375.038l2.166 2.166-2.166-2.166z" fill="#f6f6e4"/>
<path d="M433.575 375.038l2.165 2.166-2.165-2.166z" fill="#8d8d5b"/>
<path d="M312.307 377.204l2.165 2.165-2.165-2.166z" fill="#fbfaf2"/>
<path d="M383.768 377.204l2.166 2.165-2.166-2.166z" fill="#fbbe66"/>
<path d="M390.265 377.204l2.165 2.165-2.165-2.166z" fill="#faca88"/>
<path d="M427.078 377.204l2.166 2.165-2.166-2.166z" fill="#e1e18c"/>
<path d="M433.575 377.204l2.165 2.165-2.165-2.166z" fill="#49497d"/>
<path d="M305.81 379.37l2.166 2.165-2.166-2.166z" fill="#58587b"/>
<path d="M312.307 379.37l2.165 2.165-2.165-2.166z" fill="#e5e59d"/>
<path d="M383.768 379.37l2.166 2.165-2.166-2.166z" fill="#fe9f11"/>
<path d="M388.1 379.37l2.165 2.165-2.166-2.166z" fill="#fdab33"/>
<path d="M424.913 379.37l2.165 2.165-2.165-2.166z" fill="#fbfaf2"/>
<path d="M431.41 379.37l2.165 2.165-2.166-2.166z" fill="#a4a43d"/>
<path d="M433.575 379.37l2.165 2.165-2.165-2.166z" fill="#0e0e6e"/>
<path d="M305.81 381.535l2.166 2.165-2.166-2.165z" fill="#1b1b74"/>
<path d="M307.976 381.535l2.165 2.165-2.164-2.165z" fill="#a4a43d"/>
<path d="M312.307 381.535l2.165 2.165-2.165-2.165z" fill="#d0d045"/>
<path d="M381.603 381.535l2.165 2.165-2.165-2.165z" fill="#fbead6"/>
<path d="M385.934 381.535l2.165 2.165-2.166-2.165z" fill="#fe9f11"/>
<path d="M388.1 381.535l2.165 2.165-2.166-2.165z" fill="#fbead6"/>
<path d="M424.913 381.535l2.165 2.165-2.165-2.165z" fill="#e5e59d"/>
<path d="M431.41 381.535l2.165 2.165-2.166-2.165z" fill="#667"/>
<path d="M307.976 383.7l2.165 2.166-2.164-2.166z" fill="#6e6c70"/>
<path d="M314.472 383.7l2.166 2.166-2.166-2.166z" fill="#e5e3af"/>
<path d="M382.317 385.15l.723 1.443-.723-1.442z" fill="#faca88"/>
<path d="M385.934 383.7l2.165 2.166-2.166-2.166z" fill="#fae3c9"/>
<path d="M422.747 383.7l2.166 2.166-2.166-2.166z" fill="#fbfaf2"/>
<path d="M429.244 383.7l2.165 2.166-2.166-2.166z" fill="#a4a43d"/>
<path d="M431.41 383.7l2.165 2.166-2.166-2.166m-123.434 2.166l2.165 2.165-2.164-2.164z" fill="#1b1b74"/>
<path d="M310.14 385.866l2.167 2.165-2.166-2.164z" fill="#a4a43d"/>
<path d="M314.472 385.866l2.166 2.165-2.166-2.164z" fill="#d0d045"/>
<path d="M316.638 385.866l2.165 2.165-2.165-2.164z" fill="#fbfaf2"/>
<path d="M383.768 385.866l2.166 2.165-2.166-2.164z" fill="#f9d6aa"/>
<path d="M422.747 385.866l2.166 2.165-2.166-2.164z" fill="#e5e59d"/>
<path d="M429.244 385.866l2.165 2.165-2.166-2.164M310.14 388.03l2.167 2.167-2.166-2.166z" fill="#6e6c70"/>
<path d="M316.638 388.03l2.165 2.167-2.165-2.166z" fill="#8cbf84"/>
<path d="M317.57 388.03c7.52 15.83 34.12 53.17 54.44 52.443 19.734-.706 42.02-37.14 50.737-52.442H317.57z" fill="#0cf"/>
<path d="M427.078 388.03l2.166 2.167-2.166-2.166z" fill="#a4a43d"/>
<path d="M429.244 388.03l2.165 2.167-2.166-2.166m-119.103 2.167l2.167 2.165-2.166-2.165z" fill="#1b1b74"/>
<path d="M312.307 390.197l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M316.638 390.197l2.165 2.165-2.165-2.165z" fill="#adb333"/>
<path d="M318.803 390.197l2.166 2.165-2.167-2.165z" fill="#1ac5b5"/>
<path d="M420.582 390.197l2.165 2.165-2.165-2.165z" fill="#68b070"/>
<path d="M427.078 390.197l2.166 2.165-2.166-2.165z" fill="#667"/>
<path d="M312.307 392.362l2.165 2.166-2.165-2.166z" fill="#58587b"/>
<path d="M318.803 392.362l2.166 2.166-2.167-2.166z" fill="#7fb15c"/>
<path d="M418.416 392.362l2.166 2.166-2.166-2.166z" fill="#27c2aa"/>
<path d="M424.913 392.362l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
<path d="M427.078 392.362l2.166 2.166-2.166-2.166m-114.77 2.166l2.164 2.165-2.165-2.165z" fill="#0e0e6e"/>
<path d="M314.472 394.528l4.33 4.33-4.33-4.33z" fill="#a4a43d"/>
<path d="M320.97 394.528l2.164 2.165-2.165-2.165z" fill="#34be9e"/>
<path d="M418.416 394.528l2.166 2.165-2.166-2.165z" fill="#96b247"/>
<path d="M424.913 394.528l2.165 2.165-2.165-2.165z" fill="#53527c"/>
<path d="M314.472 396.693l2.166 2.166-2.166-2.167z" fill="#3a3a7c"/>
<path d="M320.97 396.693l2.164 2.166-2.165-2.167z" fill="#a2b23d"/>
<path d="M323.134 396.693l2.166 2.166-2.166-2.167z" fill="#0dc9c1"/>
<path d="M416.25 396.693l2.166 2.166-2.165-2.167z" fill="#5bb47c"/>
<path d="M422.747 396.693l2.166 2.166-2.166-2.167z" fill="#8d8d5b"/>
<path d="M316.638 398.86l2.165 2.164-2.165-2.165z" fill="#737370"/>
<path d="M323.134 398.86l2.166 2.164-2.166-2.165z" fill="#74b166"/>
<path d="M414.085 398.86l2.166 2.164-2.165-2.165z" fill="#27c2aa"/>
<path d="M420.582 398.86l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
<path d="M422.747 398.86l2.166 2.164-2.166-2.165z" fill="#262678"/>
<path d="M316.638 401.024l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
<path d="M318.803 401.024l4.33 4.33-4.33-4.33z" fill="#a4a43d"/>
<path d="M325.3 401.024l2.165 2.166-2.165-2.166z" fill="#42bb92"/>
<path d="M411.92 401.024l2.165 2.166-2.165-2.166z" fill="#0dc9c1"/>
<path d="M414.085 401.024l2.166 2.166-2.165-2.166z" fill="#96b247"/>
<path d="M420.582 401.024l2.165 2.166-2.165-2.166z" fill="#58587b"/>
<path d="M318.803 403.19l2.166 2.165-2.167-2.165z" fill="#3a3a7c"/>
<path d="M325.3 403.19l2.165 2.165-2.165-2.165z" fill="#adb333"/>
<path d="M327.465 403.19l2.166 2.165-2.165-2.165z" fill="#27c2aa"/>
<path d="M411.92 403.19l2.165 2.165-2.165-2.165z" fill="#74b166"/>
<path d="M418.416 403.19l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
<path d="M320.97 405.355l2.164 2.166-2.165-2.165z" fill="#6e6c70"/>
<path d="M327.465 405.355l2.166 2.166-2.165-2.165z" fill="#96b247"/>
<path d="M329.63 405.355l2.166 2.166-2.165-2.165z" fill="#0dc9c1"/>
<path d="M409.754 405.355l2.166 2.166-2.166-2.165z" fill="#42bb92"/>
<path d="M416.25 405.355l-4.33 6.497 4.33-6.497z" fill="#a4a43d"/>
<path d="M418.416 405.355l2.166 2.166-2.166-2.165z" fill="#1b1b74"/>
<path d="M320.97 407.52l2.164 2.166-2.165-2.165z" fill="#0e0e6e"/>
<path d="M323.134 407.52l2.166 2.166-2.166-2.165z" fill="#8d8d5b"/>
<path d="M329.63 407.52l2.166 2.166-2.165-2.165z" fill="#7fb15c"/>
<path d="M407.59 407.52l2.164 2.166-2.165-2.165z" fill="#34be9e"/>
<path d="M416.25 407.52l2.166 2.166-2.165-2.165z" fill="#3a3a7c"/>
<path d="M323.134 409.686l2.166 2.166-2.166-2.166z" fill="#1b1b74"/>
<path d="M325.3 409.686l23.82 23.82-23.82-23.82z" fill="#a4a43d"/>
<path d="M331.796 409.686l2.166 2.166-2.166-2.166z" fill="#74b166"/>
<path d="M405.423 409.686l2.166 2.166-2.167-2.166z" fill="#27c2aa"/>
<path d="M407.59 409.686l2.164 2.166-2.165-2.166z" fill="#adb333"/>
<path d="M414.085 409.686l2.166 2.166-2.165-2.166z" fill="#667"/>
<path d="M325.3 411.852l2.165 2.165-2.165-2.165z" fill="#32327b"/>
<path d="M333.962 411.852l2.165 2.165-2.165-2.165z" fill="#42bb92"/>
<path d="M403.258 411.852l-8.662 10.827 8.662-10.828z" fill="#0dc9c1"/>
<path d="M405.423 411.852l2.166 2.165-2.167-2.165z" fill="#adb333"/>
<path d="M411.92 411.852l2.165 2.165-2.165-2.165z" fill="#737370"/>
<path d="M327.465 414.017l2.166 2.166-2.165-2.166z" fill="#49497d"/>
<path d="M336.127 414.017l2.166 2.166-2.166-2.166z" fill="#42bb92"/>
<path d="M403.258 414.017l2.165 2.166-2.165-2.166z" fill="#96b247"/>
<path d="M409.754 414.017l-2.165 4.33 2.164-4.33z" fill="#8d8d5b"/>
<path d="M411.92 414.017l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
<path d="M329.63 416.183l2.166 2.165-2.165-2.165z" fill="#53527c"/>
<path d="M338.293 416.183l2.165 2.165-2.165-2.165z" fill="#42bb92"/>
<path d="M401.092 416.183l2.166 2.165-2.166-2.165z" fill="#96b247"/>
<path d="M409.754 416.183l2.166 2.165-2.166-2.165z" fill="#0e0e6e"/>
<path d="M331.796 418.348l2.166 2.166-2.166-2.166z" fill="#6e6c70"/>
<path d="M340.458 418.348l2.166 2.166-2.166-2.166z" fill="#42bb92"/>
<path d="M398.927 418.348l2.165 2.166-2.165-2.166z" fill="#96b247"/>
<path d="M405.423 418.348l-4.33 6.497 4.33-6.497z" fill="#a4a43d"/>
<path d="M407.59 418.348l2.164 2.166-2.165-2.166z" fill="#262678"/>
<path d="M333.962 420.514l2.165 2.165-2.165-2.166z" fill="#6e6c70"/>
<path d="M342.624 420.514l2.165 2.165-2.166-2.166z" fill="#42bb92"/>
<path d="M396.76 420.514l2.167 2.165-2.166-2.166z" fill="#96b247"/>
<path d="M405.423 420.514l2.166 2.165-2.167-2.166z" fill="#262678"/>
<path d="M336.127 422.68l2.166 2.165-2.166-2.166z" fill="#6e6c70"/>
<path d="M344.79 422.68l2.165 2.165-2.166-2.166z" fill="#68b070"/>
<path d="M392.43 422.68l2.166 2.165-2.166-2.166z" fill="#27c2aa"/>
<path d="M394.596 422.68l2.165 2.165-2.164-2.166z" fill="#adb333"/>
<path d="M403.258 422.68l2.165 2.165-2.165-2.166z" fill="#262678"/>
<path d="M338.293 424.845l2.165 2.165-2.165-2.165z" fill="#667"/>
<path d="M346.955 424.845l2.165 2.165-2.165-2.165z" fill="#74b166"/>
<path d="M390.265 424.845l2.165 2.165-2.165-2.165z" fill="#34be9e"/>
<path d="M392.43 424.845l2.166 2.165-2.166-2.165z" fill="#adb333"/>
<path d="M398.927 424.845l-2.166 4.33 2.167-4.33z" fill="#8d8d5b"/>
<path d="M401.092 424.845l2.166 2.165-2.166-2.165z" fill="#262678"/>
<path d="M340.458 427.01l2.166 2.166-2.166-2.166z" fill="#49497d"/>
<path d="M349.12 427.01l2.166 2.166-2.166-2.166z" fill="#96b247"/>
<path d="M351.286 427.01l2.165 2.166-2.164-2.166z" fill="#0dc9c1"/>
<path d="M388.1 427.01l2.165 2.166-2.166-2.166z" fill="#42bb92"/>
<path d="M398.927 427.01l2.165 2.166-2.165-2.166z" fill="#0e0e6e"/>
<path d="M342.624 429.176l2.165 2.165-2.166-2.164z" fill="#49497d"/>
<path d="M351.286 429.176l2.165 2.165-2.164-2.164z" fill="#a2b23d"/>
<path d="M353.45 429.176l2.167 2.165-2.166-2.164z" fill="#27c2aa"/>
<path d="M385.934 429.176l2.165 2.165-2.166-2.164z" fill="#74b166"/>
<path d="M392.43 429.176l-6.496 8.662 6.496-8.662z" fill="#a4a43d"/>
<path d="M394.596 429.176l2.165 2.165-2.164-2.164z" fill="#808067"/>
<path d="M396.76 429.176l2.167 2.165-2.166-2.164z" fill="#0e0e6e"/>
<path d="M344.79 431.34l2.165 2.167-2.166-2.166z" fill="#262678"/>
<path d="M353.45 431.34l2.167 2.167-2.166-2.166z" fill="#adb333"/>
<path d="M355.617 431.34l2.165 2.167-2.165-2.166z" fill="#42bb92"/>
<path d="M381.603 431.34l2.165 2.167-2.165-2.166z" fill="#0dc9c1"/>
<path d="M383.768 431.34l2.166 2.167-2.166-2.166z" fill="#96b247"/>
<path d="M392.43 431.34l2.166 2.167-2.166-2.166z" fill="#6e6c70"/>
<path d="M346.955 433.507l2.165 2.165-2.165-2.165z" fill="#1b1b74"/>
<path d="M349.12 433.507l2.166 2.165-2.166-2.165z" fill="#8d8d5b"/>
<path d="M357.782 433.507l2.166 2.165-2.166-2.165z" fill="#74b166"/>
<path d="M359.948 433.507l2.165 2.165-2.165-2.165z" fill="#0dc9c1"/>
<path d="M379.437 433.507l2.166 2.165-2.166-2.165z" fill="#34be9e"/>
<path d="M381.603 433.507l2.165 2.165-2.165-2.165z" fill="#adb333"/>
<path d="M390.265 433.507l2.165 2.165-2.165-2.165z" fill="#49497d"/>
<path d="M349.12 435.672l2.166 2.166-2.166-2.166z" fill="#0e0e6e"/>
<path d="M351.286 435.672l2.165 2.166-2.164-2.166z" fill="#6e6c70"/>
<path d="M353.45 435.672l4.332 4.33-4.33-4.33z" fill="#a4a43d"/>
<path d="M359.948 435.672l2.165 2.166-2.165-2.166z" fill="#96b247"/>
<path d="M362.113 435.672l2.166 2.166-2.167-2.166z" fill="#27c2aa"/>
<path d="M377.272 435.672l2.165 2.166-2.165-2.166z" fill="#68b070"/>
<path d="M388.1 435.672l2.165 2.166-2.166-2.166z" fill="#32327b"/>
<path d="M353.45 437.838l2.167 2.165-2.166-2.165z" fill="#49497d"/>
<path d="M364.28 437.838l2.164 2.165-2.165-2.165z" fill="#5bb47c"/>
<path d="M372.94 437.838l2.166 2.165-2.165-2.165z" fill="#27c2aa"/>
<path d="M375.106 437.838l2.166 2.165-2.166-2.165z" fill="#96b247"/>
<path d="M381.603 437.838l-2.166 4.33 2.166-4.33z" fill="#a4a43d"/>
<path d="M383.768 437.838l2.166 2.165-2.166-2.165z" fill="#808067"/>
<path d="M385.934 437.838l2.165 2.165-2.166-2.165z" fill="#0e0e6e"/>
<path d="M355.617 440.003l2.165 2.166-2.165-2.167z" fill="#262678"/>
<path d="M357.782 440.003l2.166 2.166-2.166-2.167z" fill="#8d8d5b"/>
<path d="M366.444 440.003l2.166 2.166-2.166-2.167z" fill="#8bb252"/>
<path d="M368.61 440.003l2.165 2.166-2.165-2.167z" fill="#1ac5b5"/>
<path d="M370.775 440.003l2.166 2.166-2.165-2.167z" fill="#5bb47c"/>
<path d="M381.603 440.003l2.165 2.166-2.165-2.167z" fill="#58587b"/>
<path d="M357.782 442.17l2.166 2.164-2.166-2.165z" fill="#0e0e6e"/>
<path d="M359.948 442.17l2.165 2.164-2.165-2.165z" fill="#667"/>
<path d="M362.113 442.17l2.166 2.164-2.167-2.165z" fill="#a4a43d"/>
<path d="M377.272 442.17l2.165 2.164-2.165-2.165z" fill="#99994e"/>
<path d="M379.437 442.17l2.166 2.164-2.166-2.165m-17.324 2.164l2.166 2.166-2.167-2.166z" fill="#32327b"/>
<path d="M364.28 444.334l2.164 2.166-2.165-2.166z" fill="#99994e"/>
<path d="M372.94 444.334l2.166 2.166-2.165-2.166z" fill="#a4a43d"/>
<path d="M375.106 444.334l2.166 2.166-2.166-2.166z" fill="#667"/>
<path d="M377.272 444.334l2.165 2.166-2.165-2.166M364.28 446.5l2.164 2.165-2.165-2.165z" fill="#0e0e6e"/>
<path d="M366.444 446.5l2.166 2.165-2.166-2.165z" fill="#667"/>
<path d="M368.61 446.5l2.165 2.165-2.165-2.165z" fill="#a4a43d"/>
<path d="M370.775 446.5l2.166 2.165-2.165-2.165z" fill="#99994e"/>
<path d="M372.94 446.5l2.166 2.165-2.165-2.165z" fill="#32327b"/>
<path d="M368.61 448.665l2.165 2.166-2.165-2.165z" fill="#262678"/>
<path d="M370.775 448.665l2.166 2.166-2.165-2.165z" fill="#0e0e6e"/>
<path d="M372.94 303.577c3.342 7.86 14.055 16.537 17 20.79-3.75 4.254-4.498 3.79-4.006 11.692 6.518-6.82 6.635-7.532 10.827-6.497 9.185 9.164 1.645 28.846-5.945 33.125-7.588 4.565-6.21-.158-17.584 5.563 5.215 4.46 11.257-.653 16.194.714 2.683 3.183-1.275 8.984.81 14.448 4.364-.42 3.84-9.23 4.855-12.423 3.187-11.704 22.352-19.866 23.326-30.6 4.04-1.897 8.08-.593 12.993 2.166-2.448-10.057-10.543-9.95-12.712-13.09-5.165-7.892-9.743-16.896-20.774-19.23-8.374-1.775-7.748.532-13.114-3.128-3.335-2.603-13.49-7.523-11.867-3.532z" fill="#f90"/>
<path d="M397.017 312.505a1.746 1.746 0 1 1-3.495-.001 1.746 1.746 0 0 1 3.497.001z" fill-rule="evenodd" fill="#fff"/>
<path d="M346.16 336.92c5.386-6.627 8.055-20.153 10.44-24.744 5.512 1.327 5.452 2.206 12.21-1.92-9.076-2.577-9.76-2.348-10.803-6.538 3.812-12.402 24.737-14.93 32.066-10.218 7.58 4.577 2.762 5.566 13.134 12.95 1.506-6.695-5.837-9.648-6.936-14.652 1.563-3.86 8.54-3.07 12.398-7.466-2.41-3.662-9.954.917-13.253 1.51-11.836 2.65-28.005-10.482-37.95-6.33-3.566-2.686-4.3-6.866-4.157-12.5-7.748 6.863-3.87 13.97-5.634 17.355-4.566 8.254-10.388 16.507-7.3 27.352 2.344 8.23 4.09 6.6 3.362 13.055-.744 4.164-.35 15.443 2.42 12.142z" fill="#f90"/>
<path d="M342.805 311.46a1.747 1.747 0 0 1 2.36.728 1.745 1.745 0 1 1-3.087 1.63 1.746 1.746 0 0 1 .727-2.358z" fill-rule="evenodd" fill="#fff"/>
<path d="M389.94 341.57c-8.457-1.184-21.414 3.528-26.576 3.862-1.715-5.403-.932-5.807-7.958-9.455 2.488 9.1 3.037 9.566-.008 12.627-12.586 3.152-25.573-13.45-25.332-22.158-.005-8.856 3.334-5.243 4.288-17.938-6.508 2.173-5.237 9.985-8.95 13.514-4.112.66-7.046-5.72-12.803-6.748-1.886 3.957 5.935 8.045 8.15 10.56 8.39 8.76 5.514 29.39 14.213 35.755-.455 4.44-3.652 7.23-8.548 10.02 9.88 3.083 13.957-3.91 17.767-4.153 9.425-.363 19.5.35 27.184-7.902 5.833-6.265 3.533-6.916 9.435-9.63 3.95-1.518 13.398-7.69 9.14-8.353z" fill="#f90"/>
<path d="M369.887 357.608a1.746 1.746 0 1 1 1.8-2.995 1.746 1.746 0 0 1-1.8 2.996z" fill-rule="evenodd" fill="#fff"/>
</g>
</svg>

5
src/main/resources/static/files/assets/icon/flag-icons/fonts/al.svg

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" viewBox="0 0 512 512">
<path fill="#e41e20" d="M0 0h512v512H0z"/>
<path id="a" d="M204.896 99.537c-4.978-.084-13.24 1.587-13.056 5.408-13.867-2.376-15.31 3.35-14.496 8.448 1.32-2.023 2.926-3.12 4.16-3.328 1.85-.307 3.784.29 5.76 1.504 1.976 1.213 4.153 3.17 5.12 4.383-4.894 1.17-8.675.415-12.512-.256-1.89-.33-4.538-1.395-6.112-2.496-1.573-1.1-2.07-2.137-4.544-4.67-2.918-2.99-6.023-2.148-5.056 2.495 2.238 4.312 5.977 6.235 10.688 7.008 2.267.372 5.645 1.18 9.472 1.184 3.828.004 8.126-.553 10.464-.064-1.404.882-2.994 2.402-6.144 3.008-3.203.617-8.072-1.904-11.04-2.59.377 2.496 3.527 4.83 9.728 6.047 10.19 2.22 18.658 3.905 24.256 6.944 5.598 3.04 9.128 6.844 11.648 9.825 5.017 5.932 5.28 10.486 5.6 11.488 1.032 9.478-2.272 14.81-8.416 16.448-3.07.82-8.527-.723-10.528-3.07-2-2.35-3.946-6.385-3.392-12.705.54-2.48 3.375-8.938.96-10.272-11.122-6.147-24.628-12.364-34.4-16.064-2.67-1.012-4.87 2.618-5.728 4.03-16.6-2.02-31.566-13.254-38.304-25.215-4.588-8.146-12.15.017-10.88 7.712 2.053 8.59 8.597 14.8 16.448 19.2 8.06 4.437 18.13 8.803 28.32 8.576 5.49 1.04 5.436 8.14-1.152 9.472-12.882.082-23.16-.24-32.864-9.6-7.36-6.72-11.503 1.287-9.376 5.824 3.606 13.985 23.56 17.902 43.744 13.375 7.817-1.294 3.136 7.082.928 7.168-8.434 6.048-23.534 11.965-36.832-.064-6.085-4.66-10.2-.744-7.936 5.983 5.9 17.54 28.47 13.855 43.968 5.216 3.99-2.224 7.61 2.95 2.752 6.88-19.272 13.465-28.907 13.618-37.6 8.447-10.882-4.292-11.84 7.78-5.376 11.744 7.185 4.41 25.467 1.104 38.88-7.327 5.75-4.275 6.01 2.41 2.368 5.056-15.917 13.755-22.19 17.378-38.784 15.135-8.228-.64-8.104 9.503-1.632 13.472 8.837 5.42 26.095-3.576 39.488-14.688 5.638-3.013 6.564 1.927 3.776 7.775C159.08 236.71 151.4 242.798 144 245.617c-7.4 2.82-14.515 2.37-19.552.64-6.144-2.11-6.914 4.274-3.52 10.08 2.047 3.5 10.527 4.62 19.68 1.376 9.154-3.245 18.98-10.857 25.728-19.776 5.87-5.14 5.14 1.765 2.464 6.624-13.51 21.36-25.868 29.283-42.144 27.937-7.216-1.226-8.855 4.386-4.256 9.568 8.077 6.698 18.176 6.488 27.008-.128 7.853-7.57 22.874-23.873 30.752-32.61 5.552-4.424 7.325-.06 5.696 8.93-1.48 5.148-5.19 10.57-15.296 14.527-6.904 3.94-1.72 9.372 3.456 9.472 2.848.056 8.632-3.273 13.056-8.255 5.82-6.554 6.167-10.954 9.376-21.15 3.032-4.972 8.448-2.652 8.448 2.56-2.597 10.213-4.83 12.045-10.08 16.223-5.022 4.715 3.498 6.287 6.368 4.352 8.305-5.598 11.337-12.84 14.112-19.424 2.003-4.753 7.814-2.448 5.12 5.313-6.437 18.547-17.014 25.85-35.52 29.6-1.875.333-3.02 1.44-2.368 3.616 2.484 2.577 4.973 4.917 7.456 7.487-11.443 3.33-20.74 5.203-32.192 8.544-5.618-3.683-10.157-6.808-15.776-10.495-1.48-3.463-2.172-8.75-10.464-5.024-5.618-2.594-8.21-1.642-11.328.96 4.5.17 6.46 1.374 8.224 3.425 2.304 6.068 7.618 6.655 13.056 4.928 3.538 2.98 5.423 5.267 8.96 8.256-6.604-.227-11.205-.344-17.792-.545-6.288-6.75-11.307-6.382-15.808-1.088-3.43.527-4.884.6-7.232 4.768 3.692-1.515 6.014-1.97 7.616-.32 6.686 3.876 11.053 3.01 14.368 0 6.45.395 12.262.73 18.72 1.152-2.372 2.017-5.628 3.086-8 5.12-9.687-2.77-14.743.96-16.448 8.865-1.298 3.19-1.906 6.475-1.344 9.888.938-3.122 2.445-5.806 5.216-7.488 8.635 2.193 11.88-1.332 12.352-6.496 4.162-3.396 10.438-4.145 14.592-7.584 4.857 1.554 7.205 2.517 12.096 4.064 1.74 5.284 5.674 7.377 12.064 6.016 7.606.238 6.264 3.36 6.88 5.856 2.022-3.586 1.965-7.072-2.72-10.24-1.704-4.63-5.48-6.738-10.432-4.064-4.66-1.323-5.885-3.225-10.528-4.544 11.744-3.743 20.074-4.586 31.808-8.32 2.938 2.77 5.265 4.76 8.224 7.232 1.56.93 3.052 1.165 3.968 0 7.353-10.643 10.637-20.023 17.472-27.04 2.61-2.904 5.91-6.822 9.568-7.776 1.83-.478 4.072-.187 5.504 1.376 1.432 1.562 2.557 4.44 2.08 8.736-.684 6.165-2.174 8.112-3.904 11.808-1.73 3.696-3.843 5.97-6.016 8.8-4.345 5.66-10.078 8.955-13.472 11.168-6.786 4.425-9.657 2.488-14.912 2.207-6.792.764-8.6 4.072-3.04 8.64 5.197 2.705 9.868 3.04 13.664 2.337 3.26-.602 7.074-4.81 9.792-7.072 3.06-3.534 8.132.658 4.672 4.768-6.286 7.47-12.568 12.395-20.32 12.288-8.145 1.098-6.622 5.674-1.216 7.905 9.73 4.016 18.514-3.505 22.976-8.448 3.443-3.766 5.89-3.913 5.28 1.92-3.418 10.562-8.088 14.64-15.712 15.168-6.183-.574-6.25 4.2-1.728 7.424 10.302 7.13 17.763-5.013 21.248-12.353 2.484-6.62 6.294-3.472 6.688 1.984.052 7.292-3.242 13.244-12.064 20.705 6.75 10.754 14.618 21.692 21.376 32.48l20.485-228.153-20.48-36.047c-2.133-1.97-9.346-10.468-11.23-11.648-.69-.734-1.107-1.253-.097-1.632.976-.366 3.262-.776 4.8-1.056-4.344-4.352-8.066-5.747-16.29-8.128 2.005-.854 3.954-.357 9.857-.64-2.343-3.327-7.577-8.422-14.336-10.88 4.463-3.173 5.332-3.386 9.76-7.104-7.667-.544-14.214-2.005-20.8-4-4.165-1.948-9.95-3.6-12.77-3.648zm.737 8.928c4.05 0 6.56 1.39 6.56 3.072 0 1.713-2.51 3.104-6.56 3.104-4.035 0-6.592-1.517-6.592-3.23 0-1.684 2.558-2.945 6.593-2.945z"/>
<use height="100%" width="100%" xlink:href="#a" transform="matrix(-1 0 0 1 512 0)"/>
</svg>

5
src/main/resources/static/files/assets/icon/flag-icons/fonts/am.svg

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<path d="M0 0h512v170.667H0z" fill="red"/>
<path d="M0 170.667h512v170.666H0z" fill="#00f"/>
<path d="M0 341.333h512V512H0z" fill="orange"/>
</svg>

13
src/main/resources/static/files/assets/icon/flag-icons/fonts/ao.svg

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="red" d="M0 0h511.993v259.824H0z"/>
<path d="M0 252.2h511.993v259.824H0z"/>
</g>
<path d="M228.67 148.173c165.22 43.304 58.99 255.64-71.216 167.26l-8.817 13.545c76.628 54.658 152.57 10.66 173.9-46.358 22.297-58.788-7.52-141.48-92.51-150.03l-1.356 15.576z" fill-rule="evenodd" fill="#ffec00"/>
<path fill-rule="evenodd" fill="#ffec00" d="M169.955 330.827l21.73 10.125-10.142 21.696-21.73-10.125zm148.985-99.48h23.98v23.942h-23.98zm-11.684-38.892l22.342-8.694 8.707 22.31-22.342 8.693zm-25.894-29.188l17.035-16.85 16.877 17.01-17.035 16.85zm-26.284-39.787l22.434 8.455-8.468 22.4-22.434-8.455zM316.1 270.01l22.265 8.888-8.902 22.23-22.265-8.887zm-69.876 70.05l22.06-9.388 9.402 22.025-22.058 9.39zm-39.504 2.77h23.98v23.94h-23.98zm41.29-115.937l-20.35-15.006-20.245 14.47 8.034-22.92-20.348-14.956 24.447-.17 8.567-22.55 7.782 22.702 24.7-.242-19.586 15.232 6.996 23.44z"/>
<path d="M336.03 346.376c-1.21.418-6.23 12.39-9.675 18.248 1.797.51 2.56.596 3.625 1.025 13.655 4.8 20.384 9.18 26.186 17.504 2.888 2.79 7.032 2.93 10.198.697 0 0 2.795-1.114 6.43-5.02 2.968-4.52 2.194-8.11-1.384-11.16-10.944-7.952-22.9-13.902-35.38-21.295z" fill-rule="evenodd" fill="#fe0"/>
<path d="M365.247 372.842c0 2.388-1.94 4.324-4.33 4.324s-4.333-1.936-4.333-4.324 1.94-4.325 4.332-4.325 4.33 1.936 4.33 4.325zM343.87 359.17c0 2.388-1.94 4.324-4.33 4.324s-4.333-1.936-4.333-4.324 1.94-4.325 4.332-4.325 4.33 1.936 4.33 4.325zm10.898 6.975c0 2.39-1.94 4.325-4.33 4.325s-4.333-1.936-4.333-4.325 1.94-4.324 4.332-4.324 4.33 1.937 4.33 4.325z" fill-rule="evenodd"/>
<path d="M324.47 363.667c-42.57-24.273-87.31-50.52-129.88-74.796-18.75-11.635-19.683-33.384-7.17-49.875 1.302-2.337 2.836-1.758 3.514-.524 1.463 8.03 5.97 16.325 11.37 21.496 44.693 28.383 87.732 55.804 131.71 85.613-3.448 5.767-6.104 12.32-9.55 18.086z" fill-rule="evenodd" fill="#fe0"/>
<path fill-rule="evenodd" fill="#ffec00" d="M297.174 305.457l17.85 15.986-16.01 17.824-17.85-15.986z"/>
<path d="M331.54 348.82L206.58 273.3m109.53 58.093l-42.24-27.28m18.21 42.687l-42.75-24.755" stroke="#000" stroke-width="3.05" fill="none"/>
</svg>

13
src/main/resources/static/files/assets/icon/flag-icons/fonts/aq.svg

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".67" d="M0 0h512v512H0z"/>
</clipPath>
</defs>
<g clip-path="url(#a)">
<path fill-rule="evenodd" fill="#3a7dce" d="M0 0h512v512H0z"/>
<path d="M95.84 237.9c-3.702-7.57-3.702-7.57-3.702-15.14-1.85 0-2.198.356-3.268.058-1.07-.295-1.475 6.98-4.946 5.56-.578-.71 2.488-5.972-.838-8.16-1.07-.712.26-5.028-.203-6.92 0 0-4.22 2.246-7.403-5.678-1.562-2.07-3.702 1.892-3.702 1.892s.925 2.425-.75 3.017c-2.373-1.776-4.11-.845-7.116-3.284-3.008-2.44.637-5.233-5.09-7.303 3.702-9.462 3.702-7.57 12.956-11.354-5.553-3.786-5.553-3.786-9.254-9.464-5.553-1.893-7.404-3.784-12.957-7.57-7.403-9.47-11.105-28.39-11.105-41.64 4.686-4.435 11.105 15.14 20.36 20.817l12.956 5.677c7.403 3.785 9.254 7.57 14.807 11.354l16.658 5.678c7.403 5.677 11.105 13.247 16.658 15.14 6.016 0 7.175-3.542 9.104-3.763 10.88-.57 16.434-2.004 18.603-5.346 2.197-2.66 7.46 1.538 22.267-4.14l-1.85-7.57s3.932-3.31 9.253-1.892c-.144-3.46-.492-12.685 4.75-16.847-3.183-3.414-1.048-5.86-1.048-5.86s2.95-2.9 3.296-4.437c-1.56-8.34 1.354-8.468 2.008-10.92.653-2.454-2.518-1.614-1.624-4.995.893-3.383 6.255-4.186 6.972-6.972.72-2.785-1.528-4.183-1.4-4.848 1.158-2.66.176-8.93 0-11.355 9.95-2.72 13.19-11 16.66-7.57 1.85-11.355 3.7-15.14 14.806-15.14 1.563-3.49-4.05-6.446-1.85-7.57 3.7-.472 6.535-.236 10.875 5.5 1.37 1.82 1.618-2.66 3.006-3.134 1.387-.473 4.71-.48 5.204-2.72.522-2.307 1.273-5.323 3.124-9.107 1.562-3.076 2.776 1.182 4.164 7.214 7.81.296 25.45 2.07 32.853 4.14 5.553 1.48 9.255-1.478 14.576-2.07 3.934 4.022 7.636 1.006 9.718 9.58 2.94 4.628 7.75.415 8.792 1.775 6.19 17.446 27.474 5.677 29.093 5.973 2.718 0 6.038 7.8 8.178 7.607 3.478-.6 2.494-3.024 5.53-2.048-.81 6.564 5.96 14.134 5.96 19.042 0 0 1.647.827 3.173-.63 1.525-1.455 2.928-5.196 4.287-5.107 3.24.473 4.55.898 8.284 1.565 10.036 3.506 15.148 4.297 19.046 6.094 1.813 3.393 3.57 5.13 7.246 4.496 3.037 2.086.822 4.818 2.615 4.995 3.703-1.892 4.918-3.962 8.62-2.07 3.7 1.893 7.403 5.678 9.254 9.463 0 1.892-1.85 9.462 0 20.816.925 3.785 1.373 6.786 5.35 13.277-1.057 6.667 5.003 17.888 5.003 20.727 0 3.784-2.95 5.737-4.8 9.52 7.402 5.68 0 15.14-3.702 20.818 27.763 5.678 14.807 17.032 37.017 11.354-5.553 13.246-3.587 12.183 1.966 25.43-11.106 7.57-.23 9.874-7.634 19.336-.463.592 4.395 8.22 11.22 8.22-1.85 15.14-7.403 9.463-5.552 32.173-14.576-.296-8.677 16.972-18.51 15.14.58 10.82 5.61 11.768 3.703 22.708-7.403 1.892-7.403 1.892-11.105 7.57l-5.553-1.893c-1.85 9.462-5.552 11.354 0 20.817 0 0-7.172.237-9.254 0-.175 3.253 3.18 4.14 3.702 7.57-.29 1.36-10.528 7.333-18.51 7.57-2.08 4.672 5.553 9.64 5.09 12.005-8.676 1.714-12.493 12.596-12.493 12.596s4.453 1.834 3.702 3.785c-2.37-1.775-3.702-1.893-7.403-1.893-1.85.474-6.36-.115-10.687 7.348-4.748 1.602-6.99 1.023-10.59 5.892-1.595-4.64-3.888.044-6.692 1.843-2.8 1.802-6.575 6.28-7.08 6.09.115-1.302 1.734-6.033 1.734-6.033l-9.254 1.893s-.413.04-1.14.116c-.728.074-.533-5.523-2.288-5.32-1.753.204-6.77 7.04-8.48 7.253-1.71.214-2.25-2.174-3.72-1.966-1.472.21-4.34 7.21-5.383 7.396-1.043.186-5.176-4.255-8.718-3.635-18.22 6.566-21.113-12.95-23.947-1.95-3.817-2.07-3.156-.87-7.035.17-2.475.653-2.7-3.345-4.9-3.284-4.405.127-4.173 4.386-6.574 3.114-1.965-8.872-13.824-7.275-14.98-11.06-.94-3.946 5.137-3.928 7.103-6.602 1.502-3.86-1.57-5.323 4.53-9.046 7.948-5.498 3.378-7.57 4.772-11.703 2.493-5.966 2.507-7.423.425-12.686 0 0-6.19-17.032-7.404-17.032-3.7-1.064-3.7 6.268-9.14 8.28-11.104 3.784-30.71-9.582-34.124-9.582-3.123.06-17.588 3.503-17.042-3.872-2.162 7.17-10.115 1.685-10.605 1.685-7.403 0-4.57 5.855-9.545 5.618-2.256-.768-25.044-2.128-25.044-2.128v3.785l-14.807-7.57-12.956-3.784c-11.104-3.786-5.55-13.248-24.06-7.57v-11.355h-9.254c3.7-22.71 0-11.354-1.85-32.172l-7.405 1.893c-7.402-10.232 10.296-8.28-5.55-15.14 0 0 .288-11.298-3.703-7.57-.81.472 1.85 5.676 1.85 5.676-14.806-1.892-18.508-5.677-18.508-20.817 0 0 12.203 1.774 11.104 0-1.735-2.84-3.99-21.29-3.586-22.532-.173-2.484 11.337-8.752 9.11-14.727 1.417-.53 5.58-.59 5.58-.59" fill="#fff"/>
<path stroke-linejoin="round" d="M595.51 313.51c-.592 1.332-.487 2.662.125 3.612 1.1-1.648.17-2.408-.125-3.612z" stroke="#fff" stroke-linecap="round" stroke-width="2.703" fill="none"/>
<path stroke-linejoin="round" d="M119.51 164.09s-3.104-.38-2.407 2.344c1.014-2.09 2.344-2.217 2.407-2.344zm.7-6.33c-1.71.064-3.8-.253-3.104 2.47 1.014-2.09 3.04-2.343 3.104-2.47zm11.68 36.29s2.66-.19 1.964 2.534c-1.014-2.09-1.9-2.407-1.964-2.534z" stroke="#fff" stroke-width="2.534" fill="none"/>
</g>
</svg>

31
src/main/resources/static/files/assets/icon/flag-icons/fonts/ar.svg

@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" viewBox="0 0 512 512">
<path fill="#74acdf" d="M0 0h512v512H0z"/>
<path fill="#fff" d="M0 170.67h512v170.67H0z"/>
<g id="c" transform="translate(-153.6) scale(1.024)">
<path id="a" d="M396.84 251.31l28.454 61.992s.49 1.185 1.28.859c.79-.327.299-1.512.299-1.512l-23.715-63.956m-.68 24.12c-.347 9.428 5.452 14.613 4.694 23.032-.757 8.42 3.867 13.18 4.94 16.454 1.073 3.274-1.16 5.232-.198 5.698.963.466 3.07-2.12 2.383-6.775-.687-4.655-4.22-6.037-3.39-16.32.83-10.283-4.206-12.678-2.98-22.058" fill="#f6b40e" stroke="#85340a" stroke-width="1.112"/>
<use height="100%" width="100%" xlink:href="#a" transform="rotate(22.5 400 250)"/>
<use height="100%" width="100%" xlink:href="#a" transform="rotate(45 400 250)"/>
<use height="100%" width="100%" xlink:href="#a" transform="rotate(67.5 400 250)"/>
<path id="b" d="M404.31 274.41c.453 9.054 5.587 13.063 4.579 21.314 2.213-6.525-3.124-11.583-2.82-21.22m-7.649-23.757l19.487 42.577-16.329-43.887" fill="#85340a"/>
<use height="100%" width="100%" xlink:href="#b" transform="rotate(22.5 400 250)"/>
<use height="100%" width="100%" xlink:href="#b" transform="rotate(45 400 250)"/>
<use height="100%" width="100%" xlink:href="#b" transform="rotate(67.5 400 250)"/>
</g>
<use height="100%" width="100%" xlink:href="#c" transform="rotate(90 256 256)"/>
<use height="100%" width="100%" xlink:href="#c" transform="rotate(180 256 256)"/>
<use height="100%" width="100%" xlink:href="#c" transform="rotate(-90 256 256)"/>
<circle r="28.445" cy="256" cx="256" fill="#f6b40e" stroke="#85340a" stroke-width="1.536"/>
<path id="h" d="M265.697 249.917c-1.942 0-3.802.842-4.896 2.592 2.188 1.97 7.021 2.183 10.304-.224-1.422-1.53-3.466-2.368-5.408-2.368zm-.032.448c1.89-.034 3.658.834 3.904 1.696-2.188 2.407-5.684 2.198-7.872.448.958-1.531 2.498-2.117 3.968-2.144z" fill="#843511"/>
<use height="100%" width="100%" xlink:href="#d" transform="matrix(-1 0 0 1 512.256 0)"/>
<use height="100%" width="100%" xlink:href="#e" transform="matrix(-1 0 0 1 512.256 0)"/>
<use height="100%" width="100%" xlink:href="#f" transform="translate(19.315)"/>
<use height="100%" width="100%" xlink:href="#g" transform="matrix(-1 0 0 1 512.256 0)"/>
<path d="M251.648 259.932c-.935.17-1.6 1-1.6 1.952 0 1.087.899 1.952 1.984 1.952.642 0 1.231-.304 1.6-.832.757.57 1.807.63 2.368.64.086.002.198 0 .256 0 .561-.01 1.61-.07 2.368-.64.369.528.958.832 1.6.832 1.085 0 1.984-.865 1.984-1.952 0-.951-.665-1.781-1.6-1.952.525.185.864.693.864 1.248a1.31 1.31 0 0 1-1.312 1.312 1.323 1.323 0 0 1-1.312-1.248c-.214.426-1.059 1.695-2.72 1.76-1.661-.065-2.506-1.333-2.72-1.76a1.323 1.323 0 0 1-1.312 1.248 1.31 1.31 0 0 1-1.312-1.312c0-.555.339-1.063.864-1.248zM253.788 265.759c-2.19 0-3.054 1.983-5.024 3.296 1.095-.437 1.956-1.3 3.488-2.176 1.532-.875 2.838.192 3.712.192h.032c.874 0 2.18-1.067 3.712-.192 1.533.876 2.426 1.74 3.52 2.176-1.97-1.313-2.867-3.296-5.056-3.296-.437 0-1.302.236-2.176.672h-.032c-.874-.437-1.739-.672-2.176-.672z" fill="#85340a"/>
<path d="M253.05 268.35c-.863.038-2.006.211-3.647.703 3.94-.874 4.809.448 6.56.448h.032c1.75 0 2.62-1.323 6.56-.448-4.377-1.312-5.248-.448-6.56-.448h-.032c-.82 0-1.472-.32-2.912-.256z" fill="#85340a"/>
<path d="M249.6 269.025c-.254.003-.531.005-.832.032 4.596.438 2.387 3.072 7.2 3.072H256c4.813 0 2.636-2.634 7.232-3.072-4.814-.437-3.292 2.4-7.232 2.4h-.032c-3.694 0-2.556-2.48-6.368-2.432zM259.942 276.132a3.94 3.94 0 0 0-3.938-3.939 3.94 3.94 0 0 0-3.939 3.939 4.05 4.05 0 0 1 3.939-3.112 4.047 4.047 0 0 1 3.938 3.112z" fill="#85340a"/>
<path id="e" d="M238.316 249.876c5.032-4.375 11.376-5.032 14.878-1.75.857 1.148 1.406 2.376 1.632 3.656.44 2.492-.338 5.183-2.29 7.942.22 0 .658.218.877.437 1.737-3.322 2.352-6.734 1.782-9.98a14.147 14.147 0 0 0-.686-2.493c-4.814-3.938-11.377-4.376-16.19 2.189z" fill="#85340a"/>
<path id="d" d="M246.19 248.566c2.843 0 3.5.657 4.814 1.75 1.314 1.095 1.97.875 2.188 1.095.217.22 0 .874-.437.655-.437-.22-1.314-.655-2.625-1.75-1.314-1.095-2.625-1.094-3.939-1.094-3.938 0-6.126 3.282-6.563 3.063-.437-.22 2.188-3.72 6.563-3.72z" fill="#85340a"/>
<use height="100%" width="100%" xlink:href="#h" transform="translate(-19.641)"/>
<circle id="f" cy="252.058" cx="246.313" r="1.969" fill="#85340a"/>
<path id="g" d="M240.937 253.379c3.72 2.845 7.44 2.626 9.627 1.312 2.188-1.312 2.188-1.75 1.751-1.75-.436 0-.873.438-2.624 1.312-1.752.877-4.376.877-8.752-.874z" fill="#85340a"/>
</svg>

33
src/main/resources/static/files/assets/icon/flag-icons/fonts/as.svg

@ -0,0 +1,33 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill="gray" d="M496.06 15.937h496.06v496.06H496.06z"/>
</clipPath>
</defs>
<g clip-path="url(#a)" transform="translate(-512 -16.45) scale(1.032)">
<path fill="#006" d="M0 15.937h992.13v496.06H0z"/>
<path d="M0 263.97L992.13 512V15.94L0 263.97z" fill-rule="evenodd" fill="#bd1021"/>
<path d="M992.13 42.512v442.91L106.3 263.962l885.83-221.46z" fill-rule="evenodd" fill="#fff"/>
<g stroke="#000">
<path stroke-linejoin="round" d="M825.487 319.59s-6.193-5.07 1.127-13.234c-3.942-3.378-.282-9.853-.282-9.853s-6.757-2.534.282-12.95c-5.068-3.38-2.816-10.982-2.816-10.982s-16.61-6.193-.844-12.104c-12.95 5.63-25.058-7.603-25.058-7.603l-18.863.564c-3.2-15.67-28.07-2.06-9.58-47.01-4.787-.846-10.136-2.253-15.485 1.688-5.35 3.94-20.553 12.387-29.562 3.94s5.91-20.552 6.194-20.833c.28-.28 19.99-10.417 22.804-17.173-.28-5.07-6.475-9.01-.845-19.99 6.475-10.418 46.17-20.273 64.2-23.65 8.726-3.943 12.668-11.544 12.668-11.544l1.97 7.32s39.98-11.825 41.95-17.456.846 5.068.846 5.068c15.766-1.408 35.755-14.92 38.57-8.728 13.233-2.534 38.573-13.795 38.573-13.795s8.727-.28 2.533 9.29c3.942 6.195-1.126 11.544-1.407 11.544-.283 0 1.688 6.193-3.38 9.572 1.69 5.35-3.097 9.572-3.097 9.572s2.254 6.476-6.756 9.854c.845 5.63-5.068 6.757-5.068 6.757s.845 5.913-3.097 8.447c0 4.504-4.504 6.757-4.504 6.757s2.815 1.688-1.126 4.503c-3.94 2.816-44.765 27.873-44.765 27.592 0-.282 29.843 5.35 31.813 6.475s24.495 16.05 24.495 16.05l-22.806 28.153s-25.338-2.815-26.464-1.408 5.35 1.97 6.756 4.223c1.41 2.252 3.66 7.603 8.165 7.04 4.504-.565-8.447 8.164-16.893 9.01 0 3.096 10.698 3.377 13.514.844 2.817-2.535-6.757 7.32-7.883 8.727s12.67-1.972 12.67-1.972-2.253 9.29-14.358 12.107c4.784 7.883 2.813 12.95 2.532 12.95s-7.884-7.883-15.204-6.475c1.97 7.602 7.884 14.64 9.574 15.767 1.688 1.126-13.233.844-15.204-3.38s-3.66 10.136 1.69 14.642c-6.194.28-11.544-3.38-11.544-3.38s-3.66 8.445-1.126 12.67c2.534 4.223-8.728-8.448-8.728-8.448l-21.397 9.01-4.787-8.165z" fill-rule="evenodd" stroke-width="1.706" fill="#9c3900"/>
<path d="M660.12 302.828c.5 0 31.083-.502 45.123-8.524 7.02 11.03 16.545 18.55 16.545 18.55l4.512-16.042s11.03.5 12.033 3.008c-1.504 3.007-2.005 7.018-2.005 7.018s7.52.503 8.02 1.504c.503 1.004-2.004 9.526-2.004 9.526l32.087 7.52s2.508-12.533 5.015-11.03c2.507 1.505 13.537 17.047 29.08 18.05s16.544-13.036 16.544-13.036l3.51 2.007s6.516-14.04 7.52-14.04 2.506 2.006 11.03 2.006c2.506 3.008 3.51 10.026 3.51 10.026s-9.528 9.527-6.52 17.048 3.51 5.514 3.51 5.514l69.19 16.545s3.51 5.515-2.507 8.523c0 .5-69.69-16.044-69.69-16.044s-6.52 7.52-11.532 6.015-1.503 3.008-1.503 3.008L906.79 366s5.517 7.02 1.506 9.025c-5.014.5-81.222-5.014-81.222-5.014s-4.512 9.527-9.525 1.505c-3.51 5.515-7.522-1.504-7.522-1.504s-6.517 5.015-7.52-.5c-5.516 4.01-9.025-2.507-9.025-2.507l-32.088-2.006-2.005 3.008s5.515 1.504-3.008 5.015c-8.523 3.51 51.138 2.005 52.643 2.505 1.504.503-4.01 5.015-4.01 5.015s30.583 2.005 36.097-4.512c5.516-6.52-2.005 8.522-2.005 8.522s24.066-1.002 24.066-2.005-.502 7.52-17.046 6.518c10.026 6.518 22.56 10.528 22.56 10.528s-12.534 3.01-27.073-.5c2.506 6.518 13.537 12.534 13.537 12.534s-8.02 7.02-26.07-10.028c5.014 9.025 1.002 12.536.5 11.532-.5-1.003-9.023-13.537-29.078-18.05 12.534 8.023 7.018 11.533 7.018 11.533s-6.517-11.53-17.046 0c-4.01-10.528-19.553-16.544-38.605-17.547-6.017-7.02-9.527-5.014-23.564-9.025-8.022-9.024-19.554-19.05-19.554-19.05s.502-13.54 14.038-12.034c1.504 4.512 1.504 3.008 1.504 3.008s15.042-5.516 19.554 2.005c6.518-11.532 15.542-1.724 17.046 2.286 4.32.633 26.07 1.223 26.07 1.223s-2.506-4.512-1.002-4.01c1.504.5 13.537-4.512 13.036-6.017-.502-1.505-1.003-6.518 1.002-6.017 2.006.5-17.046-2.507-27.575 5.516-3.51-3.512-1.003-13.038-1.003-13.038l-31.084-6.517-1.504 8.022s-9.025 1.504-8.523-.5c.502-2.008-2.005 7.017-2.005 7.017s-12.033-3.008-12.033-3.51 3.51-18.05 3.51-17.548c0 .503-10.028 1.003-24.066 11.532-4.01-12.534-35.597-29.08-35.597-29.58z" fill-rule="evenodd" stroke-width="1.82" fill="#ffc221"/>
<path d="M736.328 307.346l-6.518 29.08m12.533-18.052l-2.005 9.526m34.094-2.005l-3.008 9.025m58.663 52.136c-.5 0-16.043 2.005-18.05 1.504-2.004-.5 24.568 8.022 24.568 11.53m-34.595-9.512s-15.542-10.027-18.048-9.025c-2.507 1.003 15.542-.5 17.046-2.005m-31.088-.504s-16.043.5-17.547-1.003 15.542 11.03 18.55 10.03m-32.089-16.056c-.5 0-11.03-4.01-15.542-5.015 4.01 4.012 7.02 9.527 17.046 11.532m2.508-13.028c-.502-1.003-20.055-7.02-20.055-10.028 4.513 1.505 11.03 3.51 17.047 2.005m106.792-15.043l-2.005 9.023" stroke-width="1.82" fill="none"/>
<path d="M699.226 261.717s-21.058 18.048 0 28.577c1.003-7.02 2.507-8.02 2.507-8.02s17.547 6.516 28.076-9.026c-4.513-6.517-12.535-4.01-12.535-4.01s-16.546 0-18.05-7.52z" fill-rule="evenodd" stroke-width="1.82" fill="#ffc221"/>
<path d="M716.775 269.743l-14.54 12.534m59.319 74.519s3.352 3.695.343 8.207m70.197-4.508l-5.515.502m-39.609-3.517l10.027 1.503m16.943-27.287s.282 10.136-8.164 9.854c-8.446-.282-5.632.282-5.632.282" stroke-width="1.82" fill="none"/>
<path d="M820.424 330.003s3.378 1.126 2.534 3.66c-.845 2.534.844 9.854-9.01 16.893-10.418 2.252-9.29-8.727-9.29-8.727" stroke-width="1.82" fill="none"/>
<path d="M824.082 333.102s6.194-3.66 7.038 2.253c.844 5.91-5.067 16.892-9.29 18.582-4.225 1.688-9.01-.283-8.448-3.097m18.302-15.2s5.632-4.505 7.32 1.408c1.69 5.912-4.504 19.145-7.04 19.426m7.596-19.428s2.815-1.407 4.785.28m-13.795 19.989c-1.125.28-5.91.562-7.6-3.097m-17.73-6.758c-.282 0-5.913.283-5.913.283m27.586 21.965l-.562-9.29-2.25-3.098-3.943 3.942s-.564 9.29-2.252 10.136m2.251-10.425c-.28-.562-3.097-5.91-3.097-5.91l-4.787 5.91s-.562 8.447-2.252 9.292m2.247-9.579c0-.28-1.97-5.63-1.97-5.63s-5.63 3.097-6.195 5.35c-.562 2.25-.845 8.445-2.252 9.01m2.255-10.136s.564-5.067-1.126-5.067-9.29 7.038-9.572 13.232" stroke-width="1.82" fill="none"/>
<path stroke-linejoin="round" d="M699.918 261.868s2.815-2.816 3.66-6.194c.845-3.38-1.126-7.04 2.253-10.136 3.38-3.097 47.862-21.96 51.523-25.62 3.66-3.66 10.417-11.544 11.262-13.233.844-1.69 3.378 8.446-4.224 12.95 8.166-2.252 13.515-4.785 16.893-3.66-3.38 4.787-12.387 12.67-16.61 12.67 9.854-3.66 18.862-6.757 21.397-4.786 2.533 1.97-12.107 11.825-18.02 12.387 9.855-2.533 23.088-6.475 24.776-2.252-5.35 1.69-3.66 3.095-14.64 9.29-1.407 1.128-8.446 1.408-8.446 1.408 8.446-.845 19.99-4.223 21.115 1.97-6.756 2.534-9.29 5.914-14.92 7.32-5.632 1.41-18.583 3.943-26.466 7.04-7.884 3.097-19.428 12.106-19.428 12.106s-25.057.844-25.057.562c0-.282-4.786-11.543-5.068-11.824z" fill-rule="evenodd" stroke-width="1.82" fill="#fff"/>
<path d="M711.742 259.902s.282-5.63 2.816-7.6c2.533-1.972 15.203-6.76 18.02-10.982 2.814-4.223-4.224 7.32-3.098 10.417m-12.67-.284s6.194 2.254 4.786 7.04" stroke-width="1.82" fill="none"/>
<path d="M724.13 254.694a4.646 4.646 0 1 1-9.29.003 4.646 4.646 0 0 1 9.289-.004z" stroke-width="1.58" fill="none"/>
<path d="M914.738 244.697l48.707 9.29s5.35-6.193 2.534-9.57c7.32-1.69 5.348-11.263 5.348-11.263s8.446-3.66 1.408-12.107c4.788-4.786-1.126-8.446-1.126-8.446s1.97-8.445-4.223-9.29c1.69-6.756-10.7-9.01-10.7-9.01s-25.62 7.04-43.638 7.603c5.91 5.912-2.254 9.572-2.254 9.572s4.787 3.38 3.38 6.194c-1.41 2.815.843 5.912-5.35 7.883 8.164 3.66-.845 9.853-.845 9.853s9.01 6.194 6.758 9.29z" fill-rule="evenodd" stroke-width="1.82" fill="#fff"/>
<path d="M909.947 234.283s43.077 5.068 45.048 5.068 9.572 2.535 10.98 5.07M912.2 231.744l59.968 1.407m-59.682-2.813s56.87-3.378 60.813-9.29m-59.134-3.098s57.154-6.193 57.718-5.35m-59.683-1.688s55.464-8.728 56.026-7.32m-214.251-28.435s17.456 19.145 15.766 32.095" stroke-width="1.82" fill="none"/>
<path d="M768.615 197.117s5.63 8.164 7.883 9.01 21.96 1.97 23.087 10.416c1.126 5.35-4.223 3.66-3.378 7.6 1.407 5.07 14.64 11.544 29 3.943m-13.232 3.944s11.824 17.457 29.28-1.406m-9.011 7.603s14.358 7.602 26.183-12.106m-15.209 13.785s7.038 5.913 21.68-1.97m20.277-7.884s21.678 4.504 23.087 5.912m-14.925-10.689c.28 0 15.203.563 15.203.563m-24.498-9.014s25.9-1.69 29.28 3.66M872.78 208.66s36.32 1.407 38.01 3.378m-29.847 33.778s6.194-1.688 7.04-.843M866.87 261.02s8.166 7.04 18.584 3.943m-14.079 7.892s9.29 4.223 20.272 1.688m-17.173 5.341s9.29 6.194 15.485 5.067m-19.703-1.395s6.475 4.786 6.756 7.32m-15.764-1.696s1.97 10.134 9.01 13.794m-13.801-9.291s-3.097 13.233 4.787 21.398m-12.949-10.983c0 .28-.562 6.193-.28 6.757m-50.399-57.995l15.204-.846s5.63-2.252 1.688-5.91m1.972 3.384c.282 0 14.358 1.126 18.02 5.35 3.658 4.222 8.163 12.668 10.697 14.077 2.534 1.407 3.097-.564 3.097-.564m-6.196-2.251s-7.6 12.95-1.688 16.892m-2.543-2.535s-6.756 9.01-1.407 13.514m-1.405-1.134s-5.35 8.73 1.128 14.64m-3.489-37.789c-.363.363-6.54 4.723-8.72 3.634m2.182 10.166s2.543 2.542 4.723 2.18m-4.422 11.032l4.057 2.783m-3.511 7.331l3.51 2.118m-67.101-140.2s7.4 3.85 13.323 0c5.92-3.85 34.343-18.355 41.745-20.724 7.4-2.37 11.546-15.988 13.027-21.908m-5.624 15.987l41.45-12.14s6.81-5.624 7.105-15.986m-2.968 11.249s41.45-4.144 41.45-19.54m-6.508 10.658s43.522-11.842 47.667-16.283" stroke-width="1.82" fill="none"/>
<path d="M785.018 178.206s26.35-13.62 30.495-15.1c4.144-1.48 13.617-13.32-.593-13.32" stroke-width="1.82" fill="none"/>
<path d="M797.753 183.535c.296 0 21.612-13.916 28.717-15.69 3.85-5.33 1.777-10.955-4.736-9.77" stroke-width="1.82" fill="none"/>
<path d="M828.245 164.29c.592-.295 11.547-.59 7.698 7.994-5.624 4.145-29.903 16.284-29.903 16.284m16.58-33.455l46.19-15.396s3.848-7.994-1.776-9.178m38.491-13.915c0 .296 5.923 3.553 2.37 8.882-6.514 3.85-37.304 11.25-37.304 11.25m81.709-24.868l-43.52 12.14m40.258-2.37l-37.895 11.547m34.647-2.073l-33.455 10.066m27.231-.592c-.89 0-24.87 7.4-24.87 7.4m19.547.002l-15.396 6.217m11.547 2.072c-.593 0-13.323 5.625-13.323 5.625m9.474 1.184l-11.842 5.625m-8.591 7.107s1.48.592 1.185 2.368m-31.09 13.914s5.034 1.777.296 6.514c-2.368 3.257-9.177 2.37-13.322 8.29m45.306-81.121s6.22 1.48 1.48 9.474c-12.435 4.737-37.6 12.435-37.6 12.435s-1.183 2.072-4.44 3.85c-3.256 1.775-39.08 11.84-39.08 11.84m81.715-28.422s6.81 2.962 0 7.995c-7.698 4.44-34.64 12.73-34.64 12.73s-.296 2.37-1.48 3.257c-1.184.888-36.71 12.73-36.71 12.73" stroke-width="1.82" fill="none"/>
<path d="M912.336 142.974s7.106 2.072.89 7.993c-7.403 4.44-31.088 12.435-31.088 12.435s-2.368 2.96-6.217 4.145c-3.848 1.184-28.42 11.25-28.42 11.25m66.609-27.829c2.074.888 7.698 1.776.89 7.106-7.994 3.552-27.534 11.25-27.534 11.25l-1.777 3.257-31.086 13.323m61.282-26.942s2.96 3.553-3.553 7.698c-7.106 3.85-22.5 9.77-22.5 9.77m22.504-9.18s3.257 2.074-.887 5.034c-4.74 2.37-23.39 12.14-23.39 12.14l-12.14 7.992" stroke-width="1.82" fill="none"/>
<path d="M869.697 140.013c0 .296 5.033 4.44 3.256 9.178 4.442 3.258 3.553 6.81 3.553 6.81s6.217 3.553 5.33 8.586c6.217 1.48 5.92 5.034 5.92 5.034l-2.072 3.256s6.217-.296.888 7.698c3.257 1.776 1.777 3.85 1.777 3.85m-1.782-3.555c-.89 0-21.612 7.698-26.942 12.435" stroke-width="1.82" fill="none"/>
<path d="M836.543 171.693s6.217-.296 5.33 6.513c7.106-2.37 5.625 4.44 5.625 4.44s8.29-3.256 6.81 7.106c5.328-1.184 4.44 4.145 4.44 4.145s4.737-.296 4.737 2.37c3.257-2.962 6.81-1.482 6.81-1.482s2.368-3.256 5.624-2.368m-33.752-14.507c0 .592-27.83 15.987-27.83 15.987m33.153-10.955l-21.02 13.027m28.13-6.514c0 .297-18.356 10.955-18.356 10.955m22.506-6.81s-13.027 10.66-15.987 10.067m20.423-6.81s-7.402 5.626-13.62 8.29m21.318-10.657s2.368 2.96-12.434 10.657" stroke-width="1.82" fill="none"/>
</g>
</g>
</svg>

6
src/main/resources/static/files/assets/icon/flag-icons/fonts/at.svg

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<g fill-rule="evenodd">
<path fill="#fff" d="M512 512H0V0h512z"/>
<path fill="#df0000" d="M512 512H0V341.33h512zm0-341.2H0V.13h512z"/>
</g>
</svg>

9
src/main/resources/static/files/assets/icon/flag-icons/fonts/au.svg

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<g stroke-width="1pt">
<path fill="#006" d="M0 0h512v512H0z"/>
<path fill="#fff" d="M0 0v27.95L307.037 250h38.647v-27.95L38.647 0H0zm345.684 0v27.95L38.647 250H0v-27.95L307.037 0h38.647z"/>
<path fill="#fff" d="M144.035 0v250h57.614V0h-57.615zM0 83.333v83.333h345.684V83.333H0z"/>
<path fill="#c00" d="M0 100v50h345.684v-50H0zM155.558 0v250h34.568V0h-34.568zM0 250l115.228-83.334h25.765L25.765 250H0zM0 0l115.228 83.333H89.463L0 18.633V0zm204.69 83.333L319.92 0h25.764L230.456 83.333H204.69zM345.685 250l-115.228-83.334h25.765l89.464 64.7V250z"/>
<path fill-rule="evenodd" fill="#fff" d="M54.886 368.64l40.665 15.4 13.32-41.403 13.32 41.402 40.666-15.4-24.06 36.223 37.395 22.197-43.326 3.767 5.97 43.082-29.963-31.528-29.96 31.527 5.968-43.083-43.327-3.767 37.397-22.197M403.807 476.413l-18.823 1.638 2.597 18.712-13.02-13.692-13.02 13.692 2.598-18.71-18.823-1.64 16.247-9.645-10.458-15.736 17.675 6.693 5.78-17.99 5.783 17.99 17.675-6.692-10.458 15.737m16.247-270.353l-18.823 1.638 2.597 18.71-13.02-13.69-13.02 13.69 2.598-18.71-18.823-1.638 16.247-9.645-10.458-15.737 17.675 6.69 5.78-17.985 5.783 17.986 17.675-6.69-10.458 15.736m-88.752 123.393l-18.823 1.638 2.597 18.71-13.02-13.69-13.02 13.69 2.598-18.71-18.823-1.638 16.247-9.646-10.458-15.736 17.675 6.692 5.783-17.99 5.78 17.99 17.676-6.692-10.46 15.735m214.57-18.352l-18.83 1.638 2.59 18.71-13.02-13.69-13.02 13.69 2.59-18.71-18.795-1.638 16.275-9.646-10.48-15.736 17.69 6.692 5.74-17.99 5.81 17.99 17.64-6.692-10.43 15.736m-64.33 82.494l-10.29 6.377 2.892-11.752-9.247-7.805 12.074-.89 4.57-11.206 4.57 11.207 12.076.89-9.247 7.804 2.89 11.753"/>
</g>
</svg>

186
src/main/resources/static/files/assets/icon/flag-icons/fonts/aw.svg

@ -0,0 +1,186 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill="gray" d="M0 0h512v512H0z"/>
</clipPath>
</defs>
<g clip-path="url(#a)">
<path fill="#39c" d="M0 0v512.006h768.01V0H0z"/>
<path fill="#ff0" d="M0 341.338v28.445h768.01v-28.445H0zm0 56.889v28.445h768.01v-28.445H0z"/>
<path fill="#9cc" d="M122.065 28.067l2.38 2.38-2.38-2.38zm-2.38 4.76l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M119.685 35.208l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M117.305 39.97l2.38 2.38-2.38-2.38z"/>
<path fill="#c66" d="M122.065 39.97l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M126.826 39.97l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M117.305 42.35l2.38 2.38-2.38-2.38zm9.521 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M119.685 44.73l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M114.924 47.11l2.38 2.38-2.38-2.38z"/>
<path d="M121.673 32.904L104.986 96.16l-63.442 17.23 63.26 16.51 16.87 63.257L138.54 129.9l63.26-16.87-63.26-16.87-16.867-63.256z" stroke="#fff" stroke-width="2.975" fill="#c00"/>
<path fill="#6cc" d="M129.207 47.11l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M114.924 49.49l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M117.305 51.87l2.38 2.38-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
<path fill="#69c" d="M112.544 54.25l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M118.097 55.84l.794 1.585-.793-1.586m9.522 0l.793 1.585-.794-1.586z"/>
<path fill="#69c" d="M131.587 54.25l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M112.544 56.63l2.38 2.382-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M114.924 59.012l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M110.163 61.392l2.38 2.38-2.38-2.38zm23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M110.163 63.773l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M110.163 66.153l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M107.783 68.533l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M112.544 68.533l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M136.348 68.533l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M107.783 70.914l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M113.337 72.502l.793 1.586-.793-1.586m19.043 0l.793 1.586-.793-1.586z"/>
<path fill="#9cc" d="M136.348 70.914l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M107.783 73.294l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M110.163 75.675l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M105.403 78.055l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M110.956 79.643l.794 1.586-.794-1.587m23.804 0l.794 1.586-.794-1.587z"/>
<path fill="#9cc" d="M138.728 78.055l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M105.403 80.435l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M107.783 82.816l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M103.022 85.196l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M108.576 86.784l.793 1.587-.794-1.586m28.565 0l.794 1.587-.793-1.586z"/>
<path fill="#9cc" d="M141.11 85.196l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M103.022 87.577l2.38 2.38-2.38-2.38m38.087 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M105.403 89.957l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M100.642 92.337l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M105.403 92.337l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M143.49 92.337l2.38 2.38-2.38-2.38m-49.99 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M95.88 94.718l2.382 2.38-2.38-2.38m52.368 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M150.63 94.718l2.38 2.38-2.38-2.38m-64.27 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M88.74 97.098l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M98.26 97.098l2.382 2.38-2.38-2.38z"/>
<path fill="#c33" d="M100.642 97.098l2.38 2.38-2.38-2.38m42.847 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M145.87 97.098l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M155.39 97.098l2.382 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M157.77 97.098l2.382 2.38-2.38-2.38z"/>
<path fill="#69c" d="M76.838 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M79.218 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M81.6 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M91.12 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M95.088 100.27l1.587.795-1.587-.794m54.75 0l1.586.795-1.586-.794z"/>
<path fill="#fcc" d="M153.01 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M162.532 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M164.913 99.48l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M167.293 99.48l2.38 2.38-2.38-2.38m-97.596 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M72.077 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M74.457 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M83.98 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M87.947 102.652l1.587.793-1.587-.793m69.032 0l1.586.793-1.587-.793z"/>
<path fill="#fcc" d="M160.152 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M169.673 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M172.054 101.86l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M174.434 101.86l2.38 2.38-2.38-2.38m-111.88 2.38l2.382 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M64.936 104.24l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M76.838 104.24l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M80.806 105.032l1.587.794-1.587-.794m83.314 0l1.587.794-1.587-.794z"/>
<path fill="#fcc" d="M167.293 104.24l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M179.195 104.24l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M181.575 104.24l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M55.414 106.62l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M57.795 106.62l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M67.316 106.62l2.38 2.38-2.38-2.38zm109.499 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M186.336 106.62l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M188.717 106.62l2.38 2.38-2.38-2.38M48.273 109l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M50.654 109l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M60.175 109l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M64.143 109.793l1.587.793-1.587-.793m116.64 0l1.587.793-1.587-.793z"/>
<path fill="#fcc" d="M183.956 109l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M193.477 109l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M195.858 109l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M41.132 111.38l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M43.512 111.38l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M53.034 111.38l2.38 2.38-2.38-2.38zm138.063 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M200.62 111.38l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M203 111.38l2.38 2.38-2.38-2.38m-166.63 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#c66" d="M48.273 113.76l2.38 2.38-2.38-2.38zm147.585 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M207.76 113.76l2.38 2.38-2.38-2.38m-166.628 2.38l2.38 2.382-2.38-2.38z"/>
<path fill="#ccf" d="M43.512 116.14l2.38 2.382-2.38-2.38z"/>
<path fill="#fcc" d="M53.034 116.14l2.38 2.382-2.38-2.38m138.063 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M200.62 116.14l2.38 2.382-2.38-2.38z"/>
<path fill="#9cc" d="M203 116.14l2.38 2.382-2.38-2.38z"/>
<path fill="#6cc" d="M48.273 118.522l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M50.654 118.522l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M60.175 118.522l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M64.143 119.314l1.587.794-1.587-.794m116.64 0l1.587.794-1.587-.794z"/>
<path fill="#fcc" d="M183.956 118.522l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M193.477 118.522l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M195.858 118.522l2.38 2.38-2.38-2.38m-140.444 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M57.795 120.902l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M67.316 120.902l2.38 2.38-2.38-2.38zm109.499 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M186.336 120.902l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M188.717 120.902l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M62.555 123.283l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M64.936 123.283l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M76.838 123.283l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M80.806 124.075l1.587.794-1.587-.795m83.314 0l1.587.794-1.587-.795z"/>
<path fill="#fcc" d="M167.293 123.283l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M179.195 123.283l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M181.575 123.283l2.38 2.38-2.38-2.38m-111.878 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M72.077 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M74.457 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M83.98 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M87.947 126.456l1.587.793-1.587-.794m69.032 0l1.586.793-1.587-.794z"/>
<path fill="#fcc" d="M160.152 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M169.673 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M172.054 125.663l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M174.434 125.663l2.38 2.38-2.38-2.38m-97.596 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M79.218 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M81.6 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M91.12 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M95.088 128.836l1.587.794-1.587-.794m54.75 0l1.586.794-1.586-.794z"/>
<path fill="#fcc" d="M153.01 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M162.532 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M164.913 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M167.293 128.043l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M86.36 130.424l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M88.74 130.424l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M98.26 130.424l2.382 2.38-2.38-2.38z"/>
<path fill="#c33" d="M100.642 130.424l2.38 2.38-2.38-2.38m42.847 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M145.87 130.424l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M155.39 130.424l2.382 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M157.77 130.424l2.382 2.38-2.38-2.38m-64.27 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M95.88 132.804l2.382 2.38-2.38-2.38m52.368 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M150.63 132.804l2.38 2.38-2.38-2.38m-49.988 2.38l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M105.403 135.185l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M143.49 135.185l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M105.403 137.565l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M103.022 139.945l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M108.576 141.533l.793 1.587-.794-1.587m28.565 0l.794 1.587-.793-1.587z"/>
<path fill="#ccf" d="M141.11 139.945l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M103.022 142.326l2.38 2.38-2.38-2.38m38.087 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M107.783 144.706l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M105.403 147.087l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M110.956 148.674l.794 1.587-.794-1.586m23.804 0l.794 1.587-.794-1.586z"/>
<path fill="#ccf" d="M138.728 147.087l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M105.403 149.467l2.38 2.38-2.38-2.38m33.325 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M110.163 151.847l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M107.783 154.228l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M113.337 155.816l.793 1.586-.793-1.586m19.043 0l.793 1.586-.793-1.586z"/>
<path fill="#cff" d="M136.348 154.228l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M107.783 156.608l2.38 2.38-2.38-2.38m28.565 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M107.783 158.99l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M112.544 158.99l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M136.348 158.99l2.38 2.38-2.38-2.38z"/>
<path fill="#cff" d="M110.163 161.37l2.38 2.38-2.38-2.38zm23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M110.163 163.75l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M110.163 166.13l2.38 2.38-2.38-2.38m23.805 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M114.924 168.51l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M112.544 170.89l2.38 2.38-2.38-2.38z"/>
<path fill="#c33" d="M118.097 172.478l.794 1.587-.793-1.587m9.522 0l.793 1.587-.794-1.587z"/>
<path fill="#9cf" d="M131.587 170.89l2.38 2.38-2.38-2.38z"/>
<path fill="#69c" d="M112.544 173.27l2.38 2.38-2.38-2.38m19.043 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M117.305 175.65l2.38 2.382-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
<path fill="#9cf" d="M114.924 178.032l2.38 2.38-2.38-2.38zm14.283 0l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M114.924 180.412l2.38 2.38-2.38-2.38m14.283 0l2.38 2.38-2.38-2.38z"/>
<path fill="#fcc" d="M119.685 182.793l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M117.305 185.173l2.38 2.38-2.38-2.38m9.52 0l2.382 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M117.305 187.553l2.38 2.38-2.38-2.38z"/>
<path fill="#c66" d="M122.065 187.553l2.38 2.38-2.38-2.38z"/>
<path fill="#6cc" d="M126.826 187.553l2.38 2.38-2.38-2.38z"/>
<path fill="#ccf" d="M119.685 192.314l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38z"/>
<path fill="#9cc" d="M119.685 194.695l2.38 2.38-2.38-2.38m4.76 0l2.38 2.38-2.38-2.38m-2.38 4.76l2.38 2.38-2.38-2.38z"/>
</g>
</svg>

18
src/main/resources/static/files/assets/icon/flag-icons/fonts/ax.svg

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".67" d="M166.02 0h850v850h-850z"/>
</clipPath>
</defs>
<g clip-path="url(#a)" transform="translate(-100) scale(.6024)">
<path fill="#0053a5" d="M0 0h1300v850H0z"/>
<g fill="#ffce00">
<path d="M400 0h250v850H400z"/>
<path d="M0 300h1300v250H0z"/>
</g>
<g fill="#d21034">
<path d="M475 0h100v850H475z"/>
<path d="M0 375h1300v100H0z"/>
</g>
</g>
</svg>

8
src/main/resources/static/files/assets/icon/flag-icons/fonts/az.svg

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<path fill="#3f9c35" d="M0 0h512v512H0z"/>
<path fill="#ed2939" d="M0 0h512v341.333H0z"/>
<path fill="#00b9e4" d="M0 0h512v170.667H0z"/>
<circle cx="238.827" cy="256" r="76.8" fill="#fff"/>
<circle cx="255.893" cy="256" r="64" fill="#ed2939"/>
<path d="M324.16 213.333l8.164 22.958 22.006-10.46-10.46 22.006L366.826 256l-22.958 8.164 10.46 22.006-22.006-10.46-8.164 22.957-8.164-22.958-22.006 10.46 10.46-22.006L281.494 256l22.958-8.164-10.46-22.006 22.006 10.46 8.164-22.957z" fill="#fff"/>
</svg>

12
src/main/resources/static/files/assets/icon/flag-icons/fonts/ba.svg

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".67" d="M0 0h512v512H0z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)">
<path fill="#009" d="M0 0h512v512H0z"/>
<path d="M77 .006l436.91 436.91V.006H77z" fill="#fc0"/>
<path d="M39.867 35.49l9.32-28.68 9.32 28.68H88.66L64.265 53.215l9.32 28.68L49.187 64.17 24.79 81.896l9.32-28.68L9.71 35.49m84.77 54.614l9.32-28.68 9.32 28.68h30.155l-24.397 17.725 9.32 28.68-24.398-17.726-24.397 17.726 9.32-28.68-24.397-17.726m84.769 54.614l9.32-28.68 9.318 28.68h30.156l-24.398 17.726 9.32 28.68-24.398-17.725-24.397 17.725 9.32-28.68-24.398-17.726m84.772 54.613l9.318-28.68 9.32 28.68h30.155l-24.397 17.727 9.32 28.68-24.398-17.725-24.397 17.725 9.32-28.68-24.397-17.726m84.768 54.614l9.32-28.68 9.32 28.68h30.154L282.72 271.67l9.32 28.68-24.398-17.725-24.397 17.726 9.32-28.68-24.398-17.725m84.769 54.614l9.32-28.68 9.32 28.68h30.154l-24.397 17.724 9.32 28.68-24.398-17.725-24.397 17.725 9.32-28.68-24.397-17.726m84.769 54.614l9.32-28.68 9.318 28.68h30.156l-24.397 17.726 9.32 28.68-24.398-17.725-24.398 17.725 9.32-28.68-24.398-17.726m84.771 54.614l9.32-28.68 9.318 28.68h30.156l-24.397 17.726 9.32 28.68-24.397-17.725-24.397 17.725 9.32-28.68-24.398-17.726m84.768 54.614l9.32-28.68 9.32 28.68h30.154l-24.396 17.725 9.32 28.68-24.397-17.725-24.397 17.726 9.32-28.68L446.62 472.4" fill="#fff"/>
</g>
</svg>

6
src/main/resources/static/files/assets/icon/flag-icons/fonts/bb.svg

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="512" width="512" viewBox="0 0 512 512">
<path fill="#00267f" d="M0-.2h512V512H0z"/>
<path fill="#ffc726" d="M170.667-.2h170.667V512H170.667z"/>
<path id="a" d="M256 173.312c-5.547 15.125-11.2 30.87-23.296 42.923 3.755-1.238 10.325-2.347 14.55-2.24v63.616l-17.963 2.667c-.64-.064-.853-1.066-.853-2.432-1.728-19.754-6.4-36.352-11.776-53.525-.383-2.347-7.188-11.307-1.94-9.728.64.085 7.66 2.944 6.55 1.58-9.558-9.9-23.53-17.025-37.1-19.137-1.194-.3-1.898.298-.83 1.685 18.004 27.712 33.065 60.416 32.937 99.22 6.998 0 23.958-4.137 30.976-4.137v44.885h8.854l2.026-125.355z"/>
<use height="100%" width="100%" xlink:href="#a" transform="matrix(-1 0 0 1 512 0)"/>
</svg>

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

Loading…
Cancel
Save