Compare commits

..

171 Commits

Author SHA1 Message Date
8e5691f7bb Add additional SRC-IP-CIDR entry for smart TV clients 2026-02-07 20:07:29 +03:00
c30ad90e34 Add SRC-IP-CIDR entry for 192.168.10.103 in clients-smart-tv.yaml 2026-02-07 20:05:20 +03:00
100044e79c Fix typo in DOMAIN-SUFFIX entry and remove unused entries in ru-intra.yaml 2026-01-30 22:04:49 +03:00
bd4af66d63 upd 2026-01-26 19:48:40 +03:00
f62b3ff776 Add new DOMAIN-SUFFIX entries for growcdnssedge.com and flixcdn.com in porn.yaml 2026-01-26 19:25:15 +03:00
373685ca59 Add additional DOMAIN-SUFFIX entries to libraries.yaml for expanded coverage 2026-01-23 12:09:26 +03:00
3933195746 Remove trailing whitespace in external-proxies-sanitizer.js for cleaner code 2026-01-13 17:29:59 +03:00
50bce03cf8 Refactor SUB STORE YAML ASSEMBLER to fix duplicate headers and streamline options parsing 2026-01-09 20:28:32 +03:00
49caf5dc65 Add SUB STORE YAML ASSEMBLER script with comprehensive processing capabilities 2026-01-09 19:56:50 +03:00
8826675dd8 Add SUB STORE YAML ASSEMBLER script with cleaning options for enhanced processing 2026-01-09 19:56:04 +03:00
9dc7c8dda9 Add SVG icons for numbers 01, 02, and 03 to enhance visual representation 2026-01-09 19:41:47 +03:00
7836eceda2 Add SUB STORE YAML ASSEMBLER script for content-tag aware processing 2026-01-06 15:40:56 +03:00
ef4cf861ff Remove unnecessary line from cadian.current.yaml for cleaner configuration 2026-01-05 22:37:12 +03:00
34c3e242e5 Update icon for IPv6 in external-proxies-sanitizer.js for improved clarity 2026-01-05 21:35:48 +03:00
41127d10d1 Upd 2026-01-05 21:33:50 +03:00
ae1b71f741 Reset default values in AMZ_DEFAULTS for Jc, Jmin, Jmax, S1, and S2 to ensure consistent behavior 2026-01-05 20:55:09 +03:00
eeb60ab5ad Reset default values in AMZ_DEFAULTS to zero for Jc, Jmin, and Jmax to ensure consistent behavior 2026-01-05 20:53:38 +03:00
67704659e6 Update icon tags in external-proxies-sanitizer.js for improved clarity and consistency 2026-01-05 20:51:07 +03:00
4f73cd0071 Upd 2026-01-05 20:26:07 +03:00
df7d2d555f Fix final output format in AWG to Clash conversion script; revert to YAML serialization for compatibility with existing processing 2026-01-05 20:04:11 +03:00
3dafd087cd Refactor normalizeOptions function; simplify argument handling and improve boolean conversion logic for better clarity and performance 2026-01-05 19:58:15 +03:00
2fce3a192a Refactor test-options.js; rename globalKeysSample to pickEnvSample and enhance environment variable sampling logic for improved clarity and safety 2026-01-05 19:55:39 +03:00
c140b08e12 Add test-options.js script for reporting global variables and content types 2026-01-05 19:49:38 +03:00
0847e23918 Update final output format in AWG to Clash conversion script; switch from YAML to JSON for better compatibility 2026-01-05 19:45:26 +03:00
4b607f8d6f Refactor normalizeOptions function; enhance URL extraction and query parameter handling for improved flexibility and clarity 2026-01-05 19:44:14 +03:00
e0b79a217f Refactor normalizeOptions function; streamline query parameter extraction and improve boolean conversion logic for better clarity and performance 2026-01-05 19:42:11 +03:00
ba21e17168 Refactor AWG to Clash conversion script; enhance option normalization, parsing logic, and proxy construction for improved functionality and maintainability 2026-01-05 19:37:34 +03:00
26867d4175 Update config-sub-converter/scripts/convert-awg-to-clash.js 2026-01-05 18:37:46 +03:00
e8477c3322 Refactor AWG to Clash conversion script for improved readability and maintainability; streamline parsing and output generation 2026-01-05 18:34:33 +03:00
5cef2d7bca Remove outdated configuration files for Kazakhstan, Netherlands, Poland, and the US; add new script for AWG to Clash conversion 2026-01-05 18:28:07 +03:00
6b76e578b5 Update country detection logic with prioritized flags for improved accuracy 2026-01-05 17:07:45 +03:00
e2f855bb39 Upd 2026-01-05 17:01:56 +03:00
6525bbab11 Update icon for IPv6 and add country detection rules for Belarus and China 2026-01-05 16:57:55 +03:00
0ae3f1100c Enable debug mode by setting DEBUG_APPEND_ORIGINAL_NAME to true 2026-01-05 16:41:58 +03:00
faaf393325 Add lab.svg icon file for improved visual representation 2026-01-05 16:27:20 +03:00
76d11a6621 Fix name formatting by removing space before meta tag in final output 2026-01-05 15:56:30 +03:00
38ba2fd576 Disable debug mode by setting DEBUG_APPEND_ORIGINAL_NAME to false 2026-01-05 15:50:42 +03:00
b81b395282 Add standard ports mapping and update port formatting for improved consistency 2026-01-05 15:49:43 +03:00
143f41dcde Update METATAG_RULES and PORT_FORMAT for improved icon representation and formatting 2026-01-05 15:32:10 +03:00
8f535becc2 Refactor icon and country detection rules in external-proxies-sanitizer.js for improved clarity and maintainability 2026-01-05 13:14:27 +03:00
82e97b2f57 Refactor icon and country detection rules in external-proxies-sanitizer.js for improved accuracy and maintainability 2026-01-04 20:31:45 +03:00
75439cf6df Update external-proxies-sanitizer.js to refine noise patterns and enhance country detection rules 2026-01-04 19:47:47 +03:00
b7f2adba40 Add Sub-Store Advanced Batch Processing Script for proxy normalization and tagging 2026-01-04 19:00:21 +03:00
5c8851a292 Add SOCKS5 listeners for inquisitor and servitor with authentication details 2025-12-27 22:45:07 +03:00
46e8ef128f Add SRC-IP-CIDR entry for DTS-TAB-S7-NET in testzone-a.yaml 2025-12-27 20:06:01 +03:00
3933f84a75 Update commit message for your changes. Lines starting 2025-12-27 19:59:09 +03:00
a67b0879e7 Update host IP addresses for gitea and webway services 2025-12-27 19:30:20 +03:00
20b063a10e Add authentication details for local SOCKS5/HTTP(S) server 2025-12-27 19:11:26 +03:00
13a18703cd Update Wireguard server address for Netherlands proxy 2025-12-27 18:49:03 +03:00
dd4c6432ba Add Wireguard configuration for Netherlands proxy 2025-12-27 18:44:01 +03:00
4126234efc Comment out TPROXY rule for TCP in iptables setup script to prevent unintended behavior 2025-12-27 17:26:16 +03:00
54296bf161 Refactor cleanup process in iptables setup script for improved robustness and clarity 2025-12-27 16:53:07 +03:00
fed8153553 Enhance cleanup_rules function to prevent script failure when no matching rules are found 2025-12-27 16:39:19 +03:00
ce1cf4407c Upd 2025-12-27 16:19:22 +03:00
a6cb527bb3 Add functions to delete iptables rules by target and interface for improved cleanup 2025-12-27 15:50:13 +03:00
16ca0a11b6 Refactor ensure_ip_rule function to remove duplicate ip rules and enforce route table entry 2025-12-27 15:44:39 +03:00
f6524bfbad Add host entries to configuration and enhance iptables setup for MIHOMO 2025-12-27 15:34:41 +03:00
fab3feba72 Update external UI path in cadian.current.yaml to point to Mihomo directory 2025-12-27 14:53:43 +03:00
cd071d5516 Update iptables scripts for MIHOMO integration and rename setup files 2025-12-27 14:47:23 +03:00
c592e59d58 Refactor code structure for improved readability and maintainability 2025-12-27 14:22:40 +03:00
da0e95ccca Add example configuration for Rockblade with comprehensive proxy and routing rules
- Introduced a new YAML configuration file for Rockblade.
- Configured proxy settings for a Russian server using WireGuard.
- Enabled DNS settings with multiple nameservers and caching.
- Defined various proxy groups for popular services like Netflix, Discord, and more.
- Implemented routing rules for ad blocking, regional traffic, and specific services.
- Included geo-data settings for automatic updates and external rule providers.
2025-12-21 21:53:53 +03:00
b378abd4e0 Add configuration files for VPN setups and remove empty demo scripts 2025-12-21 21:30:51 +03:00
db9effa817 Refactor IP CIDR entries in testzone-a.yaml and update testzone-b.yaml to use SRC-IP-CIDR format 2025-12-17 16:29:15 +03:00
1c2a8f9ca9 Upd 2025-12-16 10:03:15 +03:00
186e51169d Uod 2025-12-15 22:01:19 +03:00
37851b2bd5 Upd 2025-12-13 15:42:19 +03:00
56260ba9b4 Upd 2025-12-09 08:44:19 +03:00
306b26d1e7 Upd 2025-12-08 20:09:21 +03:00
4ae5866049 Upd 2025-12-08 20:06:52 +03:00
0a33ca6d1b Upd 2025-12-08 20:00:44 +03:00
0bdd4da11e Upd 2025-12-08 19:44:42 +03:00
82a9ec8265 Upd 2025-12-08 19:38:27 +03:00
8a78b75967 Upd 2025-12-08 19:24:48 +03:00
3576031a96 Upd 2025-12-08 19:21:50 +03:00
a830eff8b6 Upd 2025-12-07 23:02:01 +03:00
272c42338c upd 2025-12-07 20:09:03 +03:00
d2c8f9ce3d upd 2025-12-07 18:45:24 +03:00
03bab847a7 Upd 2025-12-07 12:38:43 +03:00
8bb617f816 Upd 2025-12-06 21:50:58 +03:00
c610b44f48 Upd 2025-12-06 15:32:23 +03:00
0b4ef05240 Updates 2025-12-04 20:45:59 +03:00
967118dacc updates 2025-12-04 17:28:46 +03:00
23da6f7458 Huge updates 2025-12-04 16:00:46 +03:00
8afe9529c1 Updates 2025-12-04 12:36:52 +03:00
d7c3d2bca9 Updates 2025-12-04 12:20:44 +03:00
d637c71caf Upd 2025-12-04 12:00:46 +03:00
ef28c00020 Updates 2025-12-04 11:43:30 +03:00
5828b93f97 Updates 2025-12-04 10:50:47 +03:00
2e9aa509d2 Upd 2025-12-03 20:51:13 +03:00
9059b8dfe7 Upd 2025-12-03 20:18:23 +03:00
d37236d717 Upd 2025-12-03 20:13:24 +03:00
e41469602a Upd 2025-12-03 20:11:52 +03:00
13c10696ef Upd 2025-12-03 20:10:22 +03:00
afc3eff8d4 Upd 2025-12-03 20:09:14 +03:00
16dc46475b Upd 2025-12-03 20:08:07 +03:00
ddac51323c Updates 2025-12-03 17:29:18 +03:00
13b2526bd4 Updates 2025-12-03 13:31:28 +03:00
4c669e35b5 Added VK service 2025-12-02 22:38:57 +03:00
4158ba4577 Updates 2025-12-02 22:08:40 +03:00
b228495d90 Added meta icon 2025-12-02 21:41:14 +03:00
8e0019380d Many updates 2025-12-02 21:37:18 +03:00
1fbf3ab66f Updates 2025-12-02 17:17:47 +03:00
dd51f885e5 Updated Amnezia config 2025-12-02 12:50:48 +03:00
24e4c5288b Update cloudflare.yaml to enhance domain and IP-CIDR configurations 2025-12-01 22:59:51 +03:00
9e06a1410e Update pontifex.yaml configuration:
- Change external controller address to 0.0.0.0 for accessibility.
- Add new host entries for 'aither.shamanlanding.org' and 'zashboard.shamanlanding.org'.
- Update DNS settings: replace default nameservers and add new fallback options.
- Refactor proxy settings and add new proxy providers for agility, dexterity, finesse, and prowess.
- Consolidate proxy groups and services for better organization and maintainability.
- Update rule providers URLs to use the new antifilter domain.
2025-12-01 22:43:39 +03:00
32ec9efb5d Update notion.yaml to correct IP-CIDR entry and adjust domain suffix configuration 2025-12-01 10:22:08 +03:00
12d2f61d16 Remove outdated proxy configurations from hynet.txt, update domain rule in notion.yaml, and add new proxy configurations to scarus/hynet.txt. 2025-12-01 10:15:15 +03:00
4aceafd49c Add new proxy configurations for Hydranet 2025-11-30 19:31:39 +03:00
9c0236f344 Implement feature X to enhance user experience and optimize performance 2025-11-30 16:08:51 +03:00
a6423776a8 Remove obsolete proxy configuration for Unicade and add new WireGuard proxy configuration for Kazakhstan in Amnezia. 2025-11-27 15:52:53 +03:00
a1f64874ca Upd 2025-11-25 16:48:15 +03:00
44ddc3ae68 Update DNS configuration: change default nameservers, enable use of hosts, and add fallback filters 2025-11-25 09:51:52 +03:00
725d913130 Update DNS configuration: remove additional nameservers and disable use of hosts 2025-11-24 11:24:49 +03:00
0031099a0d Update pontifex configuration: modify external controller settings, adjust DNS nameservers, and add Crypto Stuff rule set 2025-11-22 18:25:27 +03:00
765383742c ! 2025-11-19 16:29:38 +03:00
5d9fee4da1 Add DOMAIN-KEYWORD entries for fisting and punishworld 2025-11-19 16:27:40 +03:00
30cd9f4ebc Added piratebay and updated tvsubtitles.ru and tvsubs.ru to torrent trackers 2025-11-14 23:45:10 +03:00
3a047ae156 Added canva.com to persistent services 2025-11-02 19:10:22 +03:00
0846f12fcc Updated nintendo ruleset 2025-10-30 18:56:13 +03:00
ee097c4049 Added sendpulse.com to persistent services 2025-10-30 16:01:23 +03:00
bcdc41a2ec Removed melia 2025-10-27 12:55:33 +03:00
64762359bd Melia-related domains added to persistent.yaml 2025-10-27 12:47:23 +03:00
3d2c78f1bd Updated bose|gygia? 2025-10-27 12:10:11 +03:00
6ec96c5419 Updated bose.io and wanikaniusercontent.com domains in persistent.yaml 2025-10-27 12:06:42 +03:00
9bffa4383b Updates to config-clash/solar/warpgate.yaml 2025-10-20 16:20:10 +03:00
f8e88cf69b Updates to config-clash/solar/warpgate.yaml 2025-10-20 16:05:06 +03:00
43a1124604 Updates to zash config 2025-10-14 09:49:09 +03:00
243efc653e Updated 2025-10-13 22:03:44 +03:00
a30d083f31 Crypto updates 2025-10-13 22:01:01 +03:00
8397ef7686 Updated zashboard configs and added crypto rules 2025-10-13 21:59:11 +03:00
672df72de2 Updates 2025-10-13 21:55:36 +03:00
9c1935985a Added zashboard config 2025-10-13 17:02:07 +03:00
a3ab8a51cc Updated logic 2025-10-13 13:29:13 +03:00
a92bcf9188 Updates to icons 2025-10-13 13:09:24 +03:00
faf97aee56 ! 2025-10-10 19:30:39 +03:00
26b7760932 ! 2025-10-10 19:28:51 +03:00
e34c004d80 ! 2025-10-10 19:06:54 +03:00
9770ef5ad6 Test 2025-10-10 19:01:56 +03:00
92a149d8cc ! 2025-10-10 18:59:45 +03:00
d9bafd4f5d Updated 'rule-provider/consolidated-services/torrent-trackers.yaml' with new rules 2025-08-24 15:50:17 +03:00
d2a0a799ed Updare license and documentation files 2025-08-16 19:15:17 +03:00
459c99e7cd Updates 2025-08-12 08:37:23 +03:00
57f73be75a More icons! 2025-08-11 22:04:08 +03:00
b19f779d2f Merge branch 'main' of https://gitea.shamanlanding.org/DaTekShaman/clash-rules 2025-08-11 21:53:21 +03:00
ba76981157 Updated warp config 2025-08-11 21:53:07 +03:00
e117c548de Merge branch 'main' of https://gitea.shamanlanding.org/DaTekShaman/clash-rules 2025-08-11 10:29:48 +03:00
3a58c8b6d7 Updates 2025-08-11 10:29:40 +03:00
0cee50cac0 ASN Update 2025-08-09 23:26:45 +03:00
ae9ec11d44 Reddit 2025-08-09 23:03:01 +03:00
f74ce59269 Gemini 2025-08-08 16:17:04 +03:00
d53f500802 Added D-VPN 2025-08-08 16:05:36 +03:00
9add7a7fa4 Updates 2025-08-08 15:44:10 +03:00
53ee7378fe False Positive googleapis 2025-08-08 15:40:42 +03:00
55ee8effad New Data 2025-08-08 15:34:10 +03:00
6f0f45affc All rules updated 2025-08-08 14:48:34 +03:00
01d019fd53 Many new rules 2025-08-08 11:17:50 +03:00
41cb4e59fc Update 2025-08-07 23:46:14 +03:00
1bf76f74e1 Merge branch 'main' of https://gitea.shamanlanding.org/DaTekShaman/clash-rules 2025-08-07 22:38:46 +03:00
075f5af52d Updates 2025-08-07 22:38:16 +03:00
692cbf490e Updates 2025-08-07 22:38:02 +03:00
90eb53d528 Updates 2025-08-07 17:27:23 +03:00
2ccae6d046 Local and sub-rules 2025-08-07 10:47:42 +03:00
8b25268dcb Merge branch 'main' of https://gitea.shamanlanding.org/DaTekShaman/clash-rules 2025-08-07 09:19:32 +03:00
f6f0e4f814 local 2025-08-07 09:18:58 +03:00
2dd1c49fb0 Hosts 2025-08-06 18:55:36 +03:00
4ee232f4a8 Updates 2025-08-06 17:26:16 +03:00
e8d6997e74 updates 2025-08-06 16:48:24 +03:00
9f78ed876f Beatify config 2025-08-06 15:55:06 +03:00
185b6d5aef Intercountry 2025-08-06 15:09:11 +03:00
d4bd92a26f More rules 2025-08-06 15:02:21 +03:00
c71a5cf4bc Config update 2025-08-06 14:18:13 +03:00
220 changed files with 20549 additions and 8698 deletions

9
LICENSE Normal file
View File

@@ -0,0 +1,9 @@
MIT License
Copyright (c) 2025 DaTekShaman
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2
README.md Normal file
View File

@@ -0,0 +1,2 @@
# clash-rules

View File

@@ -0,0 +1,24 @@
# Generated on: 2025-12-21 18:28:33
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
# Keenetic: interface Wireguard0 wireguard asc 2 10 50 81 33 2023084421 1113200792 1624558687 767247996
[Interface]
Address = 100.72.173.249/32
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = no/Mo/8PWzF+PRajlwc81TSlYWB4e+BfWHJInzj7dVo=
Jc = 2
Jmin = 10
Jmax = 50
S1 = 81
S2 = 33
H1 = 2023084421
H2 = 1113200792
H3 = 1624558687
H4 = 767247996
[Peer]
PublicKey = PpitEK737+DsqSMlCIFjEG8uI/0QAj1EQIpQJzozv2Q=
PresharedKey = WFjxvJuR2Fx5XEUTO584yndz8cwUEDuy9E5As1BTUGE=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 162.249.127.178:37515
PersistentKeepalive = 25

View File

@@ -0,0 +1,24 @@
# Generated on: 2025-12-21 18:29:07
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
# Keenetic: interface Wireguard0 wireguard asc 2 10 50 136 48 947927481 424962932 1068800855 1088281476
[Interface]
Address = 100.72.174.0/32
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = plDZ4Fcdq7W/veRHhHeIq2CSGDU1jkBo+2VrdegRJa0=
Jc = 2
Jmin = 10
Jmax = 50
S1 = 136
S2 = 48
H1 = 947927481
H2 = 424962932
H3 = 1068800855
H4 = 1088281476
[Peer]
PublicKey = 8ZGUH6Sy5JJqkYACL7pILD00LPqvPU2k6C8Y5lj47y8=
PresharedKey = kJy5wAVa+bKtbUYeQmXJsmOlgoZQKJ271MLlKpL9c08=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 185.155.97.175:33132
PersistentKeepalive = 25

View File

@@ -0,0 +1,24 @@
# Generated on: 2025-12-21 18:30:09
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 81 73 1835075253 1381691586 1646178542 710963756
[Interface]
Address = 100.72.174.7/32
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = H8D1ltUWLDuF+eTTKRH8iG7k8HFsX3esjMbZb9OIoIY=
Jc = 3
Jmin = 10
Jmax = 50
S1 = 81
S2 = 73
H1 = 1835075253
H2 = 1381691586
H3 = 1646178542
H4 = 710963756
[Peer]
PublicKey = mYJ0OByhDsO+Okhd+AXTcBJoFbVXAOeJ7Pa7ihw441U=
PresharedKey = YLfe5ketC/TFqcCGV/Y8eGOyyIdQgVxueDS/kSY7uG4=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 79.127.168.139:41782
PersistentKeepalive = 25

View File

@@ -0,0 +1,24 @@
# Generated on: 2025-12-21 18:29:34
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 105 48 1162346210 1656368792 1067936661 1258665380
[Interface]
Address = 100.72.174.6/32
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = WB9k3kCd3j9+BRfGtbGdpx6deph6eHAtaBbXsaQX+bY=
Jc = 3
Jmin = 10
Jmax = 50
S1 = 105
S2 = 48
H1 = 1162346210
H2 = 1656368792
H3 = 1067936661
H4 = 1258665380
[Peer]
PublicKey = 6BOPYPQEFAtTCSgLLqNUqbUU5A/euMb9D48NBr7mryU=
PresharedKey = kDU/LPmsZHqeEToIxjdM+K3pYRWoRxM6p0oQtUd+gFA=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 130.195.218.194:42495
PersistentKeepalive = 25

View File

@@ -0,0 +1,24 @@
# Generated on: 2025-12-21 18:26:43
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 115 85 527190701 561860632 441868062 1860350990
[Interface]
Address = 100.71.64.155/32
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = JsYjJxv2/VCELbRt2y0fiWL8XMfHRU4Hf9ez17s/AKE=
Jc = 3
Jmin = 10
Jmax = 50
S1 = 115
S2 = 85
H1 = 527190701
H2 = 561860632
H3 = 441868062
H4 = 1860350990
[Peer]
PublicKey = XJWGtcthVWP4ZPDEbto8iSCDLt7aVamPNnW2/oXMYXk=
PresharedKey = 0DkpvP65ftUesTd3/whsNuZ82t6U7CE2St2WgA7Xsmc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 216.106.180.5:44500
PersistentKeepalive = 25

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,437 @@
# https://rockblack.pro/mihomo_generator
redir-port: 1182
tproxy-port: 1181
mixed-port: 1080
tcp-concurrent: true
allow-lan: true
mode: rule
geo-auto-update: true
geo-update-interval: 168
log-level: silent
ipv6: false
external-controller: 0.0.0.0:9090
external-ui: ./zash
external-ui-url: "https://github.com/Zephyruso/zashboard/releases/latest/download/dist-cdn-fonts.zip"
geodata-mode: true
profile:
store-selected: true
find-process-mode: "off"
# --- НАСТРОЙКИ СНИФФЕРА ---
sniffer:
enable: true
force-dns-mapping: true
sniff:
HTTP:
ports: [80]
override-destination: true
TLS:
ports: [443]
QUIC:
ports: [443]
# --- СПИСОК ПРОКСИ-СЕРВЕРОВ (КЛЮЧИ) ---
proxies:
- name: '🇷🇺 Россия'
type: wireguard
private-key: Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg=
server: 5.8.93.236
port: 42854
ip: 100.71.64.155
dns: ['8.8.8.8', '8.8.4.4']
public-key: ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs=
pre-shared-key: oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk=
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
persistent-keepalive: 25
amnezia-wg-option:
jc: 3
jmin: 10
jmax: 50
s1: 145
s2: 34
h1: 203715079
h2: 914012290
h3: 174842657
h4: 1514769902
# --- СЕКЦИЯ DNS ---
dns:
enable: true
listen: 0.0.0.0:7874
ipv6: false
cache-algorithm: arc
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver:
- 1.1.1.1
- 8.8.8.8
- 208.67.222.222
- 208.67.220.220
nameserver:
- https://dns10.quad9.net/dns-query
- https://dns.aa.net.uk/dns-query
- https://doh.opendns.com/dns-query
- tls://dns.quad9.net
- tls://1.1.1.1
- tls://dns.opendns.com
nameserver-policy:
'+.supercell.net': 'https://dns.google/dns-query'
'+.brawlstarsgame.com': 'https://dns.google/dns-query'
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'
- +.pool.ntp.org
- +.msftconnecttest.com
- +.3gppnetwork.org
# --- ГРУППЫ ПРОКСИ (ПОЛИТИКИ) ---
proxy-groups:
- name: 'Gemini'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/331406/gemini.svg"
- name: 'Speedtest'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/355484/speed.svg"
- name: '18+'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/530357/peach.svg"
- name: 'Apple'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/506958/clo-bowler.svg"
- name: 'Fastly'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/353730/fastly.svg"
- name: 'boosty'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/506958/clo-bowler.svg"
- name: 'Discord'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/331368/discord-v2.svg"
- name: 'Spotify'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/349511/spotify.svg"
- name: 'Viber'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/125448/viber.svg"
- name: 'Roblox'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/443377/brand-roblox.svg"
- name: 'Linkedin'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/448234/linkedin.svg"
- name: 'Akamai'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/353385/akamai.svg"
- name: 'Netflix'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/303341/netflix-1-logo.svg"
- name: '2IP.IO'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/415672/address-location-map.svg"
- name: 'Twitter'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/452121/twitter-1.svg"
- name: 'Instagram'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/452229/instagram-1.svg"
- name: 'Google'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/475656/google-color.svg"
- name: 'Google Play'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/353828/google-play-icon.svg"
- name: 'Whatsapp'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/349563/whatsapp.svg"
- name: 'Microsoft'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/452062/microsoft.svg"
- name: 'GitHub'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/475654/github-color.svg"
- name: 'Amazon'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/475634/amazon-color.svg"
- name: 'Notion'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/361558/notion-logo.svg"
- name: 'Tidal'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/504993/tidal.svg"
- name: 'Telegram'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/354443/telegram.svg"
- name: 'TikTok'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/349530/tiktok.svg"
- name: 'Twitch'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/448251/twitch.svg"
- name: 'RU трафик'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/508628/flag-ru.svg"
- name: 'Остальной трафик'
type: select
exclude-filter: "(?i)Russia|RU"
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/293111/maps-and-flags-global.svg"
- name: 'Блокировка рекламы'
type: select
proxies: [ REJECT, DIRECT, '🇷🇺 Россия' ]
icon: "https://www.svgrepo.com/show/300290/sign-roadblock.svg"
- name: 'YouTube'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/13671/youtube.svg"
- name: 'Facebook'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/475647/facebook-color.svg"
- name: 'OpenAI'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/306500/openai.svg"
- name: 'Steam'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/452107/steam.svg"
- name: 'other'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/462111/netflix.svg"
- name: 'intel'
type: select
proxies: [ '🇷🇺 Россия', DIRECT ]
icon: "https://www.svgrepo.com/show/349412/intel.svg"
- name: GLOBAL
type: select
hidden: true
proxies:
- 'YouTube'
- 'Google'
- 'Google Play'
- 'Steam'
- 'Microsoft'
- 'GitHub'
- 'Gemini'
- 'Roblox'
- 'Instagram'
- 'Linkedin'
- 'Amazon'
- 'Akamai'
- 'Facebook'
- '18+'
- 'Discord'
- 'Fastly'
- 'Viber'
- 'Telegram'
- 'Twitch'
- 'Apple'
- 'TikTok'
- 'Notion'
- 'Whatsapp'
- 'Speedtest'
- 'Netflix'
- 'Spotify'
- 'other'
- 'intel'
- 'boosty'
- 'OpenAI'
- 'Tidal'
- 'RU трафик'
- 'Блокировка рекламы'
- 'Остальной трафик'
- DIRECT
# --- НАСТРОЙКИ GEO-ДАННЫХ ---
geox-url:
geosite: "https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat"
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geoip.dat"
rule-providers:
hagezi_pro:
type: http
behavior: domain
format: mrs
url: "https://github.com/zxc-rv/ad-filter/releases/latest/download/adlist.mrs"
path: ./adblock/adlist.mrs
interval: 86400
discord:
type: inline
behavior: classical
format: text
payload:
- "AND,((DOMAIN-KEYWORD,discord),(NOT,((DOMAIN-SUFFIX,ru))))"
- "AND,((IP-CIDR,34.0.192.0/18,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
- "AND,((IP-CIDR,35.192.0.0/11,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
- "AND,((IP-CIDR,66.22.192.0/18,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
# --- ПРАВИЛА МАРШРУТИЗАЦИИ ---
rules:
# ПРАВИЛО №0: Блокировка рекламы и трекеров
- GEOSITE,category-ads-all,Блокировка рекламы
- RULE-SET,hagezi_pro,Блокировка рекламы
# ПРАВИЛО №1: Системные правила
- GEOIP,private,DIRECT,no-resolve
# ПРАВИЛО №2: Российский трафик
- DOMAIN-SUFFIX,avito.ru,DIRECT
- DOMAIN-SUFFIX,avito.st,DIRECT
- GEOSITE,category-ru,RU трафик
- DOMAIN-SUFFIX,ru,RU трафик
- DOMAIN-SUFFIX,by,RU трафик
- DOMAIN-SUFFIX,xn--p1ai,RU трафик
- DOMAIN-SUFFIX,yandex-pogoda.static-storage.net,RU трафик
- GEOSITE,category-gov-ru,RU трафик
- GEOIP,RU,RU трафик,no-resolve
# ПРАВИЛО №3: Правила для конкретных сервисов
- OR,((DOMAIN-SUFFIX,gql.twitch.tv),(DOMAIN-SUFFIX,usher.ttvnw.net)),Twitch
- GEOSITE,openai,OpenAI
- RULE-SET,discord,Discord
- GEOSITE,tidal,Tidal
- GEOSITE,linkedin,Linkedin
- GEOSITE,facebook,Facebook
- GEOSITE,netflix,Netflix
- GEOIP,netflix,Netflix
- GEOSITE,spotify,Spotify
- GEOSITE,speedtest,Speedtest
- GEOSITE,ookla-speedtest,Speedtest
- GEOSITE,category-speedtest,Speedtest
- GEOSITE,instagram,Instagram
- GEOSITE,steam,Steam
- GEOSITE,apple,Apple
- GEOSITE,youtube,YouTube
- GEOSITE,twitter,Twitter
- GEOSITE,tiktok,TikTok
- GEOSITE,intel,intel
- GEOSITE,notion,Notion
- GEOSITE,google,Google
- GEOSITE,google-play,Google Play
- GEOSITE,google-gemini,Gemini
- GEOSITE,github,GitHub
- GEOSITE,microsoft,Microsoft
- GEOSITE,telegram,Telegram
- GEOIP,telegram,Telegram
# CDN Akamai, Fastly, Amazon
- IP-ASN,16509,Amazon
- IP-ASN,16625,Akamai
- GEOIP,fastly,Fastly
# Roblox открыть порты xkeen -ap 80,443,49152:65535
- AND,((IP-ASN,22697),(DST-PORT,49152-65535)),Roblox
- DOMAIN-SUFFIX,roblox.com,Roblox
- DOMAIN-SUFFIX,rbxcdn.com,Roblox
- DOMAIN-SUFFIX,rbxinfra.net,Roblox
# Viber
- GEOSITE,viber,Viber
- IP-ASN,16509,Viber
# Whatsapp // открывам порты xkeen -ap 443,3478,46420
- GEOSITE,whatsapp,Whatsapp
- IP-ASN,32934,Whatsapp
- IP-ASN,11917,Whatsapp
- IP-ASN,9002,Whatsapp
# SupperCell Открыть порт 9339 xkeen -ap 9339
- GEOSITE,supercell,other
- DOMAIN-KEYWORD,supercell,other
- AND,((IP-ASN,14618),(DST-PORT,9339)),other
- AND,((IP-ASN,16509),(DST-PORT,9339)),other
# ПРАВИЛО №5: Проверка Ip адреса
- DOMAIN-SUFFIX,2ip.io,2IP.IO
# ПРАВИЛО №6: Необходимые сервисы с выбором
- DOMAIN-SUFFIX,onlyfans.com,other
- DOMAIN-SUFFIX,fansly.com,other
- DOMAIN-SUFFIX,patreon.com,other
# ПРАВИЛО №7: Необходимые сервисы с выбором 18+
- GEOSITE,category-porn,18+
# kino.pub
- DOMAIN-SUFFIX,firebase-settings.crashlytics.com,other
- DOMAIN-SUFFIX,firebaseinstallations.googleapis.com,other
- DOMAIN-SUFFIX,kp-pro.cloud,other
- DOMAIN-SUFFIX,firebaseremoteconfigrealtime.googleapis.com,other
- DOMAIN-SUFFIX,firebaseremoteconfig.googleapis.com,other
- DOMAIN-SUFFIX,cdn32.lol,other
- DOMAIN-SUFFIX,kino.pub,other
- "MATCH,Остальной трафик"

View File

@@ -0,0 +1,316 @@
# notice: update proxy provider in the `proxy-providers` section and `use` section.
# ref 1: https://wiki.metacubex.one/example/#meta
# ref 2: https://github.com/MetaCubeX/mihomo/blob/Alpha/docs/config.yaml
# ------------------------- templates -------------------------
pr:
&pr {
type: select,
proxies: [NODE-SELECT, R-RU, R-NL, R-GB, R-US, R-FR, R-DE, R-FI, R-IT, R-OTHER, ALL-NODES, AUTO-SELECT, DIRECT]
}
p: &p
type: http
interval: 3600
health-check:
enable: true
url: https://cp.cloudflare.com/generate_204
expected-status: 204
interval: 300
timeout: 1000
tolerance: 100
# ------------------------- proxy provider and config -------------------------
use: &use
type: url-test # or select
use:
- VLESS
- VIARU
proxy-providers:
VLESS:
<<: *p
type: http
url: ВСТАВЬТЕ СЫЫЛКУ НА ВАШУ ПОДПИСКУ ВЕЗДЕХОД
path: ./vless.yaml
override:
additional-prefix: "[VLESS] "
VIARU:
<<: *p
type: file
exclude-filter: "(?i)🇷🇺|via"
path: ./vless.yaml
override:
dialer-proxy: R-RU
additional-prefix: "[VIARU] "
# ------------------------- rule provider config -------------------------
rule-providers:
# https://github.com/legiz-ru/mihomo-rule-sets
oisd_big:
type: http
behavior: domain
format: mrs
url: https://github.com/legiz-ru/mihomo-rule-sets/raw/main/oisd/big.mrs
path: ./oisd/big.mrs
interval: 86400
oisd_small:
type: http
behavior: domain
format: mrs
url: https://github.com/legiz-ru/mihomo-rule-sets/raw/main/oisd/small.mrs
path: ./oisd/small.mrs
interval: 86400
torrent-websites:
type: http
behavior: domain
format: mrs
url: https://github.com/legiz-ru/mihomo-rule-sets/raw/main/other/torrent-websites.mrs
path: ./rule-sets/torrent-websites.mrs
interval: 86400
torrent-trackers:
type: http
behavior: domain
format: mrs
url: https://github.com/legiz-ru/mihomo-rule-sets/raw/main/other/torrent-trackers.mrs
path: ./rule-sets/torrent-trackers.mrs
interval: 86400
ru-bundle:
type: http
behavior: domain
format: mrs
url: https://github.com/legiz-ru/mihomo-rule-sets/raw/main/ru-bundle/rule.mrs
path: ./ru-bundle/rule.mrs
interval: 86400
# https://github.com/REIJI007/AdBlock_Rule_For_Clash
adblock:
type: http
behavior: domain
format: yaml
url: https://raw.githubusercontent.com/REIJI007/AdBlock_Rule_For_Clash/main/adblock_reject.yaml
path: ./adblock_reject.yaml
interval: 86400
# ------------------------- system config -------------------------
allow-lan: true
bind-address: '*'
lan-allowed-ips:
- 0.0.0.0/0
- ::/0
authentication:
- "Mihomo:Mihomo"
skip-auth-prefixes:
- 192.168.1.0/24
mode: rule
log-level: info
ipv6: true
keep-alive-interval: 15
keep-alive-idle: 15
disable-keep-alive: true
find-process-mode: strict
external-controller: 0.0.0.0:9090
external-controller-cors:
allow-origins:
- '*'
allow-private-network: true
# external-controller-tls: 0.0.0.0:9443
external-doh-server: /dns-query
secret: 'Mihomo'
external-ui: ./ui
external-ui-name: ui-xd
external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip
profile:
store-selected: true
store-fake-ip: true
unified-delay: true
tcp-concurrent: true
# routing-mark: 6666
# tls:
# certificate: ./cert.pem
# private-key: ./key.key
global-client-fingerprint: random
port: 7890
socks-port: 7891
mixed-port: 7892
redir-port: 7893
tproxy-port: 7894
# ------------------------- dns and network config -------------------------
dns:
enable: true
cache-algorithm: arc
prefer-h3: true
use-hosts: true
use-system-hosts: true
respect-rules: false
listen: 0.0.0.0:1053
ipv6: true
default-nameserver:
- 94.140.14.14
- 94.140.15.15
- 1.1.1.2
- 1.0.0.2
- '[2a10:50c0::ad1:ff]'
- '[2a10:50c0::ad2:ff]'
- '[2606:4700:4700::1112]'
- '[2606:4700:4700::1002]'
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '+.local'
nameserver-policy:
'geosite:private':
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
'geosite:!private':
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
nameserver:
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
fallback:
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
proxy-server-nameserver:
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
direct-nameserver:
- https://dns.adguard-dns.com/dns-query
- https://security.cloudflare-dns.com/dns-query
- quic://dns.adguard.com
- tls://dns.adguard-dns.com
- tls://security.cloudflare-dns.com
direct-nameserver-follow-policy: true
fallback-filter:
geoip: true
geoip-code: RU
geosite:
- private
ipcidr:
- 240.0.0.0/4
domain:
- '+.google.com'
- '+.youtube.com'
sniffer:
enable: true
force-dns-mapping: true
parse-pure-ip: true
override-destination: true
sniff:
HTTP:
ports: [80, 8080-8880]
override-destination: true
TLS:
ports: [443, 8443]
QUIC:
ports: [443, 8443]
# force-domain:
# - +.v2ex.com
# skip-domain:
# - Mijia Cloud
# skip-src-address:
# - 192.168.0.3/32
# skip-dst-address:
# - 192.168.0.3/32
tun:
enable: true
stack: mixed
auto-route: true
auto-redirect: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
device: Mihomo
mtu: 1420
strict-route: true
# gso: true
# gso-max-size: 65536
# udp-timeout: 300
# iproute2-table-index: 2022
# iproute2-rule-index: 9000
# ------------------------- geo data config -------------------------
# Source https://github.com/runetfreedom/russia-v2ray-rules-dat
geodata-mode: true
geodata-loader: memconservative
geo-auto-update: true
geo-update-interval: 24
geox-url:
geoip: https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/release/geoip.dat
geosite: https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/release/geosite.dat
global-ua: clash.meta
etag-support: true
# ------------------------- proxy groups and rules -------------------------
proxy-groups:
- { name: AUTO-SELECT, <<: *use, type: url-test , tolerance: 2}
- { name: NODE-SELECT, type: select, proxies: [ALL-NODES, AUTO-SELECT, R-RU, R-NL, R-GB, R-US, R-FR, R-DE, R-FI, R-IT, R-OTHER, DIRECT] }
- { name: ALL-NODES, <<: *use }
- { name: FALLBACK, <<: *use, type: fallback }
- { name: ANTI-AD, type: select, proxies: [REJECT, DIRECT, NODE-SELECT] }
- { name: Torrents, <<: *use, filter: "(?i)P2P|Torrents", exclude-filter: "(?i)noP2P" }
- { name: Cloudflare, <<: *pr }
- { name: Google, <<: *pr }
- { name: Gemini, <<: *use, filter: "(?i)Gemini" }
- { name: YouTube, <<: *use, filter: "(?i)YT" }
- { name: Telegram, <<: *pr }
# regions
# - { name: R-SELECT, <<: *pr, proxies: [DIRECT, NODE-SELECT, R-RU, R-NL, R-GB, R-US, R-FR, R-DE, R-FI, R-IT, R-OTHER, ALL-NODES, AUTO-SELECT] }
- { name: RU-BLOCKED, <<: *pr, proxies: [R-NL, R-GB, R-US, R-FR, R-DE, R-FI, R-IT, R-OTHER] }
- { name: R-RU, <<: *use, filter: "(?i)🇷🇺" }
- { name: R-NL, <<: *use, filter: "(?i)🇳🇱" }
- { name: R-GB, <<: *use, filter: "(?i)🇬🇧" }
- { name: R-US, <<: *use, filter: "(?i)🇺🇸", exclude-filter: "(?i)Gemini" }
- { name: R-FR, <<: *use, filter: "(?i)🇫🇷" }
- { name: R-DE, <<: *use, filter: "(?i)🇩🇪" }
- { name: R-FI, <<: *use, filter: "(?i)🇫🇮" }
- { name: R-IT, <<: *use, filter: "(?i)🇮🇹" }
- { name: R-OTHER, <<: *use, filter: "(?i)🇹🇷|🇮🇳|🇭🇰 🇪🇪" }
rules:
- GEOSITE,PRIVATE,DIRECT
- GEOIP,PRIVATE,DIRECT,no-resolve
- OR,((GEOSITE,category-ads-all),(GEOSITE,google-ads),(GEOSITE,yandex),(GEOIP,yandex),(GEOSITE,vk),(GEOSITE,mailru),(GEOSITE,win-spy),(GEOSITE,win-update),(GEOSITE,win-extra),(GEOIP,UA),(DOMAIN-SUFFIX,ua),(RULE-SET,oisd_big),(RULE-SET,oisd_small),(RULE-SET,adblock)),ANTI-AD
- OR,((RULE-SET,torrent-websites),(RULE-SET,torrent-trackers)),Torrents
- OR,((GEOSITE,cloudflare),(GEOIP,cloudflare)),Cloudflare
- GEOSITE,youtube,YouTube
- GEOSITE,google-gemini,Gemini
- OR,((GEOSITE,google),(GEOSITE,google),(GEOSITE,google-deepmind),(GEOSITE,google-play),(GEOSITE,google-registry),(GEOSITE,google-registry-tld),(GEOSITE,google-scholar),(GEOSITE,google-trust-services),(GEOSITE,googlefcm)),Google
- OR,((GEOSITE,telegram),(GEOIP,telegram)),Telegram
- OR,((GEOSITE,ru-blocked),(GEOIP,ru-blocked),(GEOIP,ru-blocked-community),(GEOSITE,refilter),(GEOIP,re-filter),(GEOSITE,antifilter-download-community),(RULE-SET,ru-bundle)),RU-BLOCKED
- OR,((GEOSITE,ru-available-only-inside),(GEOIP,RU),(DOMAIN-SUFFIX,ru),(DOMAIN-SUFFIX,su),(DOMAIN-SUFFIX,xn--p1ai)),R-RU
- MATCH,NODE-SELECT

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
# —————————————————————————————————— local proxy —————————————————————————————————
# ————————————————————————————————————————————————————— LOCAL PROXY —————————————————————————————————————————————————————
port: 7890
socks-port: 7891
redir-port: 7892
@@ -10,12 +10,12 @@ bind-address: "*"
# authentication:
# - "user1:pass1"
# —————————————————————————————— external controller —————————————————————————————
# ————————————————————————————————————————————————— EXTERNAL CONTROLLER —————————————————————————————————————————————————
external-controller: 127.0.0.1:9090
secret: '314159271828'
external-ui: "/usr/share/openclash/ui"
# ———————————————————————————————————— general ———————————————————————————————————
# ——————————————————————————————————————————————————————— GENERAL ———————————————————————————————————————————————————————
mode: rule
ipv6: false
unified-delay: true
@@ -23,26 +23,30 @@ log-level: info
disable-keep-alive: true
# interface-name: en0 # Outbound interface name
# enable model auto update, the default is false
lgbm-auto-update: true
# model auto update interval, the default is 72 (hours)
lgbm-update-interval: 72
# model update url
lgbm-url: "https://github.com/vernesong/mihomo/releases/d💫 ownload/LightGBM-Model/Model.bin"
# ————————————————————————————————————————————————————— SMART GROUPS ————————————————————————————————————————————————————
lgbm-auto-update: true # enable model auto update, the default is false
lgbm-update-interval: 72 # model auto update interval, the default is 72 (hours)
lgbm-url: "https://github.com/vernesong/mihomo/releases/download/LightGBM-Model/Model.bin" # model update url
# ————————————————————————————————————— hosts ————————————————————————————————————
# ———————————————————————————————————————————————————————— HOSTS ————————————————————————————————————————————————————————
hosts:
'ponitifex.shamanlanding.org': 192.168.10.1
'gatekeeper.shamanlanding.org': 192.168.10.4
'gitea.shamanlanding.org': 192.168.10.4
'ruler.shamanlanding.org': 192.168.10.4
'webway.shamanlanding.org': 192.168.10.4
'+.scarus.shamanlanding.org': 192.168.10.4
'+.retreat.shamanlanding.org': 192.168.10.4
# ———————————————————————————————————— profile ———————————————————————————————————
# ——————————————————————————————————————————————————————— PROFILE ———————————————————————————————————————————————————————
profile:
store-selected: true
store-fake-ip: true
#smart-collector-size: data collection file size, the default is 100 (MB)
smart-collector-size: 100
smart-collector-size: 100 # data collection file size, the default is 100 (MB)
# ———————————————————————————————————— sniffer ———————————————————————————————————
# ——————————————————————————————————————————————————————— SNIFFER ———————————————————————————————————————————————————————
sniffer:
enable: true
parse-pure-ip: true
@@ -73,7 +77,7 @@ sniffer:
- "+.sunlogin.net"
- "+.push.apple.com"
# —————————————————————————————————————— dns —————————————————————————————————————
# ————————————————————————————————————————————————————————— DNS —————————————————————————————————————————————————————————
dns:
enable: true
ipv6: false
@@ -130,8 +134,9 @@ dns:
# 'www.baidu.com': '114.114.114.114'
# '+.internal.crop.com': '10.0.0.1'
# —————————————————————————————————————— tun —————————————————————————————————————
# ————————————————————————————————————— macro ————————————————————————————————————
# ————————————————————————————————————————————————————————— TUN —————————————————————————————————————————————————————————
# ———————————————————————————————————————————————————————— MACRO ————————————————————————————————————————————————————————
health-check-for-providers: &health_check_for_providers
enable: true
interval: 600
@@ -176,10 +181,10 @@ dns:
type: url-test
tolerance: 50
use:
- xfizz
- arza-1
- Un1c4d3
- vezdehod
- 🎭 xfizz
- 🎭 arza
- 🎭 unicade
- 🎭 vezdehod
np-vpn-list_smart_gr: &np_vpn_list_smart_gr
type: smart
@@ -190,31 +195,31 @@ dns:
sample-rate: 1
hidden: true
use:
- xfizz
- arza-1
- Un1c4d3
- vezdehod
- 🎭 xfizz
- 🎭 arza
- 🎭 unicade
- 🎭 vezdehod
np-vpn-list_balancer: &np_vpn_list_balancer
type: load-balance
strategy: sticky-sessions
use:
- xfizz
- arza-1
- Un1c4d3
- vezdehod
- 🎭 xfizz
- 🎭 arza
- 🎭 unicade
- 🎭 vezdehod
np-vpn-list_selector: &np_vpn_list_selector
type: select
use:
- xfizz
- arza-1
- Un1c4d3
- vezdehod
- 🎭 xfizz
- 🎭 arza
- 🎭 unicade
- 🎭 vezdehod
# ————————————————————————————————— proxies list —————————————————————————————————
# ————————————————————————————————————————————————————— PROXIES LIST ————————————————————————————————————————————————————
proxies:
# ———————————————————— direct wan routes ————————————————————
# ———————————————————— direct wan routes ———————————————————— #
- name: "WAN A [Мегафон]"
type: direct
udp: true
@@ -225,16 +230,101 @@ proxies:
udp: true
ip-version: ipv4
interface-name: eth1
# - name: "WAN C [Mobile]"
# type: direct
# udp: true
# ip-version: ipv4
# interface-name: eth2
# ———————————————————————————————— proxy providers ———————————————————————————————
# ————————————————————— private proxies ———————————————————— #
- name: 🇨🇭⇨🇱🇺 Proton WG
type: wireguard
server: 79.135.104.48
port: 51820
ip: 10.2.0.2
private-key: 8LW5XMdOWwUyVlihlii9dEvVYvatZ/uuC8Jft4fcn0k=
public-key: buYqE3X8Wf8X/v5NtHVXYgLk45+2og8MVEbgQAkEyBw=
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
mtu: 1420
remote-dns-resolve: true
dns: [10.2.0.1]
amnezia-wg-option:
jc: 55
jmin: 373
jmax: 769
s1: 0
s2: 0
h1: 1
h2: 2
h3: 3
h4: 4
- name: 🇮🇸⇨🇬🇧 Proton WG
type: wireguard
server: 185.159.158.215
port: 51820
ip: 10.2.0.2
private-key: yPnrinUviMCyTV4p1Yrd9H9u3zV6jXXFDWJa3zueb2Q=
public-key: zctOjv4DH2gzXtLQy86Tp0vnT+PNpMsxecd2vUX/i0U=
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
mtu: 1420
remote-dns-resolve: true
dns: [10.2.0.1]
amnezia-wg-option:
jc: 55
jmin: 373
jmax: 769
s1: 0
s2: 0
h1: 1
h2: 2
h3: 3
h4: 4
- name: 🇸🇾 Direct Proton WG
type: wireguard
server: 74.118.126.212
port: 51820
ip: 10.2.0.2
private-key: IKZ6eVISKzSoccxyhEQKqJpqQ9MXNXRECogtQ/Mb5Ho=
public-key: lA34jzJPyZIjR4FxgEy2KarVEEkFcGT3AmOO2k+X3Co=
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
mtu: 1420
remote-dns-resolve: true
dns: [10.2.0.1]
amnezia-wg-option:
jc: 127
jmin: 798
jmax: 1246
s1: 0
s2: 0
h1: 1
h2: 2
h3: 3
h4: 4
- name: 🇫🇷 Direct Proton WG
type: wireguard
server: 79.127.134.82
port: 51820
ip: 10.2.0.2
private-key: SLHvkTQwNnovnfKhmO1DwMFycvUPT7MK80VSQXpNeGc=
public-key: fEUJZ0KAOb0U8O4+wNYYlVBgtN6AOS2bbXyM07Dnvxk=
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
mtu: 1420
remote-dns-resolve: true
dns: [10.2.0.1]
amnezia-wg-option:
jc: 127
jmin: 798
jmax: 1246
s1: 0
s2: 0
h1: 1
h2: 2
h3: 3
h4: 4
# ——————————————————————————————————————————————————— PROXY PROVIDERS ———————————————————————————————————————————————————
proxy-providers:
# ——————————————————— private vpn services ——————————————————
# ——————————————————— private vpn services —————————————————— #
#https://dexterity.shamanlanding.org/M4eh2gd/first
💫 own:
type: http
@@ -249,9 +339,9 @@ proxy-providers:
health-check:
<<: *health_check_for_providers
# —————————————————— non-personal services ——————————————————
# —————————————————— non-personal services —————————————————— #
#https://sub-001.dns-on-fire.net/api/sub/Jfo_eg3X0NchfJ3_
vezdehod:
🎭 vezdehod:
type: http
url: "https://sub-001.dns-on-fire.net/api/sub/Jfo_eg3X0NchfJ3_"
interval: 3600
@@ -264,10 +354,9 @@ proxy-providers:
health-check:
<<: *health_check_for_providers
#https://xfizz.cc/sublink/XzU0rRmBeOZtIPprW46f2ieNFcF8PJw9?name=1Y:2213
xfizz:
🎭 xfizz:
type: http
url: "https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/proxy-provider/fizz-vpn.txt"
url: "https://xfizz.cc/sublink/XzU0rRmBeOZtIPprW46f2ieNFcF8PJw9?name=1Y:2213"
interval: 3600
proxy: ▣ Personal
path: "./proxy_provider/fizz-vpn.txt"
@@ -278,10 +367,9 @@ proxy-providers:
health-check:
<<: *health_check_for_providers
#https://arza.top/sub/dGZjNHVlLDE3MzIzMDQ2MTYowA-efEYOh
arza-1:
🎭 arza:
type: http
url: "https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/proxy-provider/arza.txt"
url: "https://arza.top/sub/dGZjNHVlLDE3MzIzMDQ2MTYowA-efEYOh"
interval: 3600
proxy: ▣ Personal
path: "./proxy_provider/arza.txt"
@@ -292,13 +380,12 @@ proxy-providers:
health-check:
<<: *health_check_for_providers
#https://subs.un1c4d3.ru:52478/sub/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQTF9WTFNTX0FMTDIxMCIsImFjY2VzcyI6InN1YnNjcmlwdGlvbiIsImlhdCI6MTczNzgwMDQwOH0.mPr4BSMMpo1mrlZPvB34IRGcn2mHOZetHXaZyebirT4
Un1c4d3:
🎭 unicade:
type: http
url: "https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/proxy-provider/Un1c4d3.txt"
url: "https://subs.un1c4d3.ru:52478/sub/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJQTF9WTFNTX0FMTDIxMCIsImFjY2VzcyI6InN1YnNjcmlwdGlvbiIsImlhdCI6MTczNzgwMDQwOH0.mPr4BSMMpo1mrlZPvB34IRGcn2mHOZetHXaZyebirT4"
interval: 3600
proxy: ▣ Personal
path: "./proxy_provider/Un1c4d3.txt"
proxy: DIRECT
path: "./proxy_provider/unicade.txt"
exclude-filter: "(?i)Наш TG|Истекает|@FizzVPN|UNAVAILABLE|EXPIRE|TELEGRAM|USERNAME:"
override:
additional-prefix: ""
@@ -306,18 +393,18 @@ proxy-providers:
health-check:
<<: *health_check_for_providers
# ————————————————————————————————— proxy groups —————————————————————————————————
# ————————————————————————————————————————————————————— PROXY GROUPS ————————————————————————————————————————————————————
proxy-groups:
# ————————————————————————— fallback ————————————————————————
# ————————————————————————— fallback ———————————————————————— #
- name: "Automatic Fallback Route"
type: fallback
disable-udp: false
proxies:
- DIRECT
hidden: true
url: 'https://cp.cloudflare.com/generate_204'
interval: 300
# ————————————————————— direct wan routes ————————————————————
# ———————————————————— direct wan routes ———————————————————— #
- name: AB
type: load-balance
disable-udp: false
@@ -325,102 +412,81 @@ proxy-groups:
- WAN A [Мегафон]
- WAN B [РосТелеКом]
hidden: true
url: 'https://cp.cloudflare.com/generate_204'
interval: 300
# - name: ABC
# type: load-balance
# disable-udp: false
# proxies:
# - WAN A [Мегафон]
# - WAN B [РосТелеКом]
# - WAN C [Mobile]
# hidden: true
# ————————————————————— direct selectors ———————————————————— #
# ————————————————————— direct selectors —————————————————————
- name: LAN Clients
- name: Local Devices
type: select
disable-udp: false
proxies:
- DIRECT
- AB
- WAN A [Мегафон]
- WAN B [РосТелеКом]
- name: Infrastructure
type: select
disable-udp: false
proxies:
- DIRECT
- AB
# - ABC
- WAN A [Мегафон]
- WAN B [РосТелеКом]
# - WAN C [Mobile]
- name: IOT Clients
type: select
disable-udp: false
proxies:
- LAN Clients
- DIRECT
- AB
# - ABC
- WAN A [Мегафон]
- WAN B [РосТелеКом]
# - WAN C [Mobile]
- name: Unprivileged Webway
- name: Webway
type: select
disable-udp: false
proxies:
- LAN Clients
- DIRECT
- AB
# - ABC
- WAN A [Мегафон]
- WAN B [РосТелеКом]
# - WAN C [Mobile]
- name: Privileged Webway
type: select
disable-udp: false
proxies:
- LAN Clients
- AB
# - ABC
- WAN A [Мегафон]
- WAN B [РосТелеКом]
# - WAN C [Mobile]
# ——————————————— smart groups for personal vpn ———————————————
# —————————————— smart groups for personal vpn —————————————— #
- name: ▣ Personal
disable-udp: false
<<: [*p_vpn_list_smart_gr, *health_check_for_load_balancers]
# ————————————— smart groups for non-personal vpn —————————————
# ———————————— smart groups for non-personal vpn ———————————— #
- name: Europe 🇪🇺
disable-udp: false
filter: "(?i)NL|Finland|Estonia|France|Germany|Sweden|Ireland|Spain|UK|Switzerland|Italy|Norway|Belgium|Netherl|Poland|GREAT BRIATAIN|GREAT BRITAIN|Austria|Denmark|Lithuania|Latvia|MOLDOVA"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: Russia 🇷🇺
disable-udp: false
filter: "(?i)Russia"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: Kazakhstan 🇰🇿
disable-udp: false
filter: "(?i)Kazakhstan|KZ"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: Turkey 🇹🇷
disable-udp: false
filter: "(?i)TURKEY"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: ▣ Non-personal
disable-udp: false
filter: ""
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: Asia & ME 🇳🇵
disable-udp: false
filter: "(?i)Hong Kong|China|Malaysia|Philippines|Japan|Singapore|Egypt|Taiwan|UAE|India"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
- name: USA 🇺🇸
disable-udp: false
filter: "(?i)USA|Canada"
<<: [*np_vpn_list_smart_gr, *health_check_for_load_balancers]
# ————————————— global selectors for personal vpn ————————————
# ———————————— global selectors for personal vpn ———————————— #
- name: Personal 1
disable-udp: false
<<: [*p_vpn_list_selector, *health_check_for_selectors]
@@ -428,8 +494,7 @@ proxy-groups:
- name: Personal 2
disable-udp: false
<<: [*p_vpn_list_selector, *health_check_for_selectors]
# ——————————— global selectors for non-personal vpn ——————————
# —————————— global selectors for non-personal vpn —————————— #
- name: Asia & ME 🇳🇵 🄪
disable-udp: false
filter: "(?i)Hong Kong|China|Malaysia|Philippines|Japan|Singapore|Egypt|Taiwan|UAE|India"
@@ -480,9 +545,8 @@ proxy-groups:
filter: ""
<<: [*np_vpn_list_selector, *health_check_for_selectors]
# ——————— selectors for local rules ——————
# PUBLIC LISTS - https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-public/
# ———————————————— selectors for local rules ———————————————— #
# ——————————————————————— PUBLIC LISTS —————————————————————— #
- name: Adblock 🇷🇺
type: select
proxies:
@@ -493,7 +557,6 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: Adblock 🗺️
type: select
proxies:
@@ -504,10 +567,11 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: Antifilter
type: select
proxies:
- DIRECT
- REJECT
- ▣ Personal
- Personal 1
- Personal 2
@@ -519,10 +583,24 @@ proxy-groups:
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
# PRIVATE LISTS - https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/
- name: Adaptaion
- name: Antifilter Extended
type: select
proxies:
- DIRECT
- REJECT
- ▣ Personal
- Personal 1
- Personal 2
- ▣ Non-personal
- Non-personal 1
- Non-personal 2
- Non-personal 3
- Non-personal 4
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
# —————————————————————— PRIVATE LISTS —————————————————————— #
- name: Adaptation
type: select
proxies:
- ▣ Personal
@@ -536,7 +614,18 @@ proxy-groups:
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
- name: Persistent Proxy
type: select
proxies:
- Personal 1
- Personal 2
- Non-personal 1
- Non-personal 2
- Non-personal 3
- Non-personal 4
- Europe 🇪🇺 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: Testzone 🅰
type: select
proxies:
@@ -549,7 +638,6 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: Testzone 🅱
type: select
proxies:
@@ -562,8 +650,7 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
# CONSOLIDATED SERVICES - https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/
# —————————————————— CONSOLIDATED SERVICES —————————————————— #
- name: AI Stuff
type: select
proxies:
@@ -584,12 +671,19 @@ proxy-groups:
- Asia & ME 🇳🇵 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: US 🇺🇸 Services
- name: RU Intracountry VPN
type: select
disable-udp: false
proxies:
- Personal 1
- DIRECT
- Russia 🇷🇺
- Russia 🇷🇺 🄪
<<: *health_check_for_selectors
- name: US Services
type: select
disable-udp: false
proxies:
- DIRECT
- Personal 2
- Non-personal 1
- Non-personal 2
@@ -598,11 +692,11 @@ proxy-groups:
- USA 🇺🇸
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: RU 🇷🇺 Services
- name: RU Services
type: select
disable-udp: false
proxies:
- DIRECT
- Personal 1
- Personal 2
- Non-personal 1
@@ -612,11 +706,11 @@ proxy-groups:
- Russia 🇷🇺
- Russia 🇷🇺 🄪
<<: *health_check_for_selectors
- name: CN 🇨🇳 Services
- name: CN Services
type: select
disable-udp: false
proxies:
- DIRECT
- Personal 1
- Personal 2
- Non-personal 1
@@ -626,11 +720,11 @@ proxy-groups:
- Asia & ME 🇳🇵
- Asia & ME 🇳🇵 🄪
<<: *health_check_for_selectors
- name: EU 🇪🇺 Services
- name: EU Services
type: select
disable-udp: false
proxies:
- DIRECT
- Personal 1
- Personal 2
- Non-personal 1
@@ -640,8 +734,7 @@ proxy-groups:
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
# SERVICES - https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/services/
# ————————————————————————— SERVICES ———————————————————————— #
- name: Discord
type: select
disable-udp: false
@@ -661,7 +754,6 @@ proxy-groups:
- Europe 🇪🇺 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: Electronic Arts
type: select
proxies:
@@ -678,7 +770,6 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: Notion
type: select
proxies:
@@ -689,7 +780,6 @@ proxy-groups:
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
- name: Proton
type: select
proxies:
@@ -700,7 +790,6 @@ proxy-groups:
- Europe 🇪🇺
- Europe 🇪🇺 🄪
<<: *health_check_for_selectors
- name: Steam
type: select
proxies:
@@ -717,7 +806,6 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: Telegram
type: select
proxies:
@@ -735,7 +823,6 @@ proxy-groups:
- Europe 🇪🇺 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: WeChat
type: select
proxies:
@@ -755,7 +842,6 @@ proxy-groups:
- Russia 🇷🇺 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: WhatsApp
type: select
proxies:
@@ -773,7 +859,6 @@ proxy-groups:
- Russia 🇷🇺 🄪
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
- name: XBox
type: select
proxies:
@@ -790,7 +875,6 @@ proxy-groups:
- Non-personal 3
- Non-personal 4
<<: *health_check_for_selectors
- name: YouTube
type: select
proxies:
@@ -809,10 +893,10 @@ proxy-groups:
- USA 🇺🇸 🄪
<<: *health_check_for_selectors
# ———————————————————————————————— rule providers ————————————————————————————————
# ———————————————————————————————————————————————————— RULE PROVIDERS ———————————————————————————————————————————————————
rule-providers:
# ——————————————————— consolidated-lists-private ————————————————————
# —————————————————————————— consolidated-lists-private ————————————————————————— #
# http://purpose.shamanlanding.org:9999/
General Direct Domain List:
url: http://purpose.shamanlanding.org:9999/direct-domain.yaml
@@ -841,16 +925,33 @@ rule-providers:
path: "./rule_provider/services/consolidated-lists-private/testzone-b.yaml"
<<: *default_rule_provider_config
# ——————————————————— consolidated-lists-public ————————————————————
Local Devices:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/local-devices.yaml
path: "./rule_provider/services/consolidated-lists-private/local-devices.yaml"
<<: *default_rule_provider_config
Infrastructure:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/local-infrastructure.yaml
path: "./rule_provider/services/consolidated-lists-private/local-infrastructure.yaml"
<<: *default_rule_provider_config
IOT Clients:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/local-iot.yaml
path: "./rule_provider/services/consolidated-lists-private/local-iot.yaml"
<<: *default_rule_provider_config
Webway:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/local-webway.yaml
path: "./rule_provider/services/consolidated-lists-private/local-webway.yaml"
<<: *default_rule_provider_config
# —————————————————————————— consolidated-lists-public —————————————————————————— #
# /clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/
🚫 Adblock List RU:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/adblock-ru.yaml
path: "./rule_provider/consolidated-lists-public/adblock.yaml"
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-public/adblock-ru.yaml
path: "./rule_provider/consolidated-lists-public/adblock-ru.yaml"
<<: *default_rule_provider_config
🚫 Adblock List GL:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-private/adblock-gl.yaml
path: "./rule_provider/consolidated-lists-public/adblock.yaml"
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-lists-public/adblock-gl.yaml
path: "./rule_provider/consolidated-lists-public/adblock-gl.yaml"
<<: *default_rule_provider_config
# http://purpose.shamanlanding.org:9999/
@@ -867,18 +968,38 @@ rule-providers:
path: "./rule_provider/consolidated-lists-public/antifilter-ip-proxy.yaml"
<<: *default_rule_provider_config
# ——————————————————— consolidated-services ————————————————————
# ———————————————————————————— consolidated-services ———————————————————————————— #
# /clash-rules/raw/branch/main/rule-provider/consolidated-services/
AI Stuff:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/ai-stuff-western.yaml
path: "./rule_provider/consolidated-services/ai-stuff-western.yaml"
<<: *default_rule_provider_config
USA Services:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/usa-services.yaml
path: "./rule_provider/consolidated-services/usa-services.yaml"
RU Intracountry VPN:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/ru-intra.yaml
path: "./rule_provider/consolidated-services/ru-intra.yaml"
<<: *default_rule_provider_config
US Services Manual:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/us-services.yaml
path: "./rule_provider/consolidated-services/us-services.yaml"
<<: *default_rule_provider_config
RU Services Manual:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/ru-services.yaml
path: "./rule_provider/consolidated-services/ru-services.yaml"
<<: *default_rule_provider_config
EU Services Manual:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/eu-services.yaml
path: "./rule_provider/consolidated-services/eu-services.yaml"
<<: *default_rule_provider_config
CN Services Manual:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/cn-services.yaml
path: "./rule_provider/consolidated-services/cn-services.yaml"
<<: *default_rule_provider_config
Persistent Proxy:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/consolidated-services/persistent.yaml
path: "./rule_provider/consolidated-services/persistent.yaml"
<<: *default_rule_provider_config
# ——————————————————— services ————————————————————
# ——————————————————————————————————— services —————————————————————————————————— #
# /clash-rules/raw/branch/main/rule-provider/services/
Discord:
url: https://gitea.shamanlanding.org/DaTekShaman/clash-rules/raw/branch/main/rule-provider/services/discord.yaml
@@ -921,14 +1042,14 @@ rule-providers:
path: "./rule_provider/services/youtube.yaml"
<<: *default_rule_provider_config
# ————————————————————————————————————— rules ————————————————————————————————————
rules:
# —————————————————————— direct first ——————————————————————
# ———————————————————————————————————————————————————————— RULES ————————————————————————————————————————————————————————
sub-rules:
General Behavior:
# —————————————————————— direct first —————————————————————— #
- RULE-SET,General Direct Domain List,DIRECT
- RULE-SET,General Direct IP List,DIRECT
# ——————————————————————— by service ———————————————————————
# ——————————————————————— by service ——————————————————————— #
- RULE-SET,Discord,Discord
- RULE-SET,Electronic Arts,Electronic Arts
- RULE-SET,Notion,Notion
@@ -940,30 +1061,44 @@ rules:
- RULE-SET,XBox,XBox
- RULE-SET,Youtube,YouTube
# ——————————————————— by private lists ————————————————————
# ————————————————————— by private lists ———————————————————— #
- RULE-SET,Testzone A,Testzone 🅰
- RULE-SET,Testzone B,Testzone 🅱
- RULE-SET,General Proxy Domain List,Adaptaion
- RULE-SET,General Proxy IP List,Adaptaion
- RULE-SET,Persistent Proxy,Persistent Proxy
- RULE-SET,General Proxy Domain List,Adaptation
- RULE-SET,General Proxy IP List,Adaptation
# ———————————————————————— adblocker ———————————————————————
# ———————————————————————— adblocker ———————————————————————— #
- RULE-SET,🚫 Adblock List RU,Adblock 🇷🇺
- RULE-SET,🚫 Adblock List GL,Adblock 🗺️
# ——————————————————— by service group ————————————————————
# ————————————————————— by service group ———————————————————— #
- RULE-SET,AI Stuff,AI Stuff
- RULE-SET,RU Intracountry VPN,RU Intracountry VPN
# —————————————————— check russian geoip ———————————————————
- GEOIP,RU,RU 🇷🇺 Services
# ———————————— by service group (manual country) ———————————— #
- RULE-SET,US Services Manual,US Services
- RULE-SET,EU Services Manual,EU Services
- RULE-SET,CN Services Manual,CN Services
# ————————————————————— adaptaion lists ————————————————————
# —————————————— force russian geoip to russia —————————————— #
- GEOIP,RU,RU Services
# ————————————————————— community lists ————————————————————— #
- RULE-SET,Antifilter Community IP List,Antifilter
- RULE-SET,Antifilter Community Domain List,Antifilter
- RULE-SET,Antifilter IP List,Antifilter
- RULE-SET,Antifilter IP List,Antifilter Extended
# ——————————————————— check other geoip ————————————————————
- GEOIP,US,US 🇺🇸 Services
- GEOIP,EU,EU 🇪🇺 Services
- GEOIP,CN,CN 🇨🇳 Services
# ———————————————————— force other geoip ———————————————————— #
- GEOIP,US,US Services
- GEOIP,EU,EU Services
- GEOIP,CN,CN Services
rules:
# ——————————————————————— final match ——————————————————————— #
- SUB-RULE,(RULE-SET,Local Devices),General Behavior
- SUB-RULE,(RULE-SET,Infrastructure),General Behavior
- SUB-RULE,(RULE-SET,IOT Clients),General Behavior
- SUB-RULE,(RULE-SET,Webway),General Behavior
- MATCH,DIRECT
- MATCH,LAN Clients

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,233 @@
/**
* SUB STORE YAML ASSEMBLER (v4: Fix Duplicate Headers)
* * Arguments:
* - clear-comments=true
* - clear-manifest=true
* - clear-replacements=true
* * Requires: Header "# @file: filename.yaml" in input files.
*/
// --- OPTIONS PARSING ---
function normalizeOptions() {
const args = (typeof $arguments !== "undefined" && $arguments) ? $arguments : {};
const asBool = (v, def = false) => {
if (v === undefined || v === null || v === "") return def;
if (typeof v === "boolean") return v;
const s = String(v).toLowerCase().trim();
if (["1", "true", "yes", "y", "on"].includes(s)) return true;
if (["0", "false", "no", "n", "off"].includes(s)) return false;
return def;
};
return {
clearComments: asBool(args['clear-comments'], false),
clearManifest: asBool(args['clear-manifest'], false),
clearReplacements: asBool(args['clear-replacements'], false),
};
}
// --- UTILS ---
function normalizeFiles(rawFiles) {
const map = new Map();
if (!rawFiles || !Array.isArray(rawFiles)) return map;
rawFiles.forEach((content) => {
if (typeof content !== 'string') return;
const match = content.match(/^#\s*@file:\s*(.+?)(\s|$)/m);
if (match) map.set(match[1].trim(), content);
});
return map;
}
function cleanText(text) {
return String(text || "").replace(/\r\n/g, "\n");
}
function extractName(block) {
const match = block.match(/^ {4}name:\s*(?:["']?)(.*?)(?:["']?)\s*(?:#.*)?$/m);
return match ? match[1].trim() : null;
}
function extractKey(block, indentLevel) {
const spaceStr = " ".repeat(indentLevel);
const re = new RegExp(`^${spaceStr}([^#\\s][^:]+):`);
const match = block.match(re);
return match ? match[1].trim().replace(/['"]/g, "") : null;
}
function stripFullLineComments(text) {
return text.split('\n')
.filter(line => !line.trim().startsWith('#'))
.join('\n');
}
function splitBlocks(text, type) {
const lines = cleanText(text).split("\n");
const blocks = [];
let currentBuf = [];
const isListStart = (l) => l.match(/^ {2}-\s/);
const isMapStart2 = (l) => l.match(/^ {2}[^ \-#][^:]*:/);
const isMapStart0 = (l) => l.match(/^[^ \-#][^:]*:/);
const isStart = (l) => {
if (type === 'list') return isListStart(l);
if (type === 'map2') return isMapStart2(l);
if (type === 'map0') return isMapStart0(l);
return false;
};
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
if (line.match(/^#\s*@file:/)) continue;
if (isStart(line)) {
if (currentBuf.length > 0) {
blocks.push(currentBuf.join("\n"));
currentBuf = [];
}
}
if (currentBuf.length === 0 && !line.trim()) continue;
currentBuf.push(line);
}
if (currentBuf.length > 0) blocks.push(currentBuf.join("\n"));
return blocks;
}
// --- MERGE LOGIC ---
function processSection(sectionName, manifestEntries, fileMap, opts) {
let sectionOutput = [];
const seenKeys = new Set();
// Добавляем заголовок секции
if (!['root', 'x-substore', 'rules'].includes(sectionName)) {
sectionOutput.push(`${sectionName}:`);
}
if (sectionName === 'x-substore') {
sectionOutput.push(`x-substore:`);
}
for (const entry of manifestEntries) {
let content = fileMap.get(entry.file);
if (!content) throw new Error(`CRITICAL: File "${entry.file}" not found.`);
if (!opts.clearComments) {
sectionOutput.push(`\n# --- source: ${entry.file} | mode: ${entry.mode || "concat"} ---`);
}
if (opts.clearComments) {
content = stripFullLineComments(content);
}
// [FIX] Удаляем дублирующий заголовок x-substore из контента файла,
// но оставляем содержимое (оно уже имеет правильный отступ 2 пробела)
if (sectionName === 'x-substore') {
content = content.replace(/^x-substore:\s*(?:#.*)?$/m, '');
}
const mode = entry.mode || "concat";
if (mode === 'concat') {
const lines = cleanText(content).split('\n').filter(l => !l.match(/^#\s*@file:/));
sectionOutput.push(lines.join('\n'));
continue;
}
if (mode === 'first_wins') {
let blockType = 'map2';
if (sectionName === 'root') blockType = 'map0';
if (['proxies', 'proxy-groups'].includes(sectionName)) blockType = 'list';
const blocks = splitBlocks(content, blockType);
if (blocks.length === 0 && !opts.clearComments) {
sectionOutput.push(`# WARNING: No valid blocks found in ${entry.file}`);
}
for (const block of blocks) {
let id = null;
if (blockType === 'list') {
id = extractName(block);
} else if (blockType === 'map0') {
id = extractKey(block, 0);
} else {
id = extractKey(block, 2);
}
// Apply cleaning options for x-substore content
if (sectionName === 'x-substore' && id) {
if (opts.clearManifest && id === 'manifest') continue;
if (opts.clearReplacements && id === 'replacements') continue;
}
if (id) {
if (seenKeys.has(id)) {
if (!opts.clearComments) sectionOutput.push(`# [SKIP] Duplicate "${id}" ignored`);
continue;
}
seenKeys.add(id);
}
sectionOutput.push(block);
}
}
}
return sectionOutput.join("\n");
}
// --- MAIN EXECUTION ---
try {
const opts = normalizeOptions();
const fileMap = normalizeFiles($files);
let manifestKey = null;
for (const k of fileMap.keys()) {
if (k.startsWith("00-manifest")) {
manifestKey = k;
break;
}
}
if (!manifestKey) throw new Error("Manifest file (00-manifest-...) not found.");
const manifestRaw = fileMap.get(manifestKey);
const manifestObj = ProxyUtils.yaml.safeLoad(manifestRaw);
if (!manifestObj?.['x-substore']?.manifest) {
throw new Error("Invalid Manifest structure.");
}
const manifestList = manifestObj['x-substore'].manifest;
const replacements = manifestObj['x-substore'].replacements || [];
const sectionOrder = [
"x-substore", "root", "hosts", "sniffer", "tun", "dns",
"proxies", "proxy-providers", "proxy-groups", "rule-providers", "rules"
];
const plan = {};
sectionOrder.forEach(s => plan[s] = []);
manifestList.forEach(entry => {
if (!plan[entry.section]) plan[entry.section] = [];
plan[entry.section].push(entry);
});
const finalChunks = [];
for (const sec of sectionOrder) {
if (!plan[sec] || plan[sec].length === 0) continue;
const secStr = processSection(sec, plan[sec], fileMap, opts);
finalChunks.push(secStr);
}
let result = finalChunks.join("\n\n");
if (Array.isArray(replacements)) {
replacements.forEach(rep => {
if (rep.from && rep.to) {
result = result.split(rep.from).join(rep.to);
}
});
}
$content = result;
} catch (err) {
$content = `# CRITICAL ERROR:\n# ${err.message}\n# Stack: ${err.stack}`;
}

View File

@@ -0,0 +1,239 @@
/**
* SUB STORE YAML ASSEMBLER (Content-Tag Aware)
* * Требование: Каждый файл должен начинаться с комментария:
* # @file: filename.yaml
*/
// --- UTILS ---
// Функция нормализации теперь парсит содержимое, чтобы найти имя файла
function normalizeFiles(rawFiles) {
const map = new Map();
if (!rawFiles || !Array.isArray(rawFiles)) return map;
rawFiles.forEach((content, index) => {
if (typeof content !== 'string') return;
// Ищем магический тег: # @file: filename.yaml
const match = content.match(/^#\s*@file:\s*(.+?)(\s|$)/m);
if (match) {
const filename = match[1].trim();
map.set(filename, content);
} else {
// Если тега нет, файл остается "анонимным" и недоступным через манифест,
// но мы можем логировать это.
// console.log(`File at index ${index} has no @file tag`);
}
});
return map;
}
function cleanText(text) {
return String(text || "").replace(/\r\n/g, "\n");
}
// Извлечение name из элемента списка
function extractName(block) {
// Ищем name: value с учетом отступов (4 пробела)
const match = block.match(/^ {4}name:\s*(?:["']?)(.*?)(?:["']?)\s*(?:#.*)?$/m);
return match ? match[1].trim() : null;
}
// Извлечение ключа из map (0 или 2 пробела)
function extractKey(block, indentLevel) {
const spaceStr = " ".repeat(indentLevel);
const re = new RegExp(`^${spaceStr}([^#\\s][^:]+):`);
const match = block.match(re);
return match ? match[1].trim().replace(/['"]/g, "") : null;
}
// Разбивка текста на логические блоки
function splitBlocks(text, type) {
const lines = cleanText(text).split("\n");
const blocks = [];
let currentBuf = [];
// Детекторы начала блока
const isListStart = (l) => l.match(/^ {2}-\s/); // " - "
const isMapStart2 = (l) => l.match(/^ {2}[^ \-#][^:]*:/); // " key:"
const isMapStart0 = (l) => l.match(/^[^ \-#][^:]*:/); // "key:" (root)
const isStart = (l) => {
if (type === 'list') return isListStart(l);
if (type === 'map2') return isMapStart2(l);
if (type === 'map0') return isMapStart0(l);
return false;
};
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
// Если строка начинается с # @file:, пропускаем ее, чтобы не мусорить в конфиге
if (line.match(/^#\s*@file:/)) continue;
if (isStart(line)) {
if (currentBuf.length > 0) {
blocks.push(currentBuf.join("\n"));
currentBuf = [];
}
}
// Пропуск пустых строк в начале, если буфер пуст
if (currentBuf.length === 0 && !line.trim()) continue;
currentBuf.push(line);
}
if (currentBuf.length > 0) {
blocks.push(currentBuf.join("\n"));
}
return blocks;
}
// --- MERGE LOGIC ---
function processSection(sectionName, manifestEntries, fileMap) {
let sectionOutput = [];
const seenKeys = new Set();
// Добавляем заголовок секции (кроме root, x-substore и rules)
if (!['root', 'x-substore', 'rules'].includes(sectionName)) {
sectionOutput.push(`${sectionName}:`);
}
if (sectionName === 'x-substore') {
sectionOutput.push(`x-substore:`);
}
for (const entry of manifestEntries) {
const content = fileMap.get(entry.file);
if (!content) {
// FAIL-FAST: Если файл из манифеста не найден (нет тега или не загружен)
throw new Error(`CRITICAL: File "${entry.file}" not found inside input bundle. Did you add '# @file: ${entry.file}' header?`);
}
const mode = entry.mode || "concat";
sectionOutput.push(`\n# --- source: ${entry.file} | mode: ${mode} ---`);
if (mode === 'concat') {
// Просто чистим от тега @file при вставке
const lines = cleanText(content).split('\n').filter(l => !l.match(/^#\s*@file:/));
sectionOutput.push(lines.join('\n'));
continue;
}
if (mode === 'first_wins') {
let blockType = 'map2';
if (sectionName === 'root') blockType = 'map0';
if (['proxies', 'proxy-groups'].includes(sectionName)) blockType = 'list';
const blocks = splitBlocks(content, blockType);
if (blocks.length === 0) {
sectionOutput.push(`# WARNING: No valid blocks found in ${entry.file}`);
}
for (const block of blocks) {
let id = null;
if (blockType === 'list') {
id = extractName(block);
} else if (blockType === 'map0') {
id = extractKey(block, 0);
} else {
id = extractKey(block, 2);
}
if (id) {
if (seenKeys.has(id)) {
sectionOutput.push(`# [SKIP] Duplicate "${id}" ignored`);
continue;
}
seenKeys.add(id);
}
sectionOutput.push(block);
}
}
}
return sectionOutput.join("\n");
}
// --- MAIN EXECUTION ---
try {
// 1. Создаем карту файлов на основе тегов # @file:
const fileMap = normalizeFiles($files);
// 2. Ищем Манифест
let manifestKey = null;
// Ищем файл, чье имя (из тега) начинается с 00-manifest
for (const k of fileMap.keys()) {
if (k.startsWith("00-manifest")) {
manifestKey = k;
break;
}
}
if (!manifestKey) {
const foundFiles = Array.from(fileMap.keys()).join(", ");
throw new Error(`Manifest file (00-manifest-...) not found in headers. Found files: [${foundFiles}]`);
}
// 3. Парсим Манифест
const manifestRaw = fileMap.get(manifestKey);
const manifestObj = ProxyUtils.yaml.safeLoad(manifestRaw);
if (!manifestObj?.['x-substore']?.manifest) {
throw new Error("Invalid Manifest: missing x-substore.manifest structure.");
}
const manifestList = manifestObj['x-substore'].manifest;
const replacements = manifestObj['x-substore'].replacements || [];
// 4. Планирование порядка секций
const sectionOrder = [
"x-substore", "root", "hosts", "sniffer", "tun", "dns",
"proxies", "proxy-providers", "proxy-groups", "rule-providers", "rules"
];
const plan = {};
sectionOrder.forEach(s => plan[s] = []);
manifestList.forEach(entry => {
// Если секция в манифесте есть, а в нашем плане нет - добавляем динамически (на всякий случай)
if (!plan[entry.section]) plan[entry.section] = [];
plan[entry.section].push(entry);
});
// 5. Сборка
const finalChunks = [];
for (const sec of sectionOrder) {
if (!plan[sec] || plan[sec].length === 0) continue;
// Обработка секции
const secStr = processSection(sec, plan[sec], fileMap);
finalChunks.push(secStr);
}
let result = finalChunks.join("\n\n");
// 6. Replacements (Literal)
if (Array.isArray(replacements)) {
replacements.forEach(rep => {
if (rep.from && rep.to) {
result = result.split(rep.from).join(rep.to);
}
});
}
$content = result;
} catch (err) {
$content = `# CRITICAL ERROR in Assembler:\n# ${err.message}\n\n# Stack:\n${err.stack}`;
}

View File

@@ -0,0 +1,235 @@
/**********************
* Defaults (AmneziaWG)
* Если в исходнике нет параметра, берём отсюда.
* Если итоговое значение == 0, параметр пропускаем в amnezia-wg-option.
**********************/
const AMZ_DEFAULTS = {
Jc: 4,
Jmin: 10,
Jmax: 50,
S1: 110,
S2: 120,
H1: 0,
H2: 0,
H3: 0,
H4: 0,
};
/**********************
* Options from Sub Store
* Example URL:
* .../convert-awg-to-clash.js#dns=false&ipv6=false#noCache
*
* Требования:
* - dns=false => remote-dns-resolve: false (вне зависимости от входа)
* - ipv6=false => удалить IPv6 из allowed-ips (и вообще не добавлять ipv6-части)
**********************/
function normalizeOptions() {
const args = (typeof $arguments !== "undefined" && $arguments) ? $arguments : {};
const asBool = (v, def = true) => {
if (v === undefined || v === null || v === "") return def;
if (typeof v === "boolean") return v;
const s = String(v).toLowerCase().trim();
if (["1", "true", "yes", "y", "on"].includes(s)) return true;
if (["0", "false", "no", "n", "off"].includes(s)) return false;
return def;
};
return {
dns: asBool(args.dns, true),
ipv6: asBool(args.ipv6, true),
};
}
/**********************
* Parsing WG INI blocks
**********************/
function cleanLines(text) {
return String(text ?? "")
.replace(/\r\n/g, "\n")
.split("\n");
}
// Парсим один INI-фрагмент с [Interface] и [Peer] (один peer)
function parseIniOne(text) {
const lines = cleanLines(text)
.map((l) => l.trim())
.filter((l) => l.length > 0 && !l.startsWith("#") && !l.startsWith(";"));
let section = null;
const data = { Interface: {}, Peer: {} };
for (const line of lines) {
const mSec = line.match(/^\[(.+?)\]$/);
if (mSec) {
section = mSec[1];
continue;
}
const mKV = line.match(/^([^=]+?)\s*=\s*(.+)$/);
if (!mKV || !section) continue;
const key = mKV[1].trim();
const value = mKV[2].trim();
if (section === "Interface") data.Interface[key] = value;
else if (section === "Peer") data.Peer[key] = value;
}
return data;
}
// Разбиваем весь файл на блоки по заголовкам "##### ..."
function splitByHeaders(fullText) {
const lines = cleanLines(fullText);
const blocks = [];
let current = { name: "amz-wg", buf: [] };
const headerRe = /^#{5}\s*(.+)\s*$/;
for (const line of lines) {
const mh = line.match(headerRe);
if (mh) {
// закрываем предыдущий блок, если там что-то есть
if (current.buf.join("\n").trim().length > 0) blocks.push(current);
current = { name: mh[1].trim(), buf: [] };
continue;
}
current.buf.push(line);
}
if (current.buf.join("\n").trim().length > 0) blocks.push(current);
return blocks;
}
function splitList(val) {
return String(val || "")
.split(",")
.map((s) => s.trim())
.filter(Boolean);
}
function parseEndpoint(endpoint) {
// Поддержка:
// - host:port
// - [ipv6]:port
const s = String(endpoint || "").trim();
const v6 = s.match(/^\[(.+?)\]:(\d+)$/);
if (v6) return { host: v6[1], port: Number(v6[2]) };
const v4 = s.match(/^(.+?):(\d+)$/);
if (v4) return { host: v4[1], port: Number(v4[2]) };
return { host: "", port: 0 };
}
function toNumberOrNull(v) {
const s = String(v ?? "").trim();
if (s === "") return null;
if (/^-?\d+$/.test(s)) return Number(s);
return null;
}
function buildAmzOptions(interfaceObj) {
// Правило:
// - если в файле есть параметр => используем его
// - иначе берём из AMZ_DEFAULTS
// - если итог == 0 => пропускаем
const out = {};
const keys = Object.keys(AMZ_DEFAULTS);
for (const K of keys) {
const fromFile = interfaceObj[K];
const fileNum = toNumberOrNull(fromFile);
const fallback = AMZ_DEFAULTS[K];
const finalVal =
fileNum !== null ? fileNum : (fallback ?? 0);
if (Number(finalVal) !== 0) {
out[K.toLowerCase()] = Number(finalVal);
}
}
return out;
}
function filterAllowedIPs(allowed, enableIPv6) {
if (enableIPv6) return allowed;
// выкидываем всё, что похоже на IPv6
return allowed.filter((cidr) => !cidr.includes(":"));
}
function buildProxy(blockName, wg, options) {
const i = wg.Interface || {};
const p = wg.Peer || {};
const address = i.Address || "";
const dnsList = splitList(i.DNS);
const ep = parseEndpoint(p.Endpoint);
let allowed = splitList(p.AllowedIPs);
allowed = filterAllowedIPs(allowed, options.ipv6);
const proxy = {
name: blockName || "amz-wg",
type: "wireguard",
ip: address,
// ipv6 поле в твоём примере закомментировано, так что не добавляем вообще
"private-key": i.PrivateKey || "",
peers: [
{
server: ep.host,
port: ep.port,
"public-key": p.PublicKey || "",
...(p.PresharedKey ? { "pre-shared-key": p.PresharedKey } : {}),
"allowed-ips": allowed,
},
],
udp: true,
// dns=false => принудительно false
"remote-dns-resolve": options.dns ? true : false,
...(dnsList.length ? { dns: dnsList } : {}),
};
const amz = buildAmzOptions(i);
if (Object.keys(amz).length) {
proxy["amnezia-wg-option"] = amz;
}
return proxy;
}
/**********************
* ENTRYPOINT
**********************/
const opts = normalizeOptions();
// Вход: чаще всего $content, но на всякий пожарный берём $files[0]
const input = String($content ?? ($files && $files[0]) ?? "");
// Разбиваем по заголовкам ##### ...
const blocks = splitByHeaders(input);
// Для каждого блока парсим INI и строим proxy
const proxies = [];
for (const b of blocks) {
const iniText = b.buf.join("\n").trim();
if (!iniText) continue;
const wg = parseIniOne(iniText);
// минимальная валидация: нужны ключи
if (!wg.Interface?.PrivateKey || !wg.Peer?.PublicKey || !wg.Peer?.Endpoint) {
// пропускаем мусорные блоки, чтобы не ронять весь конвертер
continue;
}
proxies.push(buildProxy(b.name, wg, opts));
}
// Финальный YAML
$content = ProxyUtils.yaml.safeDump({ proxies });

View File

@@ -0,0 +1,28 @@
// Example:
// Script Operator
// 1. backend version(>2.14.88):
$server.name = 'prefix-' + $server.name
$server.ecn = true
$server['test-url'] = 'http://1.0.0.1/generate_204'
// 2. operator function
function operator(proxies, targetPlatform, context) {
return proxies.map( proxy => {
// Change proxy information here
return proxy;
});
}
// Script Filter
// 1. backend version(>2.14.119):
const port = Number($server.port)
return [80].includes(port)
// 2. filter function
function filter(proxies, targetPlatform) {
return proxies.map( proxy => {
// Return true if the current proxy is selected
return true;
});
}

View File

@@ -0,0 +1,59 @@
/**
* 节点名改为花里胡哨字体,仅支持英文字符和数字
*
* 【字体】
* 可参考https://www.dute.org/weird-fonts
* serif-bold, serif-italic, serif-bold-italic, sans-serif-regular, sans-serif-bold-italic, script-regular, script-bold, fraktur-regular, fraktur-bold, monospace-regular, double-struck-bold, circle-regular, square-regular, modifier-letter(小写没有 q, 用 ᵠ 替代. 大写缺的太多, 用小写替代)
*
* 【示例】
* 1⃣ 设置所有格式为 "serif-bold"
* #type=serif-bold
*
* 2⃣ 设置字母格式为 "serif-bold",数字格式为 "circle-regular"
* #type=serif-bold&num=circle-regular
*/
global.$arguments = { type: "serif-bold" };
function operator(proxies) {
const { type, num } = $arguments;
const TABLE = {
"serif-bold": ["𝟎","𝟏","𝟐","𝟑","𝟒","𝟓","𝟔","𝟕","𝟖","𝟗","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙"],
"serif-italic": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "𝑎", "𝑏", "𝑐", "𝑑", "𝑒", "𝑓", "𝑔", "", "𝑖", "𝑗", "𝑘", "𝑙", "𝑚", "𝑛", "𝑜", "𝑝", "𝑞", "𝑟", "𝑠", "𝑡", "𝑢", "𝑣", "𝑤", "𝑥", "𝑦", "𝑧", "𝐴", "𝐵", "𝐶", "𝐷", "𝐸", "𝐹", "𝐺", "𝐻", "𝐼", "𝐽", "𝐾", "𝐿", "𝑀", "𝑁", "𝑂", "𝑃", "𝑄", "𝑅", "𝑆", "𝑇", "𝑈", "𝑉", "𝑊", "𝑋", "𝑌", "𝑍"],
"serif-bold-italic": ["0","1","2","3","4","5","6","7","8","9","𝒂","𝒃","𝒄","𝒅","𝒆","𝒇","𝒈","𝒉","𝒊","𝒋","𝒌","𝒍","𝒎","𝒏","𝒐","𝒑","𝒒","𝒓","𝒔","𝒕","𝒖","𝒗","𝒘","𝒙","𝒚","𝒛","𝑨","𝑩","𝑪","𝑫","𝑬","𝑭","𝑮","𝑯","𝑰","𝑱","𝑲","𝑳","𝑴","𝑵","𝑶","𝑷","𝑸","𝑹","𝑺","𝑻","𝑼","𝑽","𝑾","𝑿","𝒀","𝒁"],
"sans-serif-regular": ["𝟢", "𝟣", "𝟤", "𝟥", "𝟦", "𝟧", "𝟨", "𝟩", "𝟪", "𝟫", "𝖺", "𝖻", "𝖼", "𝖽", "𝖾", "𝖿", "𝗀", "𝗁", "𝗂", "𝗃", "𝗄", "𝗅", "𝗆", "𝗇", "𝗈", "𝗉", "𝗊", "𝗋", "𝗌", "𝗍", "𝗎", "𝗏", "𝗐", "𝗑", "𝗒", "𝗓", "𝖠", "𝖡", "𝖢", "𝖣", "𝖤", "𝖥", "𝖦", "𝖧", "𝖨", "𝖩", "𝖪", "𝖫", "𝖬", "𝖭", "𝖮", "𝖯", "𝖰", "𝖱", "𝖲", "𝖳", "𝖴", "𝖵", "𝖶", "𝖷", "𝖸", "𝖹"],
"sans-serif-bold": ["𝟬","𝟭","𝟮","𝟯","𝟰","𝟱","𝟲","𝟳","𝟴","𝟵","𝗮","𝗯","𝗰","𝗱","𝗲","𝗳","𝗴","𝗵","𝗶","𝗷","𝗸","𝗹","𝗺","𝗻","𝗼","𝗽","𝗾","𝗿","𝘀","𝘁","𝘂","𝘃","𝘄","𝘅","𝘆","𝘇","𝗔","𝗕","𝗖","𝗗","𝗘","𝗙","𝗚","𝗛","𝗜","𝗝","𝗞","𝗟","𝗠","𝗡","𝗢","𝗣","𝗤","𝗥","𝗦","𝗧","𝗨","𝗩","𝗪","𝗫","𝗬","𝗭"],
"sans-serif-italic": ["0","1","2","3","4","5","6","7","8","9","𝘢","𝘣","𝘤","𝘥","𝘦","𝘧","𝘨","𝘩","𝘪","𝘫","𝘬","𝘭","𝘮","𝘯","𝘰","𝘱","𝘲","𝘳","𝘴","𝘵","𝘶","𝘷","𝘸","𝘹","𝘺","𝘻","𝘈","𝘉","𝘊","𝘋","𝘌","𝘍","𝘎","𝘏","𝘐","𝘑","𝘒","𝘓","𝘔","𝘕","𝘖","𝘗","𝘘","𝘙","𝘚","𝘛","𝘜","𝘝","𝘞","𝘟","𝘠","𝘡"],
"sans-serif-bold-italic": ["0","1","2","3","4","5","6","7","8","9","𝙖","𝙗","𝙘","𝙙","𝙚","𝙛","𝙜","𝙝","𝙞","𝙟","𝙠","𝙡","𝙢","𝙣","𝙤","𝙥","𝙦","𝙧","𝙨","𝙩","𝙪","𝙫","𝙬","𝙭","𝙮","𝙯","𝘼","𝘽","𝘾","𝘿","𝙀","𝙁","𝙂","𝙃","𝙄","𝙅","𝙆","𝙇","𝙈","𝙉","𝙊","𝙋","𝙌","𝙍","𝙎","𝙏","𝙐","𝙑","𝙒","𝙓","𝙔","𝙕"],
"script-regular": ["0","1","2","3","4","5","6","7","8","9","𝒶","𝒷","𝒸","𝒹","","𝒻","","𝒽","𝒾","𝒿","𝓀","𝓁","𝓂","𝓃","","𝓅","𝓆","𝓇","𝓈","𝓉","𝓊","𝓋","𝓌","𝓍","𝓎","𝓏","𝒜","","𝒞","𝒟","","","𝒢","","","𝒥","𝒦","","","𝒩","𝒪","𝒫","𝒬","","𝒮","𝒯","𝒰","𝒱","𝒲","𝒳","𝒴","𝒵"],
"script-bold": ["0","1","2","3","4","5","6","7","8","9","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩"],
"fraktur-regular": ["0","1","2","3","4","5","6","7","8","9","𝔞","𝔟","𝔠","𝔡","𝔢","𝔣","𝔤","𝔥","𝔦","𝔧","𝔨","𝔩","𝔪","𝔫","𝔬","𝔭","𝔮","𝔯","𝔰","𝔱","𝔲","𝔳","𝔴","𝔵","𝔶","𝔷","𝔄","𝔅","","𝔇","𝔈","𝔉","𝔊","","","𝔍","𝔎","𝔏","𝔐","𝔑","𝔒","𝔓","𝔔","","𝔖","𝔗","𝔘","𝔙","𝔚","𝔛","𝔜",""],
"fraktur-bold": ["0","1","2","3","4","5","6","7","8","9","𝖆","𝖇","𝖈","𝖉","𝖊","𝖋","𝖌","𝖍","𝖎","𝖏","𝖐","𝖑","𝖒","𝖓","𝖔","𝖕","𝖖","𝖗","𝖘","𝖙","𝖚","𝖛","𝖜","𝖝","𝖞","𝖟","𝕬","𝕭","𝕮","𝕯","𝕰","𝕱","𝕲","𝕳","𝕴","𝕵","𝕶","𝕷","𝕸","𝕹","𝕺","𝕻","𝕼","𝕽","𝕾","𝕿","𝖀","𝖁","𝖂","𝖃","𝖄","𝖅"],
"monospace-regular": ["𝟶","𝟷","𝟸","𝟹","𝟺","𝟻","𝟼","𝟽","𝟾","𝟿","𝚊","𝚋","𝚌","𝚍","𝚎","𝚏","𝚐","𝚑","𝚒","𝚓","𝚔","𝚕","𝚖","𝚗","𝚘","𝚙","𝚚","𝚛","𝚜","𝚝","𝚞","𝚟","𝚠","𝚡","𝚢","𝚣","𝙰","𝙱","𝙲","𝙳","𝙴","𝙵","𝙶","𝙷","𝙸","𝙹","𝙺","𝙻","𝙼","𝙽","𝙾","𝙿","𝚀","𝚁","𝚂","𝚃","𝚄","𝚅","𝚆","𝚇","𝚈","𝚉"],
"double-struck-bold": ["𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡","𝕒","𝕓","𝕔","𝕕","𝕖","𝕗","𝕘","𝕙","𝕚","𝕛","𝕜","𝕝","𝕞","𝕟","𝕠","𝕡","𝕢","𝕣","𝕤","𝕥","𝕦","𝕧","𝕨","𝕩","𝕪","𝕫","𝔸","𝔹","","𝔻","𝔼","𝔽","𝔾","","𝕀","𝕁","𝕂","𝕃","𝕄","","𝕆","","","","𝕊","𝕋","𝕌","𝕍","𝕎","𝕏","𝕐",""],
"circle-regular": ["⓪","①","②","③","④","⑤","⑥","⑦","⑧","⑨","ⓐ","ⓑ","ⓒ","ⓓ","ⓔ","ⓕ","ⓖ","ⓗ","ⓘ","ⓙ","ⓚ","ⓛ","ⓜ","ⓝ","ⓞ","ⓟ","ⓠ","ⓡ","ⓢ","ⓣ","ⓤ","ⓥ","ⓦ","ⓧ","ⓨ","ⓩ","Ⓐ","Ⓑ","Ⓒ","Ⓓ","Ⓔ","Ⓕ","Ⓖ","Ⓗ","Ⓘ","Ⓙ","Ⓚ","Ⓛ","Ⓜ","Ⓝ","Ⓞ","Ⓟ","Ⓠ","Ⓡ","Ⓢ","Ⓣ","Ⓤ","Ⓥ","Ⓦ","Ⓧ","Ⓨ","Ⓩ"],
"square-regular": ["0","1","2","3","4","5","6","7","8","9","🄰","🄱","🄲","🄳","🄴","🄵","🄶","🄷","🄸","🄹","🄺","🄻","🄼","🄽","🄾","🄿","🅀","🅁","🅂","🅃","🅄","🅅","🅆","🅇","🅈","🅉","🄰","🄱","🄲","🄳","🄴","🄵","🄶","🄷","🄸","🄹","🄺","🄻","🄼","🄽","🄾","🄿","🅀","🅁","🅂","🅃","🅄","🅅","🅆","🅇","🅈","🅉"],
"modifier-letter": ["⁰", "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹", "ᵃ", "ᵇ", "ᶜ", "ᵈ", "ᵉ", "ᶠ", "ᵍ", "ʰ", "ⁱ", "ʲ", "ᵏ", "ˡ", "ᵐ", "ⁿ", "ᵒ", "ᵖ", "ᵠ", "ʳ", "ˢ", "ᵗ", "ᵘ", "ᵛ", "ʷ", "ˣ", "ʸ", "ᶻ", "ᴬ", "ᴮ", "ᶜ", "ᴰ", "ᴱ", "ᶠ", "ᴳ", "ʰ", "ᴵ", "ᴶ", "ᴷ", "ᴸ", "ᴹ", "ᴺ", "ᴼ", "ᴾ", "ᵠ", "ᴿ", "ˢ", "ᵀ", "ᵁ", "ᵛ", "ᵂ", "ˣ", "ʸ", "ᶻ"],
};
// charCode => index in `TABLE`
const INDEX = { "48": 0, "49": 1, "50": 2, "51": 3, "52": 4, "53": 5, "54": 6, "55": 7, "56": 8, "57": 9, "65": 36, "66": 37, "67": 38, "68": 39, "69": 40, "70": 41, "71": 42, "72": 43, "73": 44, "74": 45, "75": 46, "76": 47, "77": 48, "78": 49, "79": 50, "80": 51, "81": 52, "82": 53, "83": 54, "84": 55, "85": 56, "86": 57, "87": 58, "88": 59, "89": 60, "90": 61, "97": 10, "98": 11, "99": 12, "100": 13, "101": 14, "102": 15, "103": 16, "104": 17, "105": 18, "106": 19, "107": 20, "108": 21, "109": 22, "110": 23, "111": 24, "112": 25, "113": 26, "114": 27, "115": 28, "116": 29, "117": 30, "118": 31, "119": 32, "120": 33, "121": 34, "122": 35 };
return proxies.map(p => {
p.name = [...p.name].map(c => {
if (/[a-zA-Z0-9]/.test(c)) {
const code = c.charCodeAt(0);
const index = INDEX[code];
if (isNumber(code) && num) {
return TABLE[num][index];
} else {
return TABLE[type][index];
}
}
return c;
}).join("");
return p;
})
}
function isNumber(code) { return code >= 48 && code <= 57; }

View File

@@ -0,0 +1,328 @@
/**
* Sub-Store operator: Normalize + tag + country detect + per-country numbering
*
* Output format (default):
* 🇺🇸 USA-01 🔒 📺 ❻ ▫ws/vless/443
*
* Notes:
* - Numbering is computed per-country AFTER grouping the full list.
* - Tags (icons) do NOT affect numbering order.
* - GeoIP is optional and only used when server is an IP and utils.geoip.lookup exists.
*/
///////////////////////
// CONFIG (EDIT ME)
///////////////////////
// 1) Remove these patterns (marketing noise, brackets, separators, etc.)
const NOISE_PATTERNS = [
/\[[^\]]*]/g, // [ ... ]
/\([^)]*\)/g, // ( ... )
/\{[^}]*}/g, // { ... }
/\btraffic\b/gi,
/\bfree\b/gi,
/\bwebsite\b/gi,
/\bexpire\b/gi,
/\blow\s*ping\b/gi,
/\bai\s*studio\b/gi,
/\bno\s*p2p\b/gi,
/\b10\s*gbit\b/gi,
/\bvless\b/gi, // you said you don't want it in the visible name
/\bvmess\b/gi,
/\bssr?\b/gi,
/\btrojan\b/gi,
/\bhysteria2?\b/gi,
/\btuic\b/gi,
/[|]/g,
/[_]+/g,
/[-]{2,}/g
];
// 2) Keyword -> icon tags (if found in original name, icon is added; the keyword is removed from base name)
const ICON_RULES = [
{ regex: /\bYT\b/gi, icon: "📺" },
{ regex: /\bIPv6\b/gi, icon: "❻" },
{ regex: /\bNetflix\b|\bNF\b/gi, icon: "🎬" },
{ regex: /\bDisney\+?\b|\bDSNY\b/gi, icon: "🏰" },
{ regex: /\bHBO\b/gi, icon: "📼" },
{ regex: /\bPrime\b|\bAmazon\b/gi, icon: "📦" },
{ regex: /\bChatGPT\b|\bOpenAI\b/gi, icon: "🤖" },
{ regex: /\bSteam\b/gi, icon: "🎮" },
];
// 3) Optional “network” tag rules based on NAME text (not $server.network)
// (Useful if providers shove "BGP/IPLC" into the node name)
const NAME_NETWORK_TAGS = [
{ regex: /\bIPLC\b/gi, tag: "🛰️" },
{ regex: /\bBGP\b/gi, tag: "🧭" },
{ regex: /\bAnycast\b/gi, tag: "🌍" }
];
// 4) Country detection rules by NAME (regex). First match wins (priority = lower is earlier)
const COUNTRY_RULES = [
// USA
{ regex: /\b(USA|US|UNITED\s*STATES|AMERICA|NEW\s*YORK|NYC|LOS\s*ANGELES|LA|DALLAS|CHI(CAGO)?)\b/i, iso3: "USA", flag: "🇺🇸", priority: 10 },
// Germany
{ regex: /\b(DE|DEU|GER(MANY)?|FRANKFURT|BERLIN|MUNICH|MÜNCHEN)\b/i, iso3: "DEU", flag: "🇩🇪", priority: 20 },
// Netherlands
{ regex: /\b(NL|NLD|NETHERLANDS|HOLLAND|AMSTERDAM)\b/i, iso3: "NLD", flag: "🇳🇱", priority: 30 },
// UK
{ regex: /\b(UK|GB|GBR|UNITED\s*KINGDOM|LONDON|MANCHESTER)\b/i, iso3: "GBR", flag: "🇬🇧", priority: 40 },
// France
{ regex: /\b(FR|FRA|FRANCE|PARIS|MARSEILLE)\b/i, iso3: "FRA", flag: "🇫🇷", priority: 50 },
// Poland
{ regex: /\b(PL|POL|POLAND|WARSAW|WARSZAWA)\b/i, iso3: "POL", flag: "🇵🇱", priority: 60 },
// Finland
{ regex: /\b(FI|FIN|FINLAND|HELSINKI)\b/i, iso3: "FIN", flag: "🇫🇮", priority: 70 },
// Sweden
{ regex: /\b(SE|SWE|SWEDEN|STOCKHOLM)\b/i, iso3: "SWE", flag: "🇸🇪", priority: 80 },
// Norway
{ regex: /\b(NO|NOR|NORWAY|OSLO)\b/i, iso3: "NOR", flag: "🇳🇴", priority: 90 },
// Switzerland
{ regex: /\b(CH|CHE|SWITZERLAND|ZURICH|GENEVA)\b/i, iso3: "CHE", flag: "🇨🇭", priority: 100 },
// Estonia / Latvia / Lithuania
{ regex: /\b(EE|EST|ESTONIA|TALLINN)\b/i, iso3: "EST", flag: "🇪🇪", priority: 110 },
{ regex: /\b(LV|LVA|LATVIA|RIGA)\b/i, iso3: "LVA", flag: "🇱🇻", priority: 120 },
{ regex: /\b(LT|LTU|LITHUANIA|VILNIUS)\b/i, iso3: "LTU", flag: "🇱🇹", priority: 130 },
// Turkey
{ regex: /\b(TR|TUR|TURKEY|ISTANBUL)\b/i, iso3: "TUR", flag: "🇹🇷", priority: 140 },
// Singapore / Japan / Korea / Hong Kong
{ regex: /\b(SG|SGP|SINGAPORE)\b/i, iso3: "SGP", flag: "🇸🇬", priority: 200 },
{ regex: /\b(JP|JPN|JAPAN|TOKYO|OSAKA)\b/i, iso3: "JPN", flag: "🇯🇵", priority: 210 },
{ regex: /\b(KR|KOR|KOREA|SEOUL)\b/i, iso3: "KOR", flag: "🇰🇷", priority: 220 },
{ regex: /\b(HK|HKG|HONG\s*KONG)\b/i, iso3: "HKG", flag: "🇭🇰", priority: 230 },
];
// 5) GeoIP mapping (ISO2 -> ISO3 + flag) used only if utils.geoip.lookup(ip) returns ISO2
const ISO2_TO_ISO3 = {
US: { iso3: "USA", flag: "🇺🇸" },
DE: { iso3: "DEU", flag: "🇩🇪" },
NL: { iso3: "NLD", flag: "🇳🇱" },
GB: { iso3: "GBR", flag: "🇬🇧" },
FR: { iso3: "FRA", flag: "🇫🇷" },
PL: { iso3: "POL", flag: "🇵🇱" },
FI: { iso3: "FIN", flag: "🇫🇮" },
SE: { iso3: "SWE", flag: "🇸🇪" },
NO: { iso3: "NOR", flag: "🇳🇴" },
CH: { iso3: "CHE", flag: "🇨🇭" },
EE: { iso3: "EST", flag: "🇪🇪" },
LV: { iso3: "LVA", flag: "🇱🇻" },
LT: { iso3: "LTU", flag: "🇱🇹" },
TR: { iso3: "TUR", flag: "🇹🇷" },
SG: { iso3: "SGP", flag: "🇸🇬" },
JP: { iso3: "JPN", flag: "🇯🇵" },
KR: { iso3: "KOR", flag: "🇰🇷" },
HK: { iso3: "HKG", flag: "🇭🇰" },
};
// 6) Protocol icons (based on proxy.type)
const PROTOCOL_ICONS = {
ss: "🔒",
ssr: "☂️",
vmess: "🪁",
vless: "🌌",
trojan: "🐎",
http: "🌐",
socks5: "🧦",
snell: "🐌",
wireguard: "🐲",
hysteria: "🤪",
hysteria2: "⚡",
tuic: "🚅"
};
///////////////////////
// HELPERS
///////////////////////
function isIPv4(str) {
if (typeof str !== "string") return false;
const m = str.match(/^(\d{1,3})(\.\d{1,3}){3}$/);
if (!m) return false;
return str.split(".").every(oct => {
const n = Number(oct);
return n >= 0 && n <= 255 && String(n) === oct.replace(/^0+(\d)/, "$1"); // avoids "001" weirdness
});
}
function uniq(arr) {
return [...new Set(arr.filter(Boolean))];
}
function sanitizeBaseName(name) {
let s = String(name || "");
// Remove noise patterns
for (const re of NOISE_PATTERNS) s = s.replace(re, " ");
// Collapse spaces
s = s.replace(/\s+/g, " ").trim();
return s;
}
function extractIconTagsAndStrip(name) {
let s = String(name || "");
const tags = [];
for (const r of ICON_RULES) {
if (r.regex.test(s)) {
tags.push(r.icon);
s = s.replace(r.regex, " ");
}
}
for (const t of NAME_NETWORK_TAGS) {
if (t.regex.test(s)) {
tags.push(t.tag);
s = s.replace(t.regex, " ");
}
}
return { stripped: s.replace(/\s+/g, " ").trim(), tags: uniq(tags) };
}
function detectCountryByName(name) {
const n = String(name || "");
// Order by priority, then first match wins
const sorted = COUNTRY_RULES.slice().sort((a, b) => a.priority - b.priority);
for (const c of sorted) {
if (c.regex.test(n)) return { iso3: c.iso3, flag: c.flag, priority: c.priority, source: "name" };
}
return null;
}
function detectCountryByGeoIP(server, utils) {
if (!isIPv4(server)) return null;
if (!utils || !utils.geoip || typeof utils.geoip.lookup !== "function") return null;
try {
const geo = utils.geoip.lookup(server);
const iso2 = geo && (geo.country || geo.country_code || geo.iso_code);
if (!iso2 || typeof iso2 !== "string") return null;
const key = iso2.toUpperCase();
const mapped = ISO2_TO_ISO3[key];
if (mapped) return { iso3: mapped.iso3, flag: mapped.flag, priority: 900, source: "geoip" };
// Unknown ISO2: keep something sane
return { iso3: key, flag: "🏳️", priority: 950, source: "geoip" };
} catch (e) {
return null;
}
}
function pad2(n) {
const x = Number(n);
return x < 10 ? `0${x}` : String(x);
}
function safeStr(v) {
return (v === undefined || v === null) ? "" : String(v);
}
///////////////////////
// OPERATOR
///////////////////////
function operator(proxies, targetPlatform, utils) {
// Sub-Store sometimes passes utils as global $utils; sometimes as 3rd arg; sometimes not at all.
// We'll accept any of them without whining.
const U = utils || (typeof $utils !== "undefined" ? $utils : null);
const buckets = Object.create(null);
for (const proxy of proxies) {
const originalName = safeStr(proxy && proxy.name);
// 1) Extract tags (icons) from ORIGINAL name, then strip those keywords out
const iconStage = extractIconTagsAndStrip(originalName);
// 2) Sanitize remaining base name (remove marketing trash, brackets, etc.)
const cleanBase = sanitizeBaseName(iconStage.stripped);
// 3) Detect country (name first, then GeoIP)
const byName = detectCountryByName(originalName);
const byGeo = detectCountryByGeoIP(proxy && proxy.server, U);
const country = byName || byGeo || { iso3: "UNK", flag: "🏴‍☠️", priority: 9999, source: "fallback" };
// 4) Protocol icon (based on type)
const proto = PROTOCOL_ICONS[(proxy && proxy.type) || ""] || "🔌";
// 5) Network/type/port tag (from proxy fields)
const net = safeStr(proxy && proxy.network) || "net?";
const typ = safeStr(proxy && proxy.type) || "type?";
const port = safeStr(proxy && proxy.port) || "port?";
const metaTag = `▫️${net}/${typ}/${port}`;
// 6) Prepare bucket key
const key = country.iso3;
if (!buckets[key]) {
buckets[key] = {
country,
list: []
};
}
// Keep meta used for sorting and final formatting
buckets[key].list.push({
proxy,
_meta: {
cleanBase,
iconTags: iconStage.tags,
proto,
metaTag
}
});
}
// 7) Sort buckets by priority
const bucketKeys = Object.keys(buckets).sort((a, b) => {
return (buckets[a].country.priority || 9999) - (buckets[b].country.priority || 9999);
});
// 8) Sort inside each country bucket and rename with per-country numbering
const result = [];
for (const key of bucketKeys) {
const group = buckets[key];
group.list.sort((A, B) => {
// Tags do not affect numbering: sort only by sanitized base + server:port as tie-breaker
const an = A._meta.cleanBase.toLowerCase();
const bn = B._meta.cleanBase.toLowerCase();
if (an !== bn) return an.localeCompare(bn);
const as = `${safeStr(A.proxy.server)}:${safeStr(A.proxy.port)}`;
const bs = `${safeStr(B.proxy.server)}:${safeStr(B.proxy.port)}`;
return as.localeCompare(bs);
});
for (let i = 0; i < group.list.length; i++) {
const item = group.list[i];
const p = item.proxy;
const num = pad2(i + 1);
const tagStr = item._meta.iconTags.length ? ` ${item._meta.iconTags.join(" ")}` : "";
// Final name format:
// 🇩🇪 DEU-03 🌌 📺 ❻ ▫ws/vless/443
p.name = `${group.country.flag} ${group.country.iso3}-${num} ${item._meta.proto}${tagStr} ${item._meta.metaTag}`.replace(/\s+/g, " ").trim();
result.push(p);
}
}
return result;
}

View File

@@ -0,0 +1,499 @@
/**
* Sub-Store operator: Normalize + tag + country detect + per-country numbering
*
* Output format (default):
* 🇺🇸 USA-01 🔒 📺 ❻ ▫ws/vless/443
*
* Notes:
* - Numbering is computed per-country AFTER grouping the full list.
* - Tags (icons) do NOT affect numbering order.
* - GeoIP is optional and only used when server is an IP and utils.geoip.lookup exists.
*/
///////////////////////
// CONFIG (EDIT ME)
///////////////////////
const DEBUG_APPEND_ORIGINAL_NAME = false; // set true to enable debug mode (appends original name as comment)
// 1) Remove these patterns (marketing noise, brackets, separators, etc.)
const NOISE_PATTERNS = [
/\[[^\]]*]/g, // [ ... ]
/\([^)]*\)/g, // ( ... )
/\{[^}]*}/g, // { ... }
/\btraffic\b/gi,
/\bfree\b/gi,
/\bwebsite\b/gi,
/\bexpire\b/gi,
/\blow\s*ping\b/gi,
/\bai\s*studio\b/gi,
/\bno\s*p2p\b/gi,
/\b10\s*gbit\b/gi,
/\bvless\b/gi,
/\bvmess\b/gi,
/\bssr?\b/gi,
/\btrojan\b/gi,
/\bhysteria2?\b/gi,
/\btuic\b/gi,
/[|]/g,
/[_]+/g,
/[-]{2,}/g
];
// 2) Keyword -> icon tags (if found in original name, icon is added; the keyword is removed from base name)
// 🇫‌🇿‌ 🇺‌🇳‌ 🇩‌🇻‌ 🇻‌🇿‌ 🇵‌🇷‌ 🇦‌🇿‌ 🇬‌🇺‌🇦‌🇷‌🇩‌
const ICON_RULES = [
{ regex: /TEST/gi, icon: "🧪" },
{ regex: uWordBoundaryGroup("Low Ping"), icon: "⚡️" },
{ regex: uWordBoundaryGroup("10 Gbit"), icon: "🛤️" },
{ regex: uWordBoundaryGroup("YT|Russia|Россия"), icon: "📺" },
{ regex: uWordBoundaryGroup("IPv6"), icon: "🎱" },
{ regex: uWordBoundaryGroup("Gemini|AI Studio"), icon: "🤖" },
{ regex: uWordBoundaryGroup("Torrent|P2P|P2P-Torrents"), icon: "🧲" },
{ regex: uWordBoundaryGroup("local"), icon: "🚪" },
{ regex: uWordBoundaryGroup("neighbourhood"), icon: "🫂" },
{ regex: uWordBoundaryGroup("xfizz|x-fizz"), icon: "🇫‌" },
{ regex: uWordBoundaryGroup("unicade|uncd"), icon: "🇺‌" },
{ regex: uWordBoundaryGroup("vzdh|vezdehod"), icon: "🇻‌" },
{ regex: uWordBoundaryGroup("dvpn|d-vpn"), icon: "🇩‌" },
{ regex: uWordBoundaryGroup("proton"), icon: "🇵‌" },
{ regex: uWordBoundaryGroup("amnezia"), icon: "🇦‌" },
{ regex: uWordBoundaryGroup("adguard"), icon: "🇬‌‌" },
];
// 3) Optional “network” tag rules based on NAME text (not $server.network)
// (Useful if providers shove "BGP/IPLC" into the node name)
const NAME_NETWORK_TAGS = [
{ regex: uWordBoundaryGroup("IPLC"), tag: "🛰️" },
{ regex: uWordBoundaryGroup("BGP"), tag: "🧭" },
{ regex: uWordBoundaryGroup("Anycast"), tag: "🌍" }
];
// 4) Country detection rules by NAME (regex). First match wins (priority = lower is earlier)
const COUNTRY_RULES = [
{ regex: uWordBoundaryGroup("(Аргентина|Argentina|AR|ARG|ARGENTINA|BUENOS\s*AIRES)"), iso3: "ARG", flag: "🇦🇷", priority: 100 }, // Argentina
{ regex: uWordBoundaryGroup("(Australia|AU|AUS|AUSTRALIA|SYDNEY)"), iso3: "AUS", flag: "🇦🇺", priority: 110 }, // Australia
{ regex: uWordBoundaryGroup("(Austria|AT|AUT|AUSTRIA|VIENNA)"), iso3: "AUT", flag: "🇦🇹", priority: 120 }, // Austria
{ regex: uWordBoundaryGroup("(Беларусь|Белоруссия|BELARUS)"), iso3: "BLR", flag: "🇧🇾", priority: 130 }, // Belarus
{ regex: uWordBoundaryGroup("(Brazil|BR|BRA|BRAZIL|SAO\s*PAULO)"), iso3: "BRA", flag: "🇧🇷", priority: 140 }, // Brazil
{ regex: uWordBoundaryGroup("(Bulgaria|BG|BGR|BULGARIA|SOFIA)"), iso3: "BGR", flag: "🇧🇬", priority: 150 }, // Bulgaria
{ regex: uWordBoundaryGroup("(Canada|CA|CAN|CANADA|TORONTO)"), iso3: "CAN", flag: "🇨🇦", priority: 160 }, // Canada
{ regex: uWordBoundaryGroup("(КИТАЙ|China)"), iso3: "CHN", flag: "🇨🇳", priority: 170 }, // China
{ regex: uWordBoundaryGroup("(Czech\s*Republic|CZ|CZE|CZECH|PRAGUE)"), iso3: "CZE", flag: "🇨🇿", priority: 180 }, // Czech Republic
{ regex: uWordBoundaryGroup("(Denmark|DK|DNK|DENMARK|COPENHAGEN)"), iso3: "DNK", flag: "🇩🇰", priority: 190 }, // Denmark
{ regex: uWordBoundaryGroup("(Egypt|EG|EGY|EGYPT|CAIRO)"), iso3: "EGY", flag: "🇪🇬", priority: 200 }, // Egypt
{ regex: uWordBoundaryGroup("(Эстония|EE|EST|ESTONIA|TALLINN)"), iso3: "EST", flag: "🇪🇪", priority: 210 }, // Estonia
{ regex: uWordBoundaryGroup("(Финляндия|FI|FIN|FINLAND|HELSINKI)"), iso3: "FIN", flag: "🇫🇮", priority: 220 }, // Finland
{ regex: uWordBoundaryGroup("(Франция|FR|FRA|FRANCE|PARIS|MARSEILLE)"), iso3: "FRA", flag: "🇫🇷", priority: 230 }, // France
{ regex: uWordBoundaryGroup("(Georgia|GE|GEO|GEORGIA|TBILISI)"), iso3: "GEO", flag: "🇬🇪", priority: 240 }, // Georgia
{ regex: uWordBoundaryGroup("(Германия|DE|DEU|GER(MANY)?|FRANKFURT|BERLIN|MUNICH)"), iso3: "DEU", flag: "🇩🇪", priority: 250 }, // Germany
{ regex: uWordBoundaryGroup("(Гонконг|HK|HKG|HONG\s*KONG)"), iso3: "HKG", flag: "🇭🇰", priority: 260 }, // Hong Kong
{ regex: uWordBoundaryGroup("(India|IN|IND|INDIA|MUMBAI)"), iso3: "IND", flag: "🇮🇳", priority: 270 }, // India
{ regex: uWordBoundaryGroup("(Ireland|IE|IRL|IRELAND|DUBLIN)"), iso3: "IRL", flag: "🇮🇪", priority: 280 }, // Ireland
{ regex: uWordBoundaryGroup("(Israel|IL|ISR|ISRAEL|TEL\s*AVIV)"), iso3: "ISR", flag: "🇮🇱", priority: 290 }, // Israel
{ regex: uWordBoundaryGroup("(Italy|IT|ITA|ITALY|ROME)"), iso3: "ITA", flag: "🇮🇹", priority: 300 }, // Italy
{ regex: uWordBoundaryGroup("(Япония|JP|JPN|JAPAN|TOKYO|OSAKA)"), iso3: "JPN", flag: "🇯🇵", priority: 310 }, // Japan
{ regex: uWordBoundaryGroup("(Kazakhstan|KZ|KAZ|KAZAKHSTAN|ALMATY)"), iso3: "KAZ", flag: "🇰🇿", priority: 320 }, // Kazakhstan
{ regex: uWordBoundaryGroup("(Латвия|LV|LVA|LATVIA|RIGA)"), iso3: "LVA", flag: "🇱🇻", priority: 330 }, // Latvia
{ regex: uWordBoundaryGroup("(Литва|LT|LTU|LITHUANIA|VILNIUS)"), iso3: "LTU", flag: "🇱🇹", priority: 340 }, // Lithuania
{ regex: uWordBoundaryGroup("(Malaysia|MY|MYS|MALAYSIA|KUALA\s*LUMPUR)"), iso3: "MYS", flag: "🇲🇾", priority: 350 }, // Malaysia
{ regex: uWordBoundaryGroup("(Moldova|MD|MDA|MOLDOVA|CHISINAU)"), iso3: "MDA", flag: "🇲🇩", priority: 360 }, // Moldova
{ regex: uWordBoundaryGroup("(Нидерланды|NL|NLD|NETHERLANDS|HOLLAND|AMSTERDAM)"), iso3: "NLD", flag: "🇳🇱", priority: 370 }, // Netherlands
{ regex: uWordBoundaryGroup("(Nigeria|NG|NGA|NIGERIA|LAGOS)"), iso3: "NGA", flag: "🇳🇬", priority: 380 }, // Nigeria
{ regex: uWordBoundaryGroup("(Норвегия|NO|NOR|NORWAY|OSLO)"), iso3: "NOR", flag: "🇳🇴", priority: 390 }, // Norway
{ regex: uWordBoundaryGroup("(Philippines|PH|PHL|PHILIPPINES|MANILA)"), iso3: "PHL", flag: "🇵🇭", priority: 400 }, // Philippines
{ regex: uWordBoundaryGroup("(Польша|PL|POL|POLAND|WARSAW|WARSZAWA)"), iso3: "POL", flag: "🇵🇱", priority: 410 }, // Poland
{ regex: uWordBoundaryGroup("(Portugal|PT|PRT|PORTUGAL|LISBON)"), iso3: "PRT", flag: "🇵🇹", priority: 420 }, // Portugal
{ regex: uWordBoundaryGroup("(Romania|RO|ROU|ROMANIA|BUCHAREST)"), iso3: "ROU", flag: "🇷🇴", priority: 430 }, // Romania
{ regex: uWordBoundaryGroup("(Russia|RU|RUS|RUSSIA|MOSCOW)"), iso3: "RUS", flag: "🇷🇺", priority: 440 }, // Russia
{ regex: uWordBoundaryGroup("(Сингапур|SG|SGP|SINGAPORE)"), iso3: "SGP", flag: "🇸🇬", priority: 200 }, // Singapore
{ regex: uWordBoundaryGroup("(South Korea|Корея|KR|KOR|KOREA|SEOUL)"), iso3: "KOR", flag: "🇰🇷", priority: 450 }, // South Korea
{ regex: uWordBoundaryGroup("(Spain|ES|ESP|SPAIN|MADRID)"), iso3: "ESP", flag: "🇪🇸", priority: 460 }, // Spain
{ regex: uWordBoundaryGroup("(Швеция|SE|SWE|SWEDEN|STOCKHOLM)"), iso3: "SWE", flag: "🇸🇪", priority: 470 }, // Sweden
{ regex: uWordBoundaryGroup("(Швейцария|CH|CHE|SWITZERLAND|Switzerl)"), iso3: "CHE", flag: "🇨🇭", priority: 480 }, // Switzerland
{ regex: uWordBoundaryGroup("(Taiwan|TW|TWN|TAIWAN|TAIPEI)"), iso3: "TWN", flag: "🇹🇼", priority: 490 }, // Taiwan
{ regex: uWordBoundaryGroup("(Thailand|TH|THA|THAILAND|BANGKOK)"), iso3: "THA", flag: "🇹🇭", priority: 500 }, // Thailand
{ regex: uWordBoundaryGroup("(Турция|TR|TUR|TURKEY|ISTANBUL)"), iso3: "TUR", flag: "🇹🇷", priority: 510 }, // Turkey
{ regex: uWordBoundaryGroup("(UAE|United\s*Arab\s*Emirates|AE|ARE|DUBAI)"), iso3: "ARE", flag: "🇦🇪", priority: 520 }, // UAE
{ regex: uWordBoundaryGroup("(Великобритания|Англия|England|UK|GB|GBR|UNITED\s*KINGDOM)"), iso3: "GBR", flag: "🇬🇧", priority: 530 }, // UK
{ regex: uWordBoundaryGroup("(США|USA|US|UNITED\s*STATES|AMERICA|NEW\s*YORK|NYC)"), iso3: "USA", flag: "🇺🇸", priority: 540 }, // USA
{ regex: uWordBoundaryGroup("(Vietnam|VN|VNM|VIETNAM|HANOI)"), iso3: "VNM", flag: "🇻🇳", priority: 500 } // Vietnam
];
// 5) GeoIP mapping (ISO2 -> ISO3 + flag) used only if utils.geoip.lookup(ip) returns ISO2
const ISO2_TO_ISO3 = {
US: { iso3: "USA", flag: "🇺🇸" },
DE: { iso3: "DEU", flag: "🇩🇪" },
NL: { iso3: "NLD", flag: "🇳🇱" },
GB: { iso3: "GBR", flag: "🇬🇧" },
FR: { iso3: "FRA", flag: "🇫🇷" },
PL: { iso3: "POL", flag: "🇵🇱" },
FI: { iso3: "FIN", flag: "🇫🇮" },
SE: { iso3: "SWE", flag: "🇸🇪" },
NO: { iso3: "NOR", flag: "🇳🇴" },
CH: { iso3: "CHE", flag: "🇨🇭" },
EE: { iso3: "EST", flag: "🇪🇪" },
LV: { iso3: "LVA", flag: "🇱🇻" },
LT: { iso3: "LTU", flag: "🇱🇹" },
TR: { iso3: "TUR", flag: "🇹🇷" },
SG: { iso3: "SGP", flag: "🇸🇬" },
JP: { iso3: "JPN", flag: "🇯🇵" },
KR: { iso3: "KOR", flag: "🇰🇷" },
HK: { iso3: "HKG", flag: "🇭🇰" },
};
// 6) Protocol icons (based on proxy.type)
const PROTOCOL_ICONS = {
ss: "",
ssr: "",
vmess: "",
vless: "",
trojan: "",
http: "",
socks5: "",
snell: "",
wireguard: "",
hysteria: "",
hysteria2: "",
tuic: ""
};
const STANDARD_PORTS_BY_TYPE = {
wireguard: new Set(["51820"]),
vless: new Set(["443"]),
trojan: new Set(["443"]),
ss: new Set(["443"]),
};
const PROTOCOL_ICON_DEFAULT = ""; // fallback icon if type is unknown
const METATAG_RULES = {
// Keys are "network/type" OR "/type" (network-agnostic) OR "network/" (type-agnostic)
// Matching priority: exact "network/type" -> "/type" -> "network/" -> default
// 🅶🆃 🆃🆂 🆃🆅 🆆🆅 🆇🆅 🆆🅶 🅽🅸
pairMap: {
"grpc/trojan": "🅶🆃",
"tcp/ss": "🆃🆂‌",
"tcp/vless": "🆃🆅",
"ws/vless": "🆆🆅",
"xhttp/vless": "🆇🆅",
"/wireguard": "🆆🅶‌",
"/naive": "🅽🅸",
},
defaultPair: "▫️", // fallback if nothing matches
includeFallbackText: false, // if true, append "(net/type)" when defaultPair is used
};
// Port formatting: superscript digits with left padding to 4 chars
// 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗
const PORT_FORMAT = {
padLeftTo: 3,
padChar: "0",
fancy: {
"0": "𝟎", "1": "𝟏", "2": "𝟐", "3": "𝟑", "4": "𝟒", "5": "𝟓", "6": "𝟔", "7": "𝟕", "8": "𝟖", "9": "𝟗",
},
};
///////////////////////
// HELPERS
///////////////////////
function normalizeToken(s) {
return String(s || "").trim().toLowerCase();
}
function uWordBoundaryGroup(inner) {
// Match if surrounded by non-letter/non-digit (Unicode-aware)
// We don't use lookbehind for max compatibility.
return new RegExp(`(?:^|[^\\p{L}\\p{N}])(?:${inner})(?=$|[^\\p{L}\\p{N}])`, "iu");
}
function portToFancy(port, type) {
let p = String(port ?? "").trim();
p = p.replace(/[^\d]/g, "");
if (!p) return "";
if (STANDARD_PORTS_BY_TYPE[type]?.has(p)) {
return "";
}
// left pad to fixed width
if (PORT_FORMAT.padLeftTo && p.length < PORT_FORMAT.padLeftTo) {
p = p.padStart(PORT_FORMAT.padLeftTo, PORT_FORMAT.padChar);
}
// map digits
let out = "";
for (const ch of p) out += PORT_FORMAT.fancy[ch] ?? ch;
return out;
}
function buildMetaTag(proxy) {
const net = safeStr(proxy && proxy.network) || "";
const typ = safeStr(proxy && proxy.type) || "";
const port = safeStr(proxy && proxy.port);
const { icon, matched } = metaPairIcon(net, typ);
const portSup = portToFancy(port, typ);
if (icon === METATAG_RULES.defaultPair && METATAG_RULES.includeFallbackText) {
return `${icon}${portSup}(${normalizeToken(net)}/${normalizeToken(typ)})`;
}
return `${icon}${portSup}`;
}
function metaPairIcon(network, type) {
const net = normalizeToken(network);
const typ = normalizeToken(type);
const exact = `${net}/${typ}`;
const typeOnly = `/${typ}`;
const netOnly = `${net}/`;
const m = METATAG_RULES.pairMap;
if (m[exact]) return { icon: m[exact], matched: exact };
if (m[typeOnly]) return { icon: m[typeOnly], matched: typeOnly };
if (m[netOnly]) return { icon: m[netOnly], matched: netOnly };
return { icon: METATAG_RULES.defaultPair, matched: null };
}
function isIPv4(str) {
if (typeof str !== "string") return false;
const m = str.match(/^(\d{1,3})(\.\d{1,3}){3}$/);
if (!m) return false;
return str.split(".").every(oct => {
const n = Number(oct);
return n >= 0 && n <= 255 && String(n) === oct.replace(/^0+(\d)/, "$1"); // avoids "001" weirdness
});
}
function uniq(arr) {
return [...new Set(arr.filter(Boolean))];
}
function sanitizeBaseName(name) {
let s = String(name || "");
// Remove noise patterns
for (const re of NOISE_PATTERNS) s = s.replace(re, " ");
// Collapse spaces
s = s.replace(/\s+/g, " ").trim();
return s;
}
function extractIconTagsAndStrip(name) {
let s = String(name || "");
const tags = [];
for (const r of ICON_RULES) {
if (r.regex.test(s)) {
tags.push(r.icon);
s = s.replace(r.regex, " ");
}
}
for (const t of NAME_NETWORK_TAGS) {
if (t.regex.test(s)) {
tags.push(t.tag);
s = s.replace(t.regex, " ");
}
}
return { stripped: s.replace(/\s+/g, " ").trim(), tags: uniq(tags) };
}
function detectCountryByName(name) {
const n = String(name || "");
// Order by priority, then first match wins
// Fast path: flag emoji
if (n.includes("🇦🇪")) return { iso3: "ARE", flag: "🇦🇪", priority: 1, source: "flag" };
if (n.includes("🇦🇷")) return { iso3: "ARG", flag: "🇦🇷", priority: 2, source: "flag" };
if (n.includes("🇦🇹")) return { iso3: "AUT", flag: "🇦🇹", priority: 3, source: "flag" };
if (n.includes("🇦🇺")) return { iso3: "AUS", flag: "🇦🇺", priority: 4, source: "flag" };
if (n.includes("🇧🇬")) return { iso3: "BGR", flag: "🇧🇬", priority: 5, source: "flag" };
if (n.includes("🇧🇾")) return { iso3: "BLR", flag: "🇧🇾", priority: 6, source: "flag" };
if (n.includes("🇧🇷")) return { iso3: "BRA", flag: "🇧🇷", priority: 7, source: "flag" };
if (n.includes("🇨🇦")) return { iso3: "CAN", flag: "🇨🇦", priority: 8, source: "flag" };
if (n.includes("🇨🇭")) return { iso3: "CHE", flag: "🇨🇭", priority: 9, source: "flag" };
if (n.includes("🇨🇳")) return { iso3: "CHN", flag: "🇨🇳", priority: 10, source: "flag" };
if (n.includes("🇨🇿")) return { iso3: "CZE", flag: "🇨🇿", priority: 11, source: "flag" };
if (n.includes("🇩🇪")) return { iso3: "DEU", flag: "🇩🇪", priority: 12, source: "flag" };
if (n.includes("🇩🇰")) return { iso3: "DNK", flag: "🇩🇰", priority: 13, source: "flag" };
if (n.includes("🇪🇪")) return { iso3: "EST", flag: "🇪🇪", priority: 14, source: "flag" };
if (n.includes("🇪🇬")) return { iso3: "EGY", flag: "🇪🇬", priority: 15, source: "flag" };
if (n.includes("🇪🇸")) return { iso3: "ESP", flag: "🇪🇸", priority: 16, source: "flag" };
if (n.includes("🇫🇮")) return { iso3: "FIN", flag: "🇫🇮", priority: 17, source: "flag" };
if (n.includes("🇫🇷")) return { iso3: "FRA", flag: "🇫🇷", priority: 18, source: "flag" };
if (n.includes("🇬🇧")) return { iso3: "GBR", flag: "🇬🇧", priority: 19, source: "flag" };
if (n.includes("🇬🇪")) return { iso3: "GEO", flag: "🇬🇪", priority: 20, source: "flag" };
if (n.includes("🇭🇰")) return { iso3: "HKG", flag: "🇭🇰", priority: 21, source: "flag" };
if (n.includes("🇮🇪")) return { iso3: "IRL", flag: "🇮🇪", priority: 22, source: "flag" };
if (n.includes("🇮🇱")) return { iso3: "ISR", flag: "🇮🇱", priority: 23, source: "flag" };
if (n.includes("🇮🇳")) return { iso3: "IND", flag: "🇮🇳", priority: 24, source: "flag" };
if (n.includes("🇮🇹")) return { iso3: "ITA", flag: "🇮🇹", priority: 25, source: "flag" };
if (n.includes("🇯🇵")) return { iso3: "JPN", flag: "🇯🇵", priority: 26, source: "flag" };
if (n.includes("🇰🇷")) return { iso3: "KOR", flag: "🇰🇷", priority: 27, source: "flag" };
if (n.includes("🇰🇿")) return { iso3: "KAZ", flag: "🇰🇿", priority: 28, source: "flag" };
if (n.includes("🇱🇹")) return { iso3: "LTU", flag: "🇱🇹", priority: 29, source: "flag" };
if (n.includes("🇱🇻")) return { iso3: "LVA", flag: "🇱🇻", priority: 30, source: "flag" };
if (n.includes("🇲🇩")) return { iso3: "MDA", flag: "🇲🇩", priority: 31, source: "flag" };
if (n.includes("🇲🇾")) return { iso3: "MYS", flag: "🇲🇾", priority: 32, source: "flag" };
if (n.includes("🇳🇬")) return { iso3: "NGA", flag: "🇳🇬", priority: 33, source: "flag" };
if (n.includes("🇳🇱")) return { iso3: "NLD", flag: "🇳🇱", priority: 34, source: "flag" };
if (n.includes("🇳🇴")) return { iso3: "NOR", flag: "🇳🇴", priority: 35, source: "flag" };
if (n.includes("🇵🇭")) return { iso3: "PHL", flag: "🇵🇭", priority: 36, source: "flag" };
if (n.includes("🇵🇱")) return { iso3: "POL", flag: "🇵🇱", priority: 37, source: "flag" };
if (n.includes("🇵🇹")) return { iso3: "PRT", flag: "🇵🇹", priority: 38, source: "flag" };
if (n.includes("🇷🇴")) return { iso3: "ROU", flag: "🇷🇴", priority: 39, source: "flag" };
if (n.includes("🇷🇺")) return { iso3: "RUS", flag: "🇷🇺", priority: 40, source: "flag" };
if (n.includes("🇸🇪")) return { iso3: "SWE", flag: "🇸🇪", priority: 41, source: "flag" };
if (n.includes("🇸🇬")) return { iso3: "SGP", flag: "🇸🇬", priority: 42, source: "flag" };
if (n.includes("🇹🇭")) return { iso3: "THA", flag: "🇹🇭", priority: 43, source: "flag" };
if (n.includes("🇹🇷")) return { iso3: "TUR", flag: "🇹🇷", priority: 44, source: "flag" };
if (n.includes("🇹🇼")) return { iso3: "TWN", flag: "🇹🇼", priority: 45, source: "flag" };
if (n.includes("🇺🇸")) return { iso3: "USA", flag: "🇺🇸", priority: 46, source: "flag" };
if (n.includes("🇻🇳")) return { iso3: "VNM", flag: "🇻🇳", priority: 47, source: "flag" };
const sorted = COUNTRY_RULES.slice().sort((a, b) => a.priority - b.priority);
for (const c of sorted) {
if (c.regex.test(n)) return { iso3: c.iso3, flag: c.flag, priority: c.priority, source: "name" };
}
return null;
}
function detectCountryByGeoIP(server, utils) {
if (!isIPv4(server)) return null;
if (!utils || !utils.geoip || typeof utils.geoip.lookup !== "function") return null;
try {
const geo = utils.geoip.lookup(server);
const iso2 = geo && (geo.country || geo.country_code || geo.iso_code);
if (!iso2 || typeof iso2 !== "string") return null;
const key = iso2.toUpperCase();
const mapped = ISO2_TO_ISO3[key];
if (mapped) return { iso3: mapped.iso3, flag: mapped.flag, priority: 900, source: "geoip" };
// Unknown ISO2: keep something sane
return { iso3: key, flag: "🏳️", priority: 950, source: "geoip" };
} catch (e) {
return null;
}
}
function pad2(n) {
const x = Number(n);
return x < 10 ? `0${x}` : String(x);
}
function safeStr(v) {
return (v === undefined || v === null) ? "" : String(v);
}
///////////////////////
// OPERATOR
///////////////////////
function operator(proxies, targetPlatform, utils) {
// Sub-Store sometimes passes utils as global $utils; sometimes as 3rd arg; sometimes not at all.
// We'll accept any of them without whining.
const U = utils || (typeof $utils !== "undefined" ? $utils : null);
const buckets = Object.create(null);
for (const proxy of proxies) {
const originalName = safeStr(proxy && proxy.name);
// 1) Extract tags (icons) from ORIGINAL name, then strip those keywords out
const iconStage = extractIconTagsAndStrip(originalName);
// 2) Sanitize remaining base name (remove marketing trash, brackets, etc.)
const cleanBase = sanitizeBaseName(iconStage.stripped);
// 3) Detect country (name first, then GeoIP)
const byName = detectCountryByName(originalName);
const byGeo = detectCountryByGeoIP(proxy && proxy.server, U);
const country = byName || byGeo || { iso3: "UNK", flag: "🏴‍☠️", priority: 9999, source: "fallback" };
// 4) Protocol icon (based on type)
const proto = PROTOCOL_ICONS[(proxy && proxy.type) || ""] || PROTOCOL_ICON_DEFAULT;
// 5) Network/type/port tag (from proxy fields)
const metaTag = buildMetaTag(proxy);
// 6) Prepare bucket key
const key = country.iso3;
if (!buckets[key]) {
buckets[key] = {
country,
list: []
};
}
// Keep meta used for sorting and final formatting
buckets[key].list.push({
proxy,
_meta: {
originalName,
cleanBase,
iconTags: iconStage.tags,
proto,
metaTag
}
});
}
// 7) Sort buckets by priority
const bucketKeys = Object.keys(buckets).sort((a, b) => {
return (buckets[a].country.priority || 9999) - (buckets[b].country.priority || 9999);
});
// 8) Sort inside each country bucket and rename with per-country numbering
const result = [];
for (const key of bucketKeys) {
const group = buckets[key];
group.list.sort((A, B) => {
// Tags do not affect numbering: sort only by sanitized base + server:port as tie-breaker
const an = A._meta.cleanBase.toLowerCase();
const bn = B._meta.cleanBase.toLowerCase();
if (an !== bn) return an.localeCompare(bn);
const as = `${safeStr(A.proxy.server)}:${safeStr(A.proxy.port)}`;
const bs = `${safeStr(B.proxy.server)}:${safeStr(B.proxy.port)}`;
return as.localeCompare(bs);
});
for (let i = 0; i < group.list.length; i++) {
const item = group.list[i];
const p = item.proxy;
const num = pad2(i + 1);
const debugSuffix = DEBUG_APPEND_ORIGINAL_NAME
? `${item._meta.originalName}`
: "";
const tagStr = item._meta.iconTags.length ? ` ${item._meta.iconTags.join(" ")}` : "";
p.name = `${group.country.flag}${item._meta.metaTag} ${group.country.iso3}-${num} ${item._meta.proto}${tagStr} ${debugSuffix}`
.replace(/\s+/g, " ")
.trim();
result.push(p);
}
}
return result;
}

View File

@@ -0,0 +1,110 @@
function safeStringify(obj) {
const seen = new WeakSet();
return JSON.stringify(
obj,
(k, v) => {
if (typeof v === "object" && v !== null) {
if (seen.has(v)) return "[Circular]";
seen.add(v);
}
if (typeof v === "function") return `[Function: ${v.name || "anonymous"}]`;
if (typeof v === "bigint") return v.toString();
return v;
},
2
);
}
function pickEnvSample() {
try {
const env = (typeof process !== "undefined" && process && process.env) ? process.env : null;
if (!env) return null;
// only show safe-ish keys, no full dump
const keys = Object.keys(env).sort();
const filtered = keys.filter(k =>
k.toLowerCase().includes("sub") ||
k.toLowerCase().includes("store") ||
k.toLowerCase().includes("script") ||
k.toLowerCase().includes("url") ||
k.toLowerCase().includes("option") ||
k.toLowerCase().includes("param")
);
const sample = {};
for (const k of filtered.slice(0, 50)) sample[k] = env[k];
return { keysCount: keys.length, filteredKeys: filtered.slice(0, 100), sample };
} catch (e) {
return { error: String(e) };
}
}
function getGlobalDollarKeys() {
try {
return Object.getOwnPropertyNames(globalThis).filter(k => k.startsWith("$")).sort();
} catch {
return [];
}
}
// Safe "typeof" probes: never throws even if variable doesn't exist
const probes = {
$content: typeof $content,
$files: typeof $files,
$options: typeof $options,
$params: typeof $params,
$args: typeof $args,
$arguments: typeof $arguments,
$argument: typeof $argument,
$argv: typeof $argv,
$ctx: typeof $ctx,
$context: typeof $context,
$request: typeof $request,
$req: typeof $req,
$url: typeof $url,
$scriptUrl: typeof $scriptUrl,
$script_url: typeof $script_url,
ProxyUtils: typeof ProxyUtils,
produceArtifact: typeof produceArtifact,
process: typeof process,
};
const values = {};
function maybeSet(name, getter) {
try {
const v = getter();
// Avoid huge outputs
if (typeof v === "string") values[name] = v.length > 800 ? v.slice(0, 800) + "…(truncated)" : v;
else values[name] = v;
} catch (e) {
values[name] = { error: String(e) };
}
}
maybeSet("$options", () => (typeof $options !== "undefined" ? $options : null));
maybeSet("$params", () => (typeof $params !== "undefined" ? $params : null));
maybeSet("$args", () => (typeof $args !== "undefined" ? $args : null));
maybeSet("$arguments", () => (typeof $arguments !== "undefined" ? $arguments : null));
maybeSet("$argument", () => (typeof $argument !== "undefined" ? $argument : null));
maybeSet("$ctx", () => (typeof $ctx !== "undefined" ? $ctx : null));
maybeSet("$request", () => (typeof $request !== "undefined" ? $request : null));
maybeSet("$url", () => (typeof $url !== "undefined" ? $url : null));
maybeSet("$scriptUrl", () => (typeof $scriptUrl !== "undefined" ? $scriptUrl : null));
maybeSet("$script_url", () => (typeof $script_url !== "undefined" ? $script_url : null));
maybeSet("$contentPreview", () => (typeof $content === "string" ? $content.slice(0, 300) : $content));
maybeSet("$contentLength", () => (typeof $content === "string" ? $content.length : null));
maybeSet("$files", () => (typeof $files !== "undefined" ? $files : null));
const report = {
probes,
values,
globalDollarKeys: getGlobalDollarKeys(),
envSample: pickEnvSample(),
};
$content = safeStringify(report);

File diff suppressed because one or more lines are too long

2
icons/svg/adaptation.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M18.257,6.671l-9.679,9.679c-0.137,0.138 -0.232,0.312 -0.271,0.502l-1.487,7.085c-0.069,0.329 0.032,0.671 0.269,0.909c0.236,0.239 0.577,0.343 0.906,0.277l7.143,-1.428c0.194,-0.039 0.372,-0.134 0.511,-0.274l9.679,-9.679l-7.071,-7.071Zm1.414,-1.414l7.071,7.071l1.793,-1.792c1.953,-1.953 1.953,-5.119 0,-7.072c0,0 0,0 0,0c-0.938,-0.937 -2.209,-1.464 -3.535,-1.464c-1.327,0 -2.598,0.527 -3.536,1.464l-1.793,1.793Z"/><path d="M3.5,30l24,0c0.828,0 1.5,-0.672 1.5,-1.5c0,-0.828 -0.672,-1.5 -1.5,-1.5l-24,0c-0.828,0 -1.5,0.672 -1.5,1.5c0,0.828 0.672,1.5 1.5,1.5Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

2
icons/svg/adblock-gl.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><path d="M7.775 0a1.8 1.8 0 0 0-1.273.527L.528 6.503A1.8 1.8 0 0 0 0 7.775v8.45c0 .478.19.936.528 1.274l5.974 5.974A1.8 1.8 0 0 0 7.775 24h8.45a1.8 1.8 0 0 0 1.273-.527l5.975-5.974A1.8 1.8 0 0 0 24 16.225v-8.45a1.8 1.8 0 0 0-.527-1.272L17.498.527A1.8 1.8 0 0 0 16.225 0zm4.427 3c1.02 0 .958 1.108.958 1.108v6.784s-.009.218.16.218c.188 0 .175-.226.175-.226l-.002-5.63s-.05-.986.959-.986c1.01 0 .97.983.97.983v7.621s.014.158.141.158c.127 0 .944-2.122.944-2.122s.451-1.497 2.576-1.1c.038.008-.167.688-.167.688l-2.283 6.556S15.69 20.7 11.714 20.7c-5.044 0-4.808-5.407-4.814-5.405V7.562s-.016-.99.897-.99c.858 0 .849.99.849.99l.007 3.583s-.004.172.167.172c.16 0 .141-.172.141-.172l.01-5.926s-.055-1.162.966-1.162c1.04 0 .983 1.142.983 1.142v5.611s-.005.204.152.204c.168 0 .154-.206.154-.206l.01-6.693S11.18 3 12.202 3z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

2
icons/svg/adblock-ru.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><path d="M7.775 0a1.8 1.8 0 0 0-1.273.527L.528 6.503A1.8 1.8 0 0 0 0 7.775v8.45c0 .478.19.936.528 1.274l5.974 5.974A1.8 1.8 0 0 0 7.775 24h8.45a1.8 1.8 0 0 0 1.273-.527l5.975-5.974A1.8 1.8 0 0 0 24 16.225v-8.45a1.8 1.8 0 0 0-.527-1.272L17.498.527A1.8 1.8 0 0 0 16.225 0zm4.427 3c1.02 0 .958 1.108.958 1.108v6.784s-.009.218.16.218c.188 0 .175-.226.175-.226l-.002-5.63s-.05-.986.959-.986c1.01 0 .97.983.97.983v7.621s.014.158.141.158c.127 0 .944-2.122.944-2.122s.451-1.497 2.576-1.1c.038.008-.167.688-.167.688l-2.283 6.556S15.69 20.7 11.714 20.7c-5.044 0-4.808-5.407-4.814-5.405V7.562s-.016-.99.897-.99c.858 0 .849.99.849.99l.007 3.583s-.004.172.167.172c.16 0 .141-.172.141-.172l.01-5.926s-.055-1.162.966-1.162c1.04 0 .983 1.142.983 1.142v5.611s-.005.204.152.204c.168 0 .154-.206.154-.206l.01-6.693S11.18 3 12.202 3z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

5
icons/svg/adobe.svg Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 12.1333C2 8.58633 2 6.81283 2.69029 5.45806C3.29749 4.26637 4.26637 3.29749 5.45806 2.69029C6.81283 2 8.58633 2 12.1333 2H19.8667C23.4137 2 25.1872 2 26.5419 2.69029C27.7336 3.29749 28.7025 4.26637 29.3097 5.45806C30 6.81283 30 8.58633 30 12.1333V19.8667C30 23.4137 30 25.1872 29.3097 26.5419C28.7025 27.7336 27.7336 28.7025 26.5419 29.3097C25.1872 30 23.4137 30 19.8667 30H12.1333C8.58633 30 6.81283 30 5.45806 29.3097C4.26637 28.7025 3.29749 27.7336 2.69029 26.5419C2 25.1872 2 23.4137 2 19.8667V12.1333Z" fill="#E6001F"/>
<path d="M7 23C7 23 13.2207 8.00393 13.2059 8C13.2059 8 13.2059 8 13.2059 8H13.2059H17.9301L25 23L19.6601 23C19.6641 23.0079 15.6563 13.7963 15.606 13.7037C15.5972 13.784 12.9484 19.9491 12.9164 19.9567H15.771C15.758 19.9724 17.0122 22.9714 17.0122 23L7 23Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

12
icons/svg/ai-stuff.svg Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>ai</title>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon" fill="#000000" transform="translate(64.000000, 64.000000)">
<path d="M320,64 L320,320 L64,320 L64,64 L320,64 Z M171.749388,128 L146.817842,128 L99.4840387,256 L121.976629,256 L130.913039,230.977 L187.575039,230.977 L196.319607,256 L220.167172,256 L171.749388,128 Z M260.093778,128 L237.691519,128 L237.691519,256 L260.093778,256 L260.093778,128 Z M159.094727,149.47526 L181.409039,213.333 L137.135039,213.333 L159.094727,149.47526 Z M341.333333,256 L384,256 L384,298.666667 L341.333333,298.666667 L341.333333,256 Z M85.3333333,341.333333 L128,341.333333 L128,384 L85.3333333,384 L85.3333333,341.333333 Z M170.666667,341.333333 L213.333333,341.333333 L213.333333,384 L170.666667,384 L170.666667,341.333333 Z M85.3333333,0 L128,0 L128,42.6666667 L85.3333333,42.6666667 L85.3333333,0 Z M256,341.333333 L298.666667,341.333333 L298.666667,384 L256,384 L256,341.333333 Z M170.666667,0 L213.333333,0 L213.333333,42.6666667 L170.666667,42.6666667 L170.666667,0 Z M256,0 L298.666667,0 L298.666667,42.6666667 L256,42.6666667 L256,0 Z M341.333333,170.666667 L384,170.666667 L384,213.333333 L341.333333,213.333333 L341.333333,170.666667 Z M0,256 L42.6666667,256 L42.6666667,298.666667 L0,298.666667 L0,256 Z M341.333333,85.3333333 L384,85.3333333 L384,128 L341.333333,128 L341.333333,85.3333333 Z M0,170.666667 L42.6666667,170.666667 L42.6666667,213.333333 L0,213.333333 L0,170.666667 Z M0,85.3333333 L42.6666667,85.3333333 L42.6666667,128 L0,128 L0,85.3333333 Z" id="Combined-Shape">
</path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

10
icons/svg/akamai.svg Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -151.5 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M156.165577,152.930719 L135.306318,152.930719 L153.376906,116.343355 L153.6,116.343355 L156.165577,152.930719 L156.165577,152.930719 Z M157.057952,169.551198 L158.284967,184.052288 L181.263617,184.052288 L173.566885,99.611329 L139.322004,99.611329 L96.1533769,184.052288 L119.578214,184.052288 L126.828758,169.551198 L157.057952,169.551198 L157.057952,169.551198 Z M213.389107,147.018736 L216.847059,147.018736 L233.355991,124.820915 L254.438344,124.820915 L231.682789,153.153813 L245.737691,183.829194 L223.205229,183.829194 L214.058388,159.95817 L210.823529,159.95817 L205.692375,183.829194 L186.171678,183.829194 L204.019172,99.7228758 L223.428322,99.7228758 L213.389107,147.018736 Z M279.31329,159.511983 C285.67146,159.511983 289.91024,159.95817 288.683224,164.866231 C287.233115,171.224401 284.667538,172.116776 276.524619,172.116776 C273.512854,172.116776 268.047059,172.116776 269.497168,165.758606 C270.612636,160.404357 274.628322,159.511983 279.31329,159.511983 L279.31329,159.511983 Z M284.667538,183.829194 L303.853595,183.829194 L311.550327,147.018736 C316.0122,126.605664 307.980828,124.263181 288.348584,124.263181 C274.516776,124.263181 261.131155,124.040087 257.115468,142.556863 L276.301525,142.556863 C277.52854,137.202614 280.763399,136.198693 285.448366,136.198693 C293.925926,136.198693 293.702832,139.768192 292.252723,145.12244 L290.356427,154.492375 L289.464052,154.492375 C288.794771,147.688017 280.317211,147.911111 274.739869,147.911111 C260.684967,147.911111 252.430501,152.372985 249.418736,166.427887 C246.183878,181.48671 253.434423,184.721569 266.820044,184.721569 C273.624401,184.721569 282.548148,183.27146 285.783007,175.351634 L286.452288,175.351634 L284.667538,183.829194 L284.667538,183.829194 Z M343.118083,124.820915 L341.44488,133.298475 L342.114161,133.298475 C345.906754,126.271024 353.603486,124.374728 360.184749,124.374728 C368.662309,124.374728 376.805229,125.824837 375.68976,135.864052 L376.582135,135.864052 C379.370806,127.386492 388.07146,124.374728 395.545098,124.374728 C409.153813,124.374728 414.954248,129.95207 411.942484,143.560784 L403.24183,183.940741 L384.055773,183.940741 L391.306318,149.695861 C392.198693,143.337691 393.202614,138.875817 385.95207,138.875817 C378.701525,138.875817 375.912854,143.783878 374.685839,150.142048 L367.658388,183.717647 L348.472331,183.717647 L355.945969,148.022658 C356.838344,142.66841 357.396078,138.875817 350.591721,138.875817 C342.671895,138.875817 340.217865,143.114597 338.879303,150.142048 L331.851852,183.717647 L312.665795,183.717647 L325.382135,124.597821 L343.22963,124.597821 L343.22963,124.820915 L343.118083,124.820915 Z M442.283224,159.511983 C448.641394,159.511983 452.880174,159.95817 451.653159,164.866231 C450.426144,171.224401 447.637473,172.116776 439.494553,172.116776 C436.705882,172.116776 431.016993,172.116776 432.467102,165.758606 C433.582571,160.404357 437.375163,159.511983 442.283224,159.511983 L442.283224,159.511983 Z M447.414379,183.829194 L466.600436,183.829194 L474.297168,147.018736 C478.759041,126.605664 470.727669,124.263181 451.095425,124.263181 C437.263617,124.263181 423.877996,124.040087 419.862309,142.556863 L439.048366,142.556863 C440.275381,137.202614 443.51024,136.198693 448.195207,136.198693 C456.672767,136.198693 456.449673,139.768192 454.999564,145.12244 L453.103268,154.492375 L452.210893,154.492375 C451.541612,147.688017 443.064052,147.911111 437.48671,147.911111 C423.431808,147.911111 415.177342,152.372985 412.165577,166.427887 C408.930719,181.48671 416.181264,184.721569 429.566885,184.721569 C436.371242,184.721569 445.294989,183.27146 448.529847,175.351634 L449.199129,175.351634 L447.414379,183.829194 L447.414379,183.829194 Z M494.821786,183.829194 L475.63573,183.829194 L488.017429,124.709368 L507.203486,124.709368 L494.821786,183.829194 L494.821786,183.829194 Z M511.665359,108.646623 C511.665359,114.558606 506.757298,119.466667 500.845316,119.466667 C494.933333,119.466667 490.025272,114.558606 490.025272,108.646623 C490.025272,102.511547 494.933333,97.8265795 500.845316,97.8265795 C506.757298,97.8265795 511.665359,102.511547 511.665359,108.646623 L511.665359,108.646623 Z" fill="#F79838">
</path>
<path d="M106.192593,204.242266 C63.2470588,191.079739 32.1254902,151.48061 32.1254902,104.854031 C32.1254902,57.4466231 64.0278867,17.6244009 107.642702,4.68496732 C112.104575,3.45795207 110.87756,0.446187364 105.523312,0.446187364 C47.6305011,0.446187364 0.446187364,47.0727669 0.446187364,104.51939 C0.446187364,161.966013 47.2958606,208.592593 105.523312,208.592593 C110.87756,208.927233 111.100654,205.915468 106.192593,204.242266 L106.192593,204.242266 Z M52.0923747,128.948148 C51.869281,126.159477 51.6461874,123.370806 51.6461874,120.470588 C51.6461874,74.7363834 88.6797386,37.7028322 134.413943,37.7028322 C177.582571,37.7028322 190.745098,56.8888889 192.08366,55.7734205 C193.756863,54.3233115 176.355556,16.1742919 125.71329,16.1742919 C79.979085,16.1742919 42.9455338,53.2078431 42.9455338,98.9420479 C42.9455338,109.538998 45.0649237,119.578214 48.5228758,128.948148 C49.9729847,132.963834 52.3154684,132.963834 52.0923747,128.948148 Z M86.5603486,69.3821351 C107.865795,60.0122004 135.083224,59.7891068 161.631373,68.9359477 C179.478867,75.2941176 189.741176,83.9947712 190.745098,83.6601307 C192.195207,82.9908497 180.371242,64.4740741 159.065795,56.4427015 C133.298475,46.8496732 105.634858,51.7577342 85.4448802,67.7089325 C83.2139434,69.3821351 83.8832244,70.6091503 86.5603486,69.3821351 L86.5603486,69.3821351 Z" fill="#0098CC">
</path>

After

Width:  |  Height:  |  Size: 5.7 KiB

2
icons/svg/aliexpress.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="12" d="M162 36v102a24 24 0 0 1-24 24H54a24 24 0 0 1-24-24V36a6 6 0 0 1 6-6h120a6 6 0 0 1 6 6z"/><path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="12" d="M128 56a32 32 0 0 1-16 27.71 32 32 0 0 1-32 0A32 32 0 0 1 64 56"/></svg>

After

Width:  |  Height:  |  Size: 577 B

22
icons/svg/amazon.svg Normal file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Amazon-color</title>
<desc>Created with Sketch.</desc>
<defs>
</defs>
<g id="Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Color-" transform="translate(-601.000000, -560.000000)">
<g id="Amazon" transform="translate(601.000000, 560.000000)">
<path d="M25.4026553,25.9595294 C24.660417,27.4418824 23.3876054,28.3962353 22.0103725,28.7181176 C21.8015298,28.7181176 21.4826213,28.8225882 21.1637129,28.8225882 C18.835399,28.8225882 17.458166,27.0211765 17.458166,24.3727059 C17.458166,20.9788235 19.4703937,19.392 22.0103725,18.6465882 C23.3876054,18.3303529 24.9793255,18.2230588 26.5682233,18.2230588 L26.5682233,19.4964706 C26.5682233,21.9331765 26.6726447,23.8390588 25.4026553,25.9595294 L25.4026553,25.9595294 Z M26.5682233,13.3524706 C25.1909904,13.4569412 23.5992703,13.5614118 22.0103725,13.7703529 C19.574815,14.0922353 17.1392576,14.5157647 15.1298521,15.4701176 C11.2098182,17.0597647 8.55977364,20.4508235 8.55977364,25.4287059 C8.55977364,31.6856471 12.5842289,34.8621176 17.6726531,34.8621176 C19.3659723,34.8621176 20.7432053,34.6475294 22.0103725,34.3341176 C24.0282445,33.696 25.7187415,32.5298824 27.7309692,30.4094118 C28.8965372,31.9990588 29.2182679,32.7444706 31.2276733,34.4385882 C31.7582467,34.6475294 32.28882,34.6475294 32.7093276,34.3341176 C33.9821392,33.2724706 36.208854,31.3637647 37.3715998,30.3049412 C37.9021732,29.8814118 37.7977518,29.2432941 37.4760212,28.7181176 C36.3132753,27.2329412 35.1448851,25.9595294 35.1448851,23.0992941 L35.1448851,13.5614118 C35.1448851,9.53505882 35.4666157,5.82494118 32.5004849,3.072 C30.0649275,0.849882353 26.2493149,0 23.2831841,0 L22.0103725,0 C16.6115064,0.313411765 10.8937319,2.64564706 9.61809814,9.32329412 C9.40643324,10.1731765 10.0442501,10.4894118 10.4675799,10.5938824 L16.3998415,11.3364706 C17.0348362,11.2291765 17.3537447,10.6983529 17.458166,10.1731765 C17.9859172,7.84094118 19.8937235,6.67482353 22.0103725,6.46023529 L22.4365245,6.46023529 C23.7093361,6.46023529 25.086569,6.99105882 25.8259851,8.05270588 C26.6726447,9.32329412 26.5682233,11.0202353 26.5682233,12.5054118 L26.5682233,13.3524706 L26.5682233,13.3524706 Z" fill="#343B45">
</path>
<path d="M47.9943556,35.9463529 L47.9943556,35.9435294 C47.971778,35.4437647 47.8673567,35.0625882 47.658514,34.7463529 L47.6359364,34.7152941 L47.6105366,34.6842353 C47.3988717,34.4527059 47.1956734,34.3651765 46.9755419,34.2691765 C46.3179696,34.0150588 45.3612442,33.8795294 44.2097872,33.8767059 C43.382883,33.8767059 42.4713128,33.9557647 41.5540982,34.1562353 L41.551276,34.0941176 L40.6284171,34.4018824 L40.6114839,34.4103529 L40.0893771,34.5797647 L40.0893771,34.6023529 C39.47696,34.8564706 38.9209869,35.1727059 38.4045245,35.5482353 C38.0827939,35.7882353 37.8175072,36.1072941 37.8033962,36.5957647 C37.7949296,36.8611765 37.9303952,37.1661176 38.1533489,37.3468235 C38.3763025,37.5275294 38.6359448,37.5896471 38.8645429,37.5896471 C38.9181647,37.5896471 38.9689643,37.5868235 39.0141194,37.5783529 L39.0592746,37.5755294 L39.093141,37.5698824 C39.5446928,37.4738824 40.2022651,37.4089412 40.9727253,37.3016471 C41.6331198,37.2282353 42.3330251,37.1745882 42.9397978,37.1745882 C43.368772,37.1717647 43.7554132,37.2028235 44.0206999,37.2592941 C44.1533432,37.2875294 44.2521202,37.3214118 44.3057419,37.3496471 C44.3254973,37.3552941 44.3396083,37.3637647 44.3480749,37.3694118 C44.3593637,37.4061176 44.3762969,37.5021176 44.3734747,37.6348235 C44.3791191,38.1430588 44.164632,39.0861176 43.8683012,40.0065882 C43.5804369,40.9270588 43.2304843,41.8503529 42.999064,42.4630588 C42.94262,42.6042353 42.9059314,42.7595294 42.9059314,42.9289412 C42.900287,43.1745882 43.0018862,43.4738824 43.2163733,43.6715294 C43.425216,43.8691765 43.696147,43.9482353 43.9219229,43.9482353 L43.9332117,43.9482353 C44.2718756,43.9454118 44.5597398,43.8098824 44.8080933,43.6150588 C47.1505182,41.5087059 47.9661336,38.1430588 48,36.2484706 L47.9943556,35.9463529 Z M41.0489247,38.8658824 C40.8090378,38.8630588 40.5635065,38.9195294 40.3349084,39.0268235 C40.0780883,39.1284706 39.8156239,39.2470588 39.5672704,39.3515294 L39.2032068,39.504 L38.7290774,39.6931765 L38.7290774,39.6988235 C33.5785648,41.7882353 28.16841,43.0136471 23.1618295,43.1209412 C22.9783866,43.1265882 22.7921215,43.1265882 22.614323,43.1265882 C14.7403887,43.1322353 8.31706456,39.4785882 1.83729642,35.8785882 C1.61152053,35.76 1.37727804,35.6978824 1.15150215,35.6978824 C0.860815683,35.6978824 0.561662624,35.808 0.344353327,36.0112941 C0.12704403,36.2174118 -0.00277710907,36.5138824 4.50895989e-05,36.816 C-0.00277710907,37.2084706 0.208887791,37.5698824 0.505218651,37.8042353 C6.58705678,43.0870588 13.25309,47.9943529 22.2192152,48 C22.3941915,48 22.57199,47.9943529 22.7497885,47.9915294 C28.453452,47.8644706 34.902176,45.936 39.9087564,42.7905882 L39.9398006,42.7708235 C40.5945507,42.3783529 41.2493008,41.9322353 41.8673623,41.4381176 C42.2511813,41.1529412 42.516468,40.7068235 42.516468,40.2437647 C42.4995348,39.4221176 41.8024517,38.8658824 41.0489247,38.8658824 Z" id="Fill-237" fill="#FF9A00">
</path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

8
icons/svg/anime.svg Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
<path d="M38.892 14.296C26.973 19.323 15.061 32.693 15.01 41.102c-.009 1.359-2.437 8.367-13.59 39.218L.039 84.141l27.731-.321c31.091-.359 32.628-.667 41.006-8.237 18.829-17.01 3.415-50.678-20.822-45.48-20.01 4.292-21.144 34.431-1.379 36.658 12.603 1.421 18.192-11.422 8.707-20.006-1.841-1.666-2.037-1.62-4.623 1.079-2.699 2.817-2.699 2.82-.68 4.647 4.522 4.092 1.159 8.906-4.439 6.355-6.306-2.873-7.474-12.102-2.199-17.377 13.386-13.386 34.151 8.644 23.31 24.731-16.699 24.779-55.114-1.28-42.293-28.69 8.743-18.692 31.564-23.429 50.15-10.41l5.702 3.995 7.395-5.566c8.152-6.136 8.232-6.278 5.458-9.658-2.098-2.557-1.74-2.656-8.938 2.474l-3.978 2.835-8.663-4.293c-11.285-5.592-23.213-6.537-32.592-2.581M16 62.281c0 .371-1.105 3.609-2.455 7.196L11.09 76h15.259l-2.071-2.25c-1.138-1.237-3.467-4.476-5.174-7.196C17.397 63.834 16 61.911 16 62.281" fill-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 256 245" enable-background="new 0 0 256 245" xml:space="preserve">
<path d="M192.498,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S183.22,113.8,192.498,113.8z
M171.798,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S162.52,155.6,171.798,155.6z
M144.998,192.3h-18.9h-18.9c-11.5,0-18.7,9.5-18.7,21.4V243h12.9v-25.9c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8
c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9v-29.1C163.998,201.8,156.698,192.3,144.998,192.3z M149.698,113.8
c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S140.42,113.8,149.698,113.8z M199.098,172.4
c0,9.3,7.5,16.8,16.8,16.8s16.8-7.5,16.8-16.8s-7.5-16.8-16.8-16.8S199.098,163.1,199.098,172.4z M197.398,192.3
c-11.5,0-18.7,9.5-18.7,21.4V243h12.9v-25.9c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9
v-29.1c0.2-12.1-7.1-21.6-18.7-21.6h-18.9h-19V192.3z M39.798,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8
s-16.8-7.522-16.8-16.8S30.52,155.6,39.798,155.6z M14.798,242.9v-25.8c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8
c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9v-29.1c0.2-12.1-7.1-21.6-18.7-21.6h-18.9h-18.9c-11.5,0-18.7,9.5-18.7,21.4v29.3
L14.798,242.9L14.798,242.9z M109.298,172.4c0,9.3,7.5,16.8,16.8,16.8c9.3,0,16.8-7.5,16.8-16.8s-7.5-16.8-16.8-16.8
S109.298,163.1,109.298,172.4z M61.298,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S52.02,113.8,61.298,113.8z M106.698,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S97.42,113.8,106.698,113.8z M84.098,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S74.82,155.6,84.098,155.6z M79.452,71.321l-5.277,0.035V9.068h-8.519V77h53.043c-4.858-2.158-16.146-5.679-37.989-5.679H79.452z
M84.502,2h-0.009c-3.11,0-5.076,0.079-5.076,0.079s0,53.952,0,64h1.311c34.538,0,44.341,8.519,44.341,8.519s0-53.078,0-63.563
C119.494,2.917,95.196,2,84.502,2z M175.29,71.321c-21.843,0-33.131,3.521-37.989,5.679h53.043V9.068h-8.519v62.287l-5.277-0.035
H175.29z M130.931,11.034c0,10.485,0,63.563,0,63.563s9.803-8.519,44.341-8.519h1.311c0-10.048,0-64,0-64S174.617,2,171.507,2
h-0.009C160.804,2,136.506,2.917,130.931,11.034z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,5 +1,24 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.8809 10C14.2609 10 12.1309 12.13 12.1309 14.75C12.1309 15.64 12.3809 16.48 12.8209 17.2C13.6409 18.58 15.1509 19.5 16.8809 19.5C18.6109 19.5 20.1209 18.57 20.9409 17.2C21.3809 16.49 21.6309 15.64 21.6309 14.75C21.6309 12.13 19.5109 10 16.8809 10ZM18.6809 16.52C18.5309 16.67 18.3409 16.74 18.1509 16.74C17.9609 16.74 17.7709 16.67 17.6209 16.52L16.9009 15.8L16.1509 16.55C16.0009 16.7 15.8109 16.77 15.6209 16.77C15.4309 16.77 15.2409 16.7 15.0909 16.55C14.8009 16.26 14.8009 15.78 15.0909 15.49L15.8409 14.74L15.1209 14.01C14.8309 13.72 14.8309 13.24 15.1209 12.95C15.4109 12.66 15.8909 12.66 16.1809 12.95L16.9009 13.67L17.6009 12.97C17.8909 12.68 18.3709 12.68 18.6609 12.97C18.9509 13.26 18.9509 13.74 18.6609 14.03L17.9609 14.73L18.6809 15.46C18.9809 15.75 18.9809 16.23 18.6809 16.52Z" fill="#292D32"/>
<path d="M20.5799 4.02V6.24C20.5799 7.05 20.0799 8.06 19.5799 8.57L19.3999 8.73C19.2599 8.86 19.0499 8.89 18.8699 8.83C18.6699 8.76 18.4699 8.71 18.2699 8.66C17.8299 8.55 17.3599 8.5 16.8799 8.5C13.4299 8.5 10.6299 11.3 10.6299 14.75C10.6299 15.89 10.9399 17.01 11.5299 17.97C12.0299 18.81 12.7299 19.51 13.4899 19.98C13.7199 20.13 13.8099 20.45 13.6099 20.63C13.5399 20.69 13.4699 20.74 13.3999 20.79L11.9999 21.7C10.6999 22.51 8.90992 21.6 8.90992 19.98V14.63C8.90992 13.92 8.50992 13.01 8.10992 12.51L4.31992 8.47C3.81992 7.96 3.41992 7.05 3.41992 6.45V4.12C3.41992 2.91 4.31992 2 5.40992 2H18.5899C19.6799 2 20.5799 2.91 20.5799 4.02Z" fill="#292D32"/>
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 256 245" enable-background="new 0 0 256 245" xml:space="preserve">
<path d="M192.498,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S183.22,113.8,192.498,113.8z
M171.798,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S162.52,155.6,171.798,155.6z
M144.998,192.3h-18.9h-18.9c-11.5,0-18.7,9.5-18.7,21.4V243h12.9v-25.9c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8
c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9v-29.1C163.998,201.8,156.698,192.3,144.998,192.3z M149.698,113.8
c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8S140.42,113.8,149.698,113.8z M199.098,172.4
c0,9.3,7.5,16.8,16.8,16.8s16.8-7.5,16.8-16.8s-7.5-16.8-16.8-16.8S199.098,163.1,199.098,172.4z M197.398,192.3
c-11.5,0-18.7,9.5-18.7,21.4V243h12.9v-25.9c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9
v-29.1c0.2-12.1-7.1-21.6-18.7-21.6h-18.9h-19V192.3z M39.798,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8
s-16.8-7.522-16.8-16.8S30.52,155.6,39.798,155.6z M14.798,242.9v-25.8c0-1.2,1-2,2-2c1.2,0,2,0.8,2,2v25.8h41.5v-25.8
c0-1.2,1-2,2-2c1.2,0,2,1,2,2v25.8h12.9v-29.1c0.2-12.1-7.1-21.6-18.7-21.6h-18.9h-18.9c-11.5,0-18.7,9.5-18.7,21.4v29.3
L14.798,242.9L14.798,242.9z M109.298,172.4c0,9.3,7.5,16.8,16.8,16.8c9.3,0,16.8-7.5,16.8-16.8s-7.5-16.8-16.8-16.8
S109.298,163.1,109.298,172.4z M61.298,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S52.02,113.8,61.298,113.8z M106.698,113.8c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S97.42,113.8,106.698,113.8z M84.098,155.6c9.278,0,16.8,7.522,16.8,16.8s-7.522,16.8-16.8,16.8s-16.8-7.522-16.8-16.8
S74.82,155.6,84.098,155.6z M79.452,71.321l-5.277,0.035V9.068h-8.519V77h53.043c-4.858-2.158-16.146-5.679-37.989-5.679H79.452z
M84.502,2h-0.009c-3.11,0-5.076,0.079-5.076,0.079s0,53.952,0,64h1.311c34.538,0,44.341,8.519,44.341,8.519s0-53.078,0-63.563
C119.494,2.917,95.196,2,84.502,2z M175.29,71.321c-21.843,0-33.131,3.521-37.989,5.679h53.043V9.068h-8.519v62.287l-5.277-0.035
H175.29z M130.931,11.034c0,10.485,0,63.563,0,63.563s9.803-8.519,44.341-8.519h1.311c0-10.048,0-64,0-64S174.617,2,171.507,2
h-0.009C160.804,2,136.506,2.917,130.931,11.034z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#17C9FB" offset="0%">
</stop>
<stop stop-color="#1A74E8" offset="100%">
</stop>
</linearGradient>
</defs>
<g>
<path d="M56.0638473,0 L199.936153,0 C230.899361,-6.57084692e-15 256,25.1006394 256,56.0638473 L256,199.936153 C256,230.899361 230.899361,256 199.936153,256 L56.0638473,256 C25.1006394,256 0,230.899361 0,199.936153 L0,56.0638473 C0,25.1006394 25.1006394,6.57084692e-15 56.0638473,0 Z" fill="url(#linearGradient-1)">
</path>
<path d="M82.041678,185.810289 L82.0657467,185.817889 L73.3130924,200.977891 C70.1182861,206.51167 63.0418283,208.407779 57.5080489,205.212719 C51.9745229,202.018166 50.0784142,194.941709 53.2732205,189.407929 L59.7211046,178.240042 L60.3397975,177.16835 C61.4449319,175.579561 64.1720448,172.838767 69.6270308,173.353838 C69.6270308,173.353838 82.4637674,174.747037 83.3925667,181.418887 C83.3928201,181.418887 83.5194976,183.614461 82.041678,185.810289 L82.041678,185.810289 Z M206.18511,147.089287 L178.890925,147.089287 C177.032313,146.96489 176.22031,146.3011 175.901843,145.915241 L175.881574,145.880024 L146.663918,95.2738878 L146.626168,95.2992233 L144.873712,92.786702 C142.002187,88.3953002 137.442051,99.6272864 137.442051,99.6272864 C131.997452,112.142769 138.21453,126.372451 140.382488,130.673152 L180.963875,200.962183 C184.158428,206.495962 191.234886,208.392071 196.768665,205.197011 C202.302191,202.002458 204.1983,194.926001 201.003494,189.392221 L190.855613,171.815973 C190.659263,171.390337 190.316981,170.233771 192.398038,170.229211 L206.18511,170.229211 C212.574975,170.229211 217.755071,165.049115 217.755071,158.659249 C217.755071,152.269383 212.574975,147.089287 206.18511,147.089287 Z M153.171088,162.818324 C153.171088,162.818324 154.627879,170.228957 148.99073,170.228957 L143.353582,170.228957 L143.353582,170.229211 L48.0918579,170.229211 C41.701992,170.229211 36.5218962,165.049115 36.5218962,158.659249 C36.5218962,152.269383 41.701992,147.089287 48.0918579,147.089287 L74.0318604,147.089287 C78.2198182,146.846573 79.2127163,144.42906 79.2127163,144.42906 L79.2355183,144.440715 L113.095904,85.7925846 L113.08577,85.7905577 C113.703196,84.6575543 113.189139,83.5871295 113.099704,83.417635 L101.917376,64.0494072 C98.7223163,58.5156278 100.618425,51.4394233 106.152204,48.244617 C111.685984,45.0495574 118.761935,46.9456661 121.956994,52.4794455 L127.143171,61.4623995 L132.320226,52.4954068 C135.515033,46.9616274 142.591237,45.0655188 148.125016,48.2605784 C153.658796,51.455638 155.554904,58.5318425 152.359845,64.0653685 L105.242153,145.675313 C105.036176,146.172142 104.97309,146.951969 106.505888,147.089287 L134.670094,147.089287 L134.676174,147.363671 C134.676174,147.363671 150.954231,147.617026 153.171088,162.818324 Z" fill="#FFFFFF" fill-rule="nonzero">

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg xmlns="http://www.w3.org/2000/svg"
aria-label="Apple Music" role="img"
viewBox="0 0 512 512"><rect
width="512" height="512"
rx="15%" fill="url(#g)"/><linearGradient id="g" x1=".5" y1=".99" x2=".5" y2=".02"><stop offset="0" stop-color="#FA233B"/><stop offset="1" stop-color="#FB5C74"/></linearGradient><path fill="#ffffff" d="M199 359V199q0-9 10-11l138-28q11-2 12 10v122q0 15-45 20c-57 9-48 105 30 79 30-11 35-40 35-69V88s0-20-17-15l-170 35s-13 2-13 18v203q0 15-45 20c-57 9-48 105 30 79 30-11 35-40 35-69"/></svg>

After

Width:  |  Height:  |  Size: 636 B

19
icons/svg/apple.svg Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="-1.5 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>apple [#173]</title>
<desc>Created with Sketch.</desc>
<defs>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Dribbble-Light-Preview" transform="translate(-102.000000, -7439.000000)" fill="#000000">
<g id="icons" transform="translate(56.000000, 160.000000)">
<path d="M57.5708873,7282.19296 C58.2999598,7281.34797 58.7914012,7280.17098 58.6569121,7279 C57.6062792,7279.04 56.3352055,7279.67099 55.5818643,7280.51498 C54.905374,7281.26397 54.3148354,7282.46095 54.4735932,7283.60894 C55.6455696,7283.69593 56.8418148,7283.03894 57.5708873,7282.19296 M60.1989864,7289.62485 C60.2283111,7292.65181 62.9696641,7293.65879 63,7293.67179 C62.9777537,7293.74279 62.562152,7295.10677 61.5560117,7296.51675 C60.6853718,7297.73474 59.7823735,7298.94772 58.3596204,7298.97372 C56.9621472,7298.99872 56.5121648,7298.17973 54.9134635,7298.17973 C53.3157735,7298.17973 52.8162425,7298.94772 51.4935978,7298.99872 C50.1203933,7299.04772 49.0738052,7297.68074 48.197098,7296.46676 C46.4032359,7293.98379 45.0330649,7289.44985 46.8734421,7286.3899 C47.7875635,7284.87092 49.4206455,7283.90793 51.1942837,7283.88393 C52.5422083,7283.85893 53.8153044,7284.75292 54.6394294,7284.75292 C55.4635543,7284.75292 57.0106846,7283.67793 58.6366882,7283.83593 C59.3172232,7283.86293 61.2283842,7284.09893 62.4549652,7285.8199 C62.355868,7285.8789 60.1747177,7287.09489 60.1989864,7289.62485" id="apple-[#173]">
</path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="-26 0 308 308" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<g transform="translate(165.000000, 48.000000)">
<path d="M1.01,79.465 L60.2123978,73.1509144 L90.888,79.52 L90.999,79.588 L34.441,82.962 L0.957,79.52 L1.01,79.465 L1.01,79.465 Z" fill="#5E1F18">
</path>
<path d="M0.958,79.521 L60.162,74.896 L60.569,74.303 L60.571,1.259 L60.164,0.424 L0.958,15.821 L0.958,79.521" fill="#8C3123">
</path>
<path d="M91,79.59 L60.162,74.896 L60.164,0.424 L90.999,15.852 L91,79.59" fill="#E05243">
</path>
</g>
<g transform="translate(165.000000, 176.000000)">
<path d="M0.958,4.115 L1.823,4.721 L60.172,8.68 L89.944,4.721 L90.999,4.142 L34.442,0.667 L0.958,4.115" fill="#F2B0A9">
</path>
<path d="M0.958,4.115 L60.172,8.52 L60.355,8.766 L60.31,82.708 L60.164,83.094 L0.958,67.819 L0.958,4.115" fill="#8C3123">
</path>
<path d="M90.999,4.142 L60.172,8.52 L60.164,83.094 L90.999,67.785 L90.999,4.142" fill="#E05243">
</path>
</g>
<g transform="translate(0.000000, 48.000000)">
<path d="M89.119,79.408 L30.5886718,74.3941406 L0.195,79.439 L0.002,79.59 L56.559,82.964 L89.433,79.588 L89.119,79.408 Z" fill="#5E1F18">
</path>
<path d="M0.002,79.59 L30.559,75.116 L31.458,74.479 L31.458,1.279 L30.559,0.424 L0.002,15.855 L0.002,79.59" fill="#8C3123">
</path>
<path d="M89.433,79.588 L30.559,75.116 L30.559,0.424 L89.436,15.821 L89.433,79.588" fill="#E05243">
</path>
</g>
<g transform="translate(0.000000, 176.000000)">
<path d="M89.433,4.142 L88.082,5.127 L30.559,9.44 L0.976,5.127 L0,4.142 L56.559,0.667 L89.433,4.142" fill="#F2B0A9">
</path>
<path d="M0,4.142 L30.558,8.482 L31.335,9.434 L31.418,81.767 L30.559,83.094 L0.002,67.785 L0,4.142" fill="#8C3123">
</path>
<path d="M89.433,4.142 L30.558,8.482 L30.559,83.094 L89.433,67.819 L89.433,4.142" fill="#E05243">
</path>
</g>
<g transform="translate(66.000000, 183.000000)">
<path d="M123.104,6.66 L62.001,0.634 L0.289,6.661 L1.159,7.396 L61.7,17.013 L122.233,7.396 L123.104,6.66" fill="#F2B0A9">
</path>
<path d="M0.289,6.661 L61.7,15.659 L62.323,16.492 L62.402,123.451 L61.7,124.637 L0.289,93.931 L0.289,6.661" fill="#8C3123">

After

Width:  |  Height:  |  Size: 2.9 KiB

5
icons/svg/azure.svg Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#0078d4"/>
<path d="M729.08 730.5a33.88 33.88 0 0 0 32.13-44.76L623.89 279.07A33.88 33.88 0 0 0 591.81 256H432.17a33.88 33.88 0 0 0-32.09 23.07L262.8 685.76a33.88 33.88 0 0 0 32.13 44.74h99.16a33.88 33.88 0 0 0 32.11-23.07l20.44-60.49 103.46 76.87a33.85 33.85 0 0 0 20.21 6.69M505.8 468.4 581.6 693a11.29 11.29 0 0 1-10.67 14.91h-.63a11.29 11.29 0 0 1-6.74-2.22L369.32 561.38h101.51m132 146.54a33.54 33.54 0 0 0 .15-22.13L465.77 279.07l-.15-.42h126.21a11.29 11.29 0 0 1 10.71 7.66L739.79 693a11.29 11.29 0 0 1-7.07 14.31" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 813 B

5
icons/svg/cloudflare.svg Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#f38020"/>
<path d="M608.2 592.4c3.1-10.8 1.9-20.7-3.3-28.1-4.8-6.7-12.9-10.6-22.6-11.1l-184.7-2.4c-1.1 0-2.2-.6-2.8-1.5-.6-.9-.7-2.1-.4-3.3.6-1.8 2.4-3.2 4.3-3.3l186.4-2.4c22.1-1 46.1-18.9 54.5-40.8l10.6-27.8c.5-1.2.6-2.4.3-3.6-12-54.3-60.5-94.8-118.4-94.8-53.4 0-98.7 34.5-114.9 82.4-10.5-7.8-23.9-12-38.3-10.6-25.7 2.5-46.2 23.1-48.8 48.8-.6 6.6-.1 13.1 1.4 19.1-41.9 1.2-75.3 35.4-75.3 77.6 0 3.7.3 7.5.8 11.2.3 1.8 1.8 3.1 3.6 3.1h340.9c1.9 0 3.8-1.4 4.3-3.3l2.4-9.2zM667 473.7c-1.6 0-3.4 0-5.1.2-1.2 0-2.2.9-2.7 2.1l-7.2 25c-3.1 10.8-2 20.7 3.3 28.1 4.8 6.7 12.9 10.6 22.7 11.1l39.3 2.4c1.2 0 2.3.6 2.8 1.5.6.9.7 2.3.5 3.3-.6 1.8-2.4 3.2-4.4 3.3l-41 2.4c-22.2 1-46 18.9-54.5 40.8l-3 7.6c-.6 1.5.5 3 2.1 3h140.8c1.6 0 3.1-1 3.6-2.7 2.4-8.7 3.7-17.9 3.7-27.3 0-55.5-45.3-100.8-101-100.8" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" ?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" id="_x3C_Layer_x3E_" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style type="text/css">
<![CDATA[
.st0{fill:none;stroke:#455A64;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st1{fill:none;stroke:#263238;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
]]>
</style>
<g id="Ethereum_x2C__crypto_x2C__cryptocurrency_3_">
<g id="XMLID_206_">
<polyline class="st1" id="XMLID_215_" points="9.5,16 16,5.17 22.5,16 16,26.83 "/>
<line class="st1" id="XMLID_214_" x1="16" x2="9.5" y1="26.83" y2="16"/>
<line class="st1" id="XMLID_211_" x1="17.99" x2="22.5" y1="13.74" y2="16"/>

After

Width:  |  Height:  |  Size: 1.3 KiB

4
icons/svg/cursor.svg Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.46447 3.46447C2 4.92893 2 7.28595 2 12C2 16.714 2 19.0711 3.46447 20.5355C4.92893 22 7.28595 22 12 22C16.714 22 19.0711 22 20.5355 20.5355C22 19.0711 22 16.714 22 12C22 7.28595 22 4.92893 20.5355 3.46447C19.0711 2 16.714 2 12 2C7.28595 2 4.92893 2 3.46447 3.46447ZM12.3975 14.0385L14.859 16.4999C15.1138 16.7548 15.2413 16.8822 15.3834 16.9411C15.573 17.0196 15.7859 17.0196 15.9755 16.9411C16.1176 16.8822 16.2451 16.7548 16.4999 16.4999C16.7548 16.2451 16.8822 16.1176 16.9411 15.9755C17.0196 15.7859 17.0196 15.573 16.9411 15.3834C16.8822 15.2413 16.7548 15.1138 16.4999 14.859L14.0385 12.3975L14.7902 11.6459C15.5597 10.8764 15.9444 10.4916 15.8536 10.0781C15.7628 9.66451 15.2522 9.47641 14.231 9.10019L10.8253 7.84544C8.78816 7.09492 7.7696 6.71966 7.24463 7.24463C6.71966 7.7696 7.09492 8.78816 7.84544 10.8253L9.10019 14.231C9.47641 15.2522 9.66452 15.7628 10.0781 15.8536C10.4916 15.9444 10.8764 15.5597 11.6459 14.7902L12.3975 14.0385Z" fill="#1C274C"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

6
icons/svg/dropbox.svg Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="16" cy="16" r="14" fill="#0F287F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 8L6 11L11 14L6 17L11 20L16 17L21 20L26 17L21 14L26 11L21 8L16 11L11 8ZM16 11L21 14L16 17L11 14L16 11Z" fill="#DAF8FE"/>
<path d="M11 22L16 19L21 22L16 25L11 22Z" fill="#DAF8FE"/>
</svg>

After

Width:  |  Height:  |  Size: 507 B

10
icons/svg/ebay.svg Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -18 60 60" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path fill="#E53238" fill-rule="nonzero" d="M7.7732896,5.21819068 C3.5441438,5.21819068 0.019999394,6.99757845 0.019999394,12.3659101 C0.019999394,16.6188107 2.3897314,19.297032 7.8824908,19.297032 C14.3477258,19.297032 14.7621708,15.0733795 14.7621708,15.0733795 L11.6294594,15.0733795 C11.6294594,15.0733795 10.9577798,17.347654 7.6913886,17.347654 C5.0310022,17.347654 3.117548,15.5653377 3.117548,13.067162 L15.0897746,13.067162 L15.0897746,11.4995199 C15.0897746,9.02803874 13.5077606,5.21819068 7.7732896,5.21819068 L7.7732896,5.21819068 Z M7.6640882,7.22171802 C10.1965006,7.22171802 11.9229378,8.76030585 11.9229378,11.0663246 L3.1868362,11.0663246 C3.1868362,8.61820364 5.4402766,7.22171802 7.6640882,7.22171802 L7.6640882,7.22171802 Z"/>
<path fill="#0064D2" fill-rule="nonzero" d="M15.0875524,0.0198491484 L15.0875524,16.6010769 C15.0875524,17.5422799 15.019817,18.863837 15.019817,18.863837 L18.0077636,18.863837 C18.0077636,18.863837 18.1150112,17.914676 18.1150112,17.0472353 C18.1150112,17.0472353 19.5912498,19.337644 23.605252,19.337644 C27.832158,19.337644 30.703334,16.4272941 30.703334,12.2576112 C30.703334,8.3786154 28.066066,5.25880264 23.612076,5.25880264 C19.441229,5.25880264 18.145188,7.49246499 18.145188,7.49246499 L18.145188,0.0198491484 L15.0875524,0.0198491484 Z M22.840842,7.30971074 C25.71124,7.30971074 27.536498,9.42243689 27.536498,12.2576112 C27.536498,15.2978212 25.428386,17.2867359 22.861318,17.2867359 C19.7977472,17.2867359 18.145188,14.9144815 18.145188,12.284686 C18.145188,9.83422909 19.6280778,7.30971074 22.840842,7.30971074 Z"/>
<path fill="#F5AF02" fill-rule="nonzero" d="M38.12902,5.21819068 C31.76659,5.21819068 31.358542,8.67315451 31.358542,9.22524555 L34.525378,9.22524555 C34.525378,9.22524555 34.691446,7.20818063 37.910618,7.20818063 C40.002488,7.20818063 41.623462,8.15774975 41.623462,9.98333693 L41.623462,10.6331296 L37.910618,10.6331296 C32.981554,10.6331296 30.37573,12.0631587 30.37573,14.9650808 C30.37573,17.820989 32.783428,19.3748717 36.037134,19.3748717 C40.47143,19.3748717 41.899876,16.944918 41.899876,16.944918 C41.899876,17.9114206 41.975012,18.863837 41.975012,18.863837 L44.790298,18.863837 C44.790298,18.863837 44.681096,17.6832871 44.681096,16.9279962 L44.681096,10.3996104 C44.681096,6.11903722 41.199594,5.21819068 38.12902,5.21819068 L38.12902,5.21819068 Z M41.623462,12.5825076 L41.623462,13.4488979 C41.623462,14.5789069 40.920356,17.388266 36.781068,17.388266 C34.514408,17.388266 33.542568,16.2663838 33.542568,14.9650808 C33.542568,12.5977539 36.815324,12.5825076 41.623462,12.5825076 L41.623462,12.5825076 Z"/>
<polygon fill="#86B817" fill-rule="nonzero" points="42.976 5.76 46.538 5.76 51.651 15.919 56.753 5.76 59.98 5.76 50.688 23.846 47.303 23.846 49.984 18.804"/>
</g>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#ff4747"/>
<path d="M625.6 355.9 490.8 570.5H341.3l34.5-53.8h89.6l34.2-53.8H292.5l-34.2 53.8h49.1l-68.1 107.4h284.1l104.9-165.5 38.3 58.1h-34.5l-32.7 53.8h102.2l35.5 53.6h65.2L625.6 355.9zm-45.1-.5H360.1l-33.4 53.8h220.2l33.6-53.8z" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 524 B

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 32 32" xml:space="preserve">
<path d="M12,8c-3.3,0-6,2.7-6,6s2.7,6,6,6s6-2.7,6-6S15.3,8,12,8z M12,13c-0.3,0-0.6,0.1-0.7,0.3c-0.2,0.2-0.5,0.3-0.7,0.3
c-0.2,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1-0.1-1.4c0.6-0.6,1.4-1,2.2-1c0.6,0,1,0.4,1,1S12.6,13,12,13z"/>
<g>
<path d="M4,27c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1s1,0.4,1,1v3C5,26.6,4.6,27,4,27z"/>
</g>
<g>
<path d="M28,27c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1s1,0.4,1,1v3C29,26.6,28.6,27,28,27z"/>
</g>
<path d="M22,17h9v-4c0-0.6-0.4-1-1-1H19.7c0.2,0.6,0.3,1.3,0.3,2c0,4.4-3.6,8-8,8s-8-3.6-8-8c0-0.7,0.1-1.4,0.3-2H2
c-0.6,0-1,0.4-1,1v10c0,0.6,0.4,1,1,1h28c0.6,0,1-0.4,1-1v-4h-9c-0.6,0-1-0.4-1-1S21.4,17,22,17z"/>
</svg>

After

Width:  |  Height:  |  Size: 953 B

55
icons/svg/facebook.svg Normal file
View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 32 32" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#3A559F;}
.st2{fill:#F4F4F4;}
.st3{fill:#FF0084;}
.st4{fill:#0063DB;}
.st5{fill:#00ACED;}
.st6{fill:#FFEC06;}
.st7{fill:#FF0000;}
.st8{fill:#25D366;}
.st9{fill:#0088FF;}
.st10{fill:#314358;}
.st11{fill:#EE6996;}
.st12{fill:#01AEF3;}
.st13{fill:#FFFEFF;}
.st14{fill:#F06A35;}
.st15{fill:#00ADEF;}
.st16{fill:#1769FF;}
.st17{fill:#1AB7EA;}
.st18{fill:#6001D1;}
.st19{fill:#E41214;}
.st20{fill:#05CE78;}
.st21{fill:#7B519C;}
.st22{fill:#FF4500;}
.st23{fill:#00F076;}
.st24{fill:#FFC900;}
.st25{fill:#00D6FF;}
.st26{fill:#FF3A44;}
.st27{fill:#FF6A36;}
.st28{fill:#0061FE;}
.st29{fill:#F7981C;}
.st30{fill:#EE1B22;}
.st31{fill:#EF3561;}
.st32{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;}
.st33{fill:#0097D3;}
.st34{fill:#01308A;}
.st35{fill:#019CDE;}
.st36{fill:#FFD049;}
.st37{fill:#16A05D;}
.st38{fill:#4486F4;}
.st39{fill:none;}
.st40{fill:#34A853;}
.st41{fill:#4285F4;}
.st42{fill:#FBBC05;}
.st43{fill:#EA4335;}
</style>
<path class="st1" d="M23,0H9C4,0,0,4,0,9v14c0,5,4,9,9,9h14c5,0,9-4,9-9V9C32,4,28,0,23,0z"/>
<path class="st0" d="M26.8,15.4C26.6,15.2,26.3,15,26,15h-5v-3.8c0-0.1,0.1-0.2,0.2-0.2H25c0.6,0,1-0.4,1-1V7c0-0.6-0.4-1-1-1h-4
c-3.3,0-5,2.7-5,6v3h-4c-0.6,0-1,0.4-1,1v3c0,0.6,0.4,1,1,1h4v12h5V20h3c0.4,0,0.8-0.2,0.9-0.6l2-3C27.1,16.1,27,15.7,26.8,15.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

8
icons/svg/fastly.svg Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -156.5 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M348.443832,20.3483124 L348.443832,153.935945 L388.570661,153.935945 L388.570661,133.525132 L375.312437,133.525132 L375.312437,0 L348.440659,0.00317258293 L348.443832,20.3483124 Z M0,133.525132 L13.6405203,133.525132 L13.6405203,69.0750619 L0,69.0750619 L0,51.3504756 L13.6405203,49.1071422 L13.6405203,31.1649167 C13.6405203,9.43177181 18.3708415,0.000317258293 46.086526,0.000317258293 C52.0725555,0.000317258293 59.16772,0.884198864 65.3796373,2.00316887 L61.6975376,23.8502095 C57.4903754,23.1836498 55.4040848,23.0653125 52.7445086,23.0653125 C42.9799328,23.0653125 40.511346,24.0396127 40.511346,33.5802041 L40.511346,49.1071422 L60.78542,49.1071422 L60.78542,69.0750619 L40.511346,69.0750619 L40.511346,133.525132 L54.0097346,133.525132 L54.0097346,153.932772 L0,153.938483 L0,133.525132 Z M334.776345,127.074954 C330.572672,127.961691 326.895649,127.855092 324.237024,127.920447 C313.183745,128.192338 314.138693,124.558461 314.138693,114.13494 L314.138693,69.0750619 L335.179263,69.0750619 L335.179263,49.1071422 L314.138693,49.1071422 L314.138693,0 L287.266598,0 L287.266598,119.70663 C287.266598,143.209442 293.067031,153.935945 318.345538,153.935945 C324.332202,153.935945 332.558709,152.395339 338.770627,151.065075 L334.776345,127.074954 Z M253.724148,69.0385772 L253.724148,65.4637108 C245.595038,63.9811628 237.522718,63.9595892 233.143602,63.9595892 C220.638866,63.9595892 219.11444,70.5909221 219.11444,74.1854585 C219.11444,79.2707917 220.849526,82.0204694 234.396455,84.9823928 C254.198449,89.427816 274.085785,94.0661322 274.085785,118.620021 C274.085785,141.905828 262.10167,153.935945 236.875829,153.935945 C219.995467,153.935945 203.61669,150.312221 191.119886,147.140907 L191.119886,127.074954 L211.467881,127.074954 L211.456142,130.639668 C220.212471,132.330972 229.393609,132.161874 234.186747,132.161874 C247.524921,132.161874 249.682911,124.990567 249.682911,121.178074 C249.682911,115.88684 245.858046,113.345601 233.354896,110.81039 C209.799737,106.785652 191.105609,98.7434713 191.105609,74.816168 C191.105609,52.1683675 206.253106,43.2838662 231.479265,43.2838662 C248.569018,43.2838662 261.5636,45.934242 274.067384,49.1071422 L274.067384,69.0385772 L253.724148,69.0385772 Z M117.603208,127.014041 L117.603208,123.855417 L114.383988,123.855417 L114.383988,127.005157 C99.9626949,126.164423 88.4271833,114.577833 87.6746467,100.133063 L90.8745138,100.133063 L90.8745138,96.9138427 L87.6914614,96.9138427 C88.5464725,82.5693262 100.034395,71.0925074 114.383988,70.2558973 L114.383988,73.4221351 L117.603208,73.4221351 L117.603208,70.2470141 C131.748169,71.0030406 143.141549,82.0981976 144.372828,96.1118137 L144.372828,97.0353526 L141.14758,97.0353526 L141.14758,100.254255 L144.37378,100.254255 L144.374414,101.135916 C143.149163,115.156195 131.75261,126.257697 117.603208,127.014041 Z M171.253489,127.074954 L171.23604,43.4583583 L144.365848,43.4583583 L144.365848,51.2997143 C138.831595,47.979289 132.666949,45.6052452 126.096212,44.3882424 L126.248179,44.3882424 L126.248179,35.109389 L129.526726,35.109389 L129.526726,28.2851632 L102.470939,28.2851632 L102.470939,35.109389 L105.748852,35.109389 L105.748852,44.3882424 L105.9354,44.3882424 C80.2355742,49.1195153 60.7597221,71.6239151 60.7597221,98.6917582 C60.7597221,129.196778 85.488737,153.925793 115.993439,153.925793 C126.404587,153.925793 136.14061,151.04128 144.452777,146.033992 L149.293504,153.935945 L177.676066,153.935945 L177.676066,127.074954 L171.253489,127.074954 Z M456.578149,49.1071422 L512,49.1071422 L512,69.0557092 L498.751294,69.0557092 L464.763413,152.67516 C455.023583,176.164647 439.021075,198.273109 414.655638,198.273109 C408.662629,198.273109 400.686755,197.609087 395.156943,196.280092 L397.587142,171.89213 C401.137262,172.555834 405.785096,172.992699 408.224812,172.992699 C419.525553,172.992699 432.269818,165.990808 436.257755,153.800158 L401.819367,69.0557092 L388.570661,69.0557092 L388.570661,49.1071422 L444.021065,49.1071422 L444.021065,69.0557092 L430.775532,69.0557092 L450.286917,117.056572 L469.795129,69.0557092 L456.578149,69.0557092 L456.578149,49.1071422 Z M130.096839,86.6762348 L128.051792,84.6308706 L117.667294,93.6809807 C117.143183,93.4928465 116.582588,93.3856132 115.996612,93.3856132 C113.194269,93.3856132 110.925872,95.7206342 110.925872,98.5984842 C110.925872,101.479507 113.194269,103.814211 115.996612,103.814211 C118.797685,103.814211 121.071475,101.479507 121.071475,98.5984842 C121.071475,98.0521654 120.988671,97.5255167 120.836704,97.0302765 L130.096839,86.6762348" fill="#D52F2F">
</path>
</g>

After

Width:  |  Height:  |  Size: 4.8 KiB

11
icons/svg/figma.svg Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd" transform="translate(4)">
<circle cx="12" cy="12" r="4" fill="#19BCFE"/>
<path fill="#09CF83" d="M4,24 C6.209139,24 8,22.209139 8,20 C8,19.3969461 8,18.0636128 8,16 C6.20303877,16 4.86970543,16 4,16 C1.790861,16 0,17.790861 0,20 C0,22.209139 1.790861,24 4,24 Z"/>
<path fill="#A259FF" d="M4,16 C4.73637967,16 6.069713,16 8,16 L8,8 C6.069713,8 4.73637967,8 4,8 C1.790861,8 0,9.790861 0,12 C0,14.209139 1.790861,16 4,16 Z"/>
<path fill="#F24E1E" d="M4,8 C4.73637967,8 6.069713,8 8,8 L8,0 C6.069713,0 4.73637967,0 4,0 C1.790861,0 0,1.790861 0,4 C0,6.209139 1.790861,8 4,8 Z"/>
<path fill="#FF7262" d="M12,8 L8,8 L8,8 L8,0 L12,0 L12,0 C14.209139,0 16,1.790861 16,4 C16,6.209139 14.209139,8 12,8 Z"/>
</g>

After

Width:  |  Height:  |  Size: 977 B

19
icons/svg/games.svg Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 984.264 984.264"
xml:space="preserve">
<g>
<path d="M52.832,896.588c23.7,15.7,55.1,12.8,75.7-6.8c0,0,117.9-100.9,152.8-128.9c10.8-8.7,24.3-13.399,38.2-13.399h172.6h172.6
c13.899,0,27.399,4.699,38.2,13.399c34.899,28,152.8,128.9,152.8,128.9c20.6,19.6,52,22.5,75.7,6.8
c77.6-51.6,52.1-189.9,33.1-266.9c-15.7-63.8-37.8-126.1-63.1-186.7c-37.301-89.2-118.801-202.8-232.2-178.5
c-11.3,2.7-23.9,9.3-33.101,14.9c-9.5,5.7-20.399,8.8-31.5,8.8h-72.5v-170.6c0-22.1-17.899-40-40-40c-22.1,0-40,17.9-40,40v170.5
h-72.5c-11.1,0-22-3-31.5-8.8c-9.199-5.5-21.8-12.1-33.1-14.9c-113.3-24.3-194.9,89.3-232.2,178.5c-25.3,60.7-47.3,123-63.1,186.8
C0.732,706.688-24.768,844.989,52.832,896.588z M732.631,375.088c24,0,43.5,19.5,43.5,43.5s-19.5,43.5-43.5,43.5
s-43.5-19.5-43.5-43.5S708.631,375.088,732.631,375.088z M629.631,501.688c24,0,43.5,19.5,43.5,43.5s-19.5,43.5-43.5,43.5
s-43.5-19.5-43.5-43.5S605.631,501.688,629.631,501.688z M198.032,453.188h50.6v-50.6c0-16.6,13.4-30,30-30s30,13.4,30,30v50.6
h50.601c16.6,0,30,13.4,30,30c0,16.601-13.4,30-30,30h-50.601v50.601c0,16.6-13.399,30-30,30s-30-13.4-30-30v-50.601h-50.6
c-16.6,0-30-13.399-30-30C168.032,466.588,181.532,453.188,198.032,453.188z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

1
icons/svg/gemini.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.5 KiB

17
icons/svg/github.svg Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -0.5 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Github-color</title>
<desc>Created with Sketch.</desc>
<defs>
</defs>
<g id="Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Color-" transform="translate(-700.000000, -560.000000)" fill="#3E75C3">
<path d="M723.9985,560 C710.746,560 700,570.787092 700,584.096644 C700,594.740671 706.876,603.77183 716.4145,606.958412 C717.6145,607.179786 718.0525,606.435849 718.0525,605.797328 C718.0525,605.225068 718.0315,603.710086 718.0195,601.699648 C711.343,603.155898 709.9345,598.469394 709.9345,598.469394 C708.844,595.686405 707.2705,594.94548 707.2705,594.94548 C705.091,593.450075 707.4355,593.480194 707.4355,593.480194 C709.843,593.650366 711.1105,595.963499 711.1105,595.963499 C713.2525,599.645538 716.728,598.58234 718.096,597.964902 C718.3135,596.407754 718.9345,595.346062 719.62,594.743683 C714.2905,594.135281 708.688,592.069123 708.688,582.836167 C708.688,580.205279 709.6225,578.054788 711.1585,576.369634 C710.911,575.759726 710.0875,573.311058 711.3925,569.993458 C711.3925,569.993458 713.4085,569.345902 717.9925,572.46321 C719.908,571.928599 721.96,571.662047 724.0015,571.651505 C726.04,571.662047 728.0935,571.928599 730.0105,572.46321 C734.5915,569.345902 736.603,569.993458 736.603,569.993458 C737.9125,573.311058 737.089,575.759726 736.8415,576.369634 C738.3805,578.054788 739.309,580.205279 739.309,582.836167 C739.309,592.091712 733.6975,594.129257 728.3515,594.725612 C729.2125,595.469549 729.9805,596.939353 729.9805,599.18773 C729.9805,602.408949 729.9505,605.006706 729.9505,605.797328 C729.9505,606.441873 730.3825,607.191834 731.6005,606.9554 C741.13,603.762794 748,594.737659 748,584.096644 C748,570.787092 737.254,560 723.9985,560" id="Github">
</path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

2
icons/svg/global.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M18 18v15.797L179.434 215.41l9.484-16.424L28.04 18H18zm77.705 0l96.95 174.512 10.493-18.176L116.295 18h-20.59zm91.154 0c4.326 19.018 15.27 67.152 28.36 125.326.557 2.482 1.074 4.807 1.63 7.278l13.275-22.993C219.105 78.687 209.9 38.14 205.32 18h-18.46zM247 18v80.383l9-15.588 7.795 13.5L265 98.383V18h-18zm59.78 0l-24.51 110.297 13.314 23.058L325.22 18h-18.44zm88.925 0l-86.853 156.336 10.494 18.176L416.296 18h-20.59zm88.254 0L323.083 198.986l9.482 16.424L494 33.797V18h-10.04zM18 98.25v22.5l150.79 113.094 9.067-15.7L18 98.25zm476 0L334.145 218.143l9.064 15.7L494 120.75v-22.5zm-238 20.547l-74.656 129.308c20.297-9.102 46.254-14.35 74.656-14.35 28.402 0 54.36 5.248 74.656 14.35L256 118.797zm-238 70.34v19.226l136.05 51.018 9.122-15.804L18 189.136zm476 0l-145.172 54.44 9.123 15.804L494 208.364v-19.226zM18 249.18v18.14l122.615 15.326 9.77-16.92L18 249.18zm476 0l-132.383 16.547 9.768 16.92L494 267.32v-18.14zm-238 2.576c-14.737 0-26.49 11.75-26.49 26.488 0 8.536 3.948 16.065 10.13 20.895a28.09 28.09 0 0 1-1.384-8.603 28.09 28.09 0 0 1 28.09-28.09 28.09 28.09 0 0 1 13.02 3.223c-4.446-8.315-13.194-13.914-23.366-13.914zm-38.18 3.736c-12.656 2.568-23.93 6.328-33.082 10.904-17.63 8.815-26.21 19.758-26.21 29.594 0 9.837 8.58 20.777 26.21 29.592 17.63 8.815 43.077 14.643 71.262 14.643 28.185 0 53.632-5.828 71.262-14.643 17.63-8.815 26.21-19.755 26.21-29.592 0-9.836-8.58-20.78-26.21-29.594-9.153-4.576-20.426-8.336-33.082-10.904 4 6.67 6.31 14.453 6.31 22.752 0 24.465-20.025 44.49-44.49 44.49-24.465 0-44.49-20.025-44.49-44.49 0-8.3 2.31-16.083 6.31-22.752zm-83.867 38.694L18 308.68v18.14l104.666-13.082 11.287-19.552zm244.094 0l11.287 19.552L494 326.82v-18.14l-115.953-14.494zm-233.758 18.1l-57.112 98.92h337.644l-57.11-98.92c-5.763 12.078-17.677 22.035-32.4 29.398-20.907 10.452-48.695 16.54-79.312 16.54-30.617 0-58.405-6.088-79.31-16.54-14.725-7.363-26.64-17.32-32.4-29.4zm255.84 20.15l14.167 24.537L494 386.863v-19.226l-93.87-35.2zm-288.26.002L18 367.637v19.225l79.703-29.888 14.166-24.538zm-31.645 54.808L18 426.136v21.227l43.05-26.906 19.175-33.21zm351.55 0l19.174 33.21L494 447.364v-21.226l-62.225-38.89zm-350.82 41.96L18 484.29V494h16.238l74.05-64.795H80.956zm42.158 0L67.573 494h23.71l55.537-64.795h-23.707zm41.832 0L127.92 494h20.732l37.026-64.795h-20.733zm42.752 0c-8.665 28.96-15.66 51.885-19.61 64.794h18.82c4.678-15.314 11.433-37.537 19.573-64.795h-18.783zm39.303 0V494h18v-64.795h-18zm39.984 0L305.496 494h18.723l-18.515-64.795h-18.72zm39.338 0L363.348 494h20.732l-37.025-64.795h-20.733zm38.856 0L420.718 494h23.708l-55.54-64.795H365.18zm38.533 0L477.763 494H494v-9.71l-62.955-55.085H403.71z"/></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="#EA4335" d="M10.313 5.376l1.887-1.5-.332-.414a5.935 5.935 0 00-5.586-1.217 5.89 5.89 0 00-3.978 4.084c-.03.113.312-.098.463-.056l2.608-.428s.127-.124.201-.205c1.16-1.266 3.126-1.432 4.465-.354l.272.09z"/><path fill="#4285F4" d="M13.637 6.3a5.835 5.835 0 00-1.77-2.838l-1.83 1.82a3.226 3.226 0 011.193 2.564v.323c.9 0 1.63.725 1.63 1.62 0 .893-.73 1.619-1.63 1.619l-3.257-.003-.325.035v2.507l.325.053h3.257a4.234 4.234 0 004.08-2.962A4.199 4.199 0 0013.636 6.3z"/><path fill="#34A853" d="M4.711 13.999H7.97v-2.594H4.71c-.232 0-.461-.066-.672-.161l-.458.14-1.313 1.297-.114.447a4.254 4.254 0 002.557.87z"/><path fill="#FBBC05" d="M4.711 5.572A4.234 4.234 0 00.721 8.44a4.206 4.206 0 001.433 4.688l1.89-1.884a1.617 1.617 0 01.44-3.079 1.63 1.63 0 011.714.936l1.89-1.878A4.24 4.24 0 004.71 5.572z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 256 157" enable-background="new 0 0 256 157" xml:space="preserve">
<path d="M253.823,41.499l-0.325,0.734c-2.41,5.503-8.319,9.204-14.332,9.204h-16.73v3.936c0,19.682-8.442,43.562-31.479,50.726
l-3.909,41.513c2.862,1.12,4.892,3.898,4.892,7.156h-11.96l-4.781-51.275l-39-6.766c-10.755,13.121-27.175,23.474-44.585,26.549
l-3.695,24.37c2.811,1.144,4.795,3.899,4.795,7.121H80.756l0.001-44.671c10.414-6.433,18.847-17.179,20.897-29.737
c0,0-43.871,42.034-56.708,49.933c-5.012,3.084-10.609,4.676-16.121,4.676c-6.622,0-13.123-2.296-18.348-7.06
c-9.654-8.802-11.272-23.402-3.78-34.105l0.722-1.035c5.007,5.223,11.765,7.918,18.623,7.918c4.441,0,8.925-1.131,13.003-3.438
c12.878-7.285,33.765-21.585,41.987-26.531c5.561-3.345,13.409-6.095,19.728-7.581c15.761-3.706,67.877-8.57,67.877-8.57
l53.797-52.336v16.513c-0.005,0-0.01-0.001-0.013-0.001c-0.027,0,0.013,0.012,0.013,0.012v-0.011
c0.079,0.006,0.411,0.059,1.616,0.298c4.89,0.973,9.251,3.723,12.227,7.723l5.686,7.642l10.742,4.341
C253.79,39.186,254.295,40.431,253.823,41.499z M151.684,105.406l-13.191-2.288c-4.227,4.708-9.067,8.946-14.301,12.598
l13.93,39.052h11.96c0-4.146-3.284-7.517-7.392-7.673l-5.613-27.44C142.607,115.672,147.418,110.796,151.684,105.406z
M215.871,147.169l-6.906-44.331c-3.616,3.299-8.228,6.044-12.473,7.63l13.996,44.3h11.96
C222.447,150.9,219.589,147.709,215.871,147.169z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg version="1.1" id="designs" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 32 32" xml:space="preserve">
<style type="text/css">
.sketchy_een{fill:#111918;}
</style>
<path class="sketchy_een" d="M25.033,14.779c-0.05-0.342-0.164-0.698-0.348-0.992c-0.22-0.354-0.56-0.662-0.934-0.852
c-0.236-0.12-0.494-0.206-0.754-0.258c-0.18-0.036-0.364-0.064-0.546-0.07c-0.011,0-0.021,0-0.032,0
c-0.128,0-0.259,0.022-0.389,0.045c-0.097-0.221-0.211-0.432-0.384-0.614c-0.188-0.2-0.424-0.372-0.676-0.484
c-0.304-0.136-0.584-0.222-0.92-0.242c-0.027-0.002-0.054-0.003-0.081-0.003c-0.239,0-0.476,0.067-0.711,0.101
c-0.047,0.007-0.091,0.038-0.136,0.061c-0.109-0.181-0.205-0.369-0.323-0.543c-0.27-0.402-0.52-0.816-0.774-1.228
c-0.032-0.052-0.086-0.078-0.127-0.121c0.032-0.049,0.063-0.099,0.095-0.147c0.21-0.316,0.424-0.63,0.63-0.95
c0.198-0.308,0.376-0.63,0.56-0.948c0.386-0.672,0.71-1.384,0.982-2.109c0.126-0.336,0.222-0.68,0.284-1.034
c0.034-0.198,0.062-0.396,0.04-0.596c-0.016-0.132-0.034-0.266-0.056-0.398c-0.03-0.17-0.1-0.336-0.174-0.492
c-0.16-0.338-0.43-0.594-0.714-0.828c-0.13-0.106-0.258-0.216-0.392-0.316c-0.134-0.102-0.298-0.164-0.456-0.216
c-0.135-0.045-0.272-0.062-0.409-0.062c-0.192,0-0.385,0.034-0.574,0.072c-0.202,0.042-0.402,0.092-0.596,0.16
c-0.624,0.222-1.138,0.622-1.608,1.074c-0.357,0.343-0.671,0.73-0.978,1.12c-0.16-0.229-0.321-0.458-0.479-0.688
c-0.248-0.36-0.512-0.72-0.798-1.05c-0.07-0.078-0.152-0.146-0.228-0.218c-0.118-0.112-0.236-0.224-0.358-0.332
c-0.178-0.158-0.368-0.338-0.588-0.434c-0.252-0.112-0.414-0.15-0.69-0.182C11.342,1.002,11.292,1,11.241,1
c-0.176,0-0.359,0.03-0.523,0.07c-0.228,0.054-0.448,0.17-0.64,0.304C9.63,1.69,9.27,2.127,9.116,2.661
C9.002,3.063,8.962,3.499,8.96,3.915C8.956,4.377,8.984,4.827,9.124,5.269C9.268,5.722,9.46,6.166,9.656,6.6
c0.174,0.386,0.372,0.766,0.56,1.146c0.21,0.428,0.42,0.858,0.64,1.284c0.018,0.035,0.051,0.056,0.075,0.086
c-0.179,0.285-0.354,0.572-0.509,0.871c-0.386,0.748-0.746,1.513-1.074,2.287c-0.182,0.43-0.352,0.862-0.504,1.306
c-0.146,0.426-0.274,0.858-0.414,1.286c-0.036,0.112-0.038,0.226-0.02,0.337c-0.103,0.114-0.199,0.236-0.286,0.358
c-0.1,0.142-0.2,0.284-0.294,0.43c-0.172,0.262-0.302,0.544-0.434,0.826c-0.174,0.378-0.31,0.76-0.4,1.166
c-0.078,0.348-0.106,0.684-0.084,1.038c0.016,0.3,0.076,0.6,0.14,0.894c0.062,0.294,0.132,0.592,0.234,0.876
c0.108,0.304,0.218,0.604,0.306,0.914c0.196,0.704,0.43,1.399,0.672,2.089c-0.266,0.136-0.454,0.407-0.457,0.724
c-0.004,0.53,0.006,1.058,0.012,1.588c0.006,0.512,0,1.022,0.002,1.534c0.004,0.466,0.016,0.93,0.018,1.396
c0,0.186,0.008,0.372,0.01,0.556c0.004,0.162,0,0.324,0.016,0.484c0.02,0.218,0.072,0.402,0.232,0.562
c0.031,0.031,0.073,0.047,0.109,0.073c0.15,0.176,0.365,0.295,0.61,0.294c0.412-0.004,0.822-0.02,1.232-0.03
c0.168-0.002,0.336-0.002,0.506-0.002c0.186,0,0.374,0,0.564-0.006c0.762-0.022,1.524-0.054,2.287-0.066
c0.676-0.008,1.352-0.004,2.027,0c0.786,0.004,1.572,0.008,2.357-0.008c0.754-0.016,1.512-0.042,2.265-0.012
c0.163,0.006,0.307-0.059,0.432-0.15c0.198-0.007,0.388-0.085,0.53-0.225c0.096-0.098,0.164-0.214,0.202-0.348
c0.038-0.14,0.038-0.278,0-0.418c-0.008-0.044-0.016-0.087-0.023-0.13c-0.031-0.332-0.032-0.666-0.049-0.997
c-0.02-0.41-0.03-0.82-0.054-1.228c-0.026-0.414-0.05-0.828-0.058-1.242c-0.01-0.496-0.002-0.994,0.002-1.49
c0.003-0.323-0.202-0.604-0.485-0.725c-0.123-0.163-0.301-0.273-0.507-0.284c0.055-0.158,0.119-0.311,0.172-0.473
c0.13-0.402,0.272-0.796,0.384-1.204c0.1-0.358,0.218-0.708,0.308-1.068c0.084-0.339,0.168-0.677,0.251-1.015
c0.272,0.058,0.554,0.082,0.821,0.003c0.26-0.074,0.514-0.23,0.736-0.38c0.148-0.1,0.3-0.186,0.454-0.276
c0.206-0.122,0.396-0.274,0.562-0.446c0.244-0.25,0.44-0.532,0.614-0.834c0.17-0.294,0.334-0.584,0.464-0.898
c0.056-0.136,0.108-0.274,0.152-0.414c0.06-0.188,0.076-0.39,0.102-0.584C25.117,15.629,25.097,15.203,25.033,14.779z
M19.869,12.889c0.059-0.003,0.117-0.003,0.176,0c0.081,0.017,0.16,0.038,0.238,0.065c0.058,0.03,0.113,0.063,0.167,0.1
c0.049,0.042,0.096,0.087,0.141,0.135c0.03,0.048,0.057,0.097,0.082,0.148c0.059,0.156,0.107,0.315,0.144,0.479
c0.01,0.183-0.008,0.369-0.029,0.55c-0.027,0.16-0.065,0.309-0.122,0.461c-0.128,0.278-0.274,0.55-0.426,0.818
c-0.132,0.236-0.273,0.469-0.43,0.69c-0.073,0.086-0.147,0.169-0.231,0.245c-0.082,0.058-0.167,0.113-0.256,0.16
c-0.073,0.024-0.146,0.044-0.221,0.06c-0.039,0.001-0.079,0-0.118-0.002c-0.069-0.015-0.137-0.034-0.204-0.057
c-0.023-0.012-0.045-0.024-0.067-0.038c-0.018-0.017-0.036-0.035-0.053-0.053c-0.004-0.007-0.008-0.014-0.012-0.021
c-0.019-0.057-0.034-0.115-0.047-0.175c-0.013-0.18-0.005-0.356,0.016-0.537c-0.002,0.013-0.004,0.027-0.006,0.041
c0.022-0.177,0.043-0.354,0.066-0.531c0.039-0.229,0.099-0.455,0.143-0.683c0.04-0.208,0.084-0.416,0.132-0.622
c0.06-0.268,0.124-0.538,0.226-0.792c0.052-0.13,0.106-0.26,0.161-0.39c0.108,0.014,0.218,0.006,0.335-0.014
C19.74,12.914,19.804,12.901,19.869,12.889z M10.588,4.509c-0.038-0.379-0.041-0.763-0.002-1.143
c0.02-0.099,0.043-0.196,0.074-0.292c0.026-0.049,0.053-0.096,0.083-0.143c0.05-0.058,0.102-0.113,0.158-0.165
c0.057-0.037,0.115-0.071,0.175-0.103c0.036-0.011,0.073-0.02,0.11-0.028c0.052-0.003,0.104-0.004,0.156-0.003
c0.025,0.015,0.049,0.03,0.073,0.047c0.347,0.289,0.653,0.602,0.938,0.953c0.397,0.532,0.754,1.091,1.161,1.614
c-0.217,0.29-0.442,0.575-0.65,0.87c-0.334,0.472-0.635,0.965-0.943,1.455c-0.125-0.226-0.25-0.452-0.372-0.678
c-0.208-0.382-0.387-0.781-0.563-1.178C10.825,5.323,10.669,4.924,10.588,4.509z M10.763,12.845c0.252-0.585,0.51-1.167,0.806-1.731
c0.338-0.648,0.706-1.278,1.104-1.89c0.374-0.574,0.738-1.156,1.116-1.727c0.339-0.513,0.703-1.01,1.077-1.497
c0.352-0.451,0.717-0.898,1.103-1.322c0.342-0.374,0.693-0.739,1.086-1.061c0.167-0.121,0.344-0.233,0.529-0.324
c0.212-0.078,0.429-0.137,0.651-0.18c0.009,0,0.017,0,0.026-0.001c0.001,0,0.003,0.001,0.004,0.001
c0.032,0.019,0.062,0.04,0.091,0.062c0.154,0.124,0.305,0.251,0.437,0.4c0.01,0.017,0.02,0.035,0.029,0.052
c0.025,0.076,0.044,0.153,0.059,0.231c0.006,0.081,0.006,0.161,0.001,0.244c-0.053,0.323-0.129,0.634-0.237,0.948
c-0.111,0.328-0.243,0.65-0.377,0.969c-0.45,0.992-1.055,1.913-1.631,2.836c-0.28,0.448-0.562,0.888-0.87,1.32
c-0.281,0.395-0.572,0.786-0.866,1.171c-0.127,0.161-0.253,0.318-0.41,0.45c-0.31,0.262-0.268,0.782,0,1.05
c0.276,0.276,0.776,0.298,1.05,0c0.228-0.248,0.422-0.53,0.628-0.798c0.218-0.286,0.432-0.574,0.642-0.866
c0.054-0.075,0.107-0.152,0.161-0.228c0.173,0.246,0.344,0.493,0.493,0.752c0.142,0.25,0.264,0.504,0.428,0.74
c0.001,0.001,0.002,0.002,0.003,0.004c-0.079,0.212-0.163,0.421-0.228,0.637c-0.088,0.288-0.152,0.586-0.216,0.88
c-0.054,0.244-0.1,0.49-0.158,0.734c-0.084,0.352-0.114,0.714-0.162,1.072c-0.034,0.268-0.056,0.54-0.02,0.81
c0.044,0.328,0.1,0.662,0.3,0.938c0.234,0.324,0.53,0.55,0.902,0.696c0.284,0.11,0.622,0.17,0.924,0.134
c0.084-0.01,0.16-0.038,0.241-0.055c0.067,0.223,0.156,0.437,0.281,0.63c-0.016,0.038-0.04,0.072-0.049,0.114
c-0.096,0.442-0.188,0.886-0.274,1.33c-0.062,0.314-0.154,0.616-0.244,0.922c-0.193,0.664-0.372,1.342-0.629,1.986
c-0.033,0.07-0.068,0.139-0.103,0.209c-0.03,0.06-0.041,0.123-0.057,0.186c-0.126,0.004-0.252,0.008-0.378,0.01
c-0.706,0.01-1.41,0.018-2.115,0.016c-0.268,0-0.536,0-0.804,0.002c-0.482,0-0.964,0.002-1.446-0.006
c-0.774-0.01-1.548-0.052-2.321-0.074c-0.471-0.013-0.941-0.038-1.412-0.059c-0.006-0.028,0.002-0.057-0.009-0.085
c-0.17-0.462-0.342-0.922-0.508-1.384c-0.136-0.386-0.248-0.778-0.368-1.166c-0.106-0.338-0.23-0.666-0.32-1.008
c-0.069-0.266-0.138-0.533-0.183-0.803c-0.021-0.184-0.03-0.367-0.017-0.55c0.06-0.323,0.137-0.636,0.257-0.942
c0.188-0.433,0.416-0.863,0.692-1.246c0.057-0.07,0.117-0.138,0.181-0.201c0.078-0.05,0.158-0.096,0.24-0.139
c0.267-0.095,0.545-0.161,0.826-0.206c0.662-0.077,1.317-0.127,1.983-0.125c0.296,0,0.59,0.02,0.884,0.028
c0.223,0.007,0.452,0.01,0.674,0.032c0.085,0.013,0.171,0.028,0.253,0.052c0.005,0.003,0.01,0.006,0.016,0.009
c0.009,0.009,0.017,0.018,0.025,0.027c0.019,0.031,0.038,0.062,0.055,0.094c0.032,0.094,0.058,0.188,0.078,0.285
c0.004,0.077,0.003,0.154-0.004,0.232c-0.024,0.123-0.057,0.244-0.099,0.363c-0.055,0.107-0.121,0.207-0.191,0.304
c-0.097,0.111-0.211,0.203-0.328,0.293c-0.197,0.144-0.407,0.268-0.63,0.369c-0.267,0.113-0.539,0.224-0.823,0.273
c-0.279,0.034-0.542,0.073-0.797,0.222c-0.226,0.132-0.418,0.352-0.61,0.526c-0.31,0.282-0.286,0.802,0,1.086
c0.282,0.282,0.808,0.314,1.084,0c0.1-0.112,0.202-0.226,0.314-0.327c0.006-0.004,0.013-0.007,0.019-0.011
c0.041-0.012,0.084-0.021,0.127-0.029c0.213-0.027,0.422-0.057,0.628-0.13c0.2-0.07,0.4-0.15,0.596-0.234
c0.38-0.158,0.706-0.348,1.028-0.606c0.124-0.098,0.25-0.196,0.368-0.302c0.122-0.112,0.222-0.262,0.32-0.39
c0.324-0.424,0.464-0.954,0.506-1.478c0.022-0.278-0.026-0.57-0.104-0.836c-0.124-0.418-0.372-0.782-0.724-1.038
c-0.222-0.16-0.482-0.224-0.746-0.278c-0.286-0.058-0.582-0.072-0.874-0.09c-0.355-0.021-0.71-0.034-1.065-0.034
c-0.246,0-0.493,0.006-0.741,0.02c-0.306,0.016-0.606,0.048-0.908,0.086c-0.257,0.033-0.513,0.069-0.767,0.113
c0.031-0.114,0.062-0.228,0.095-0.341C10.476,13.605,10.609,13.225,10.763,12.845z M14.631,16.724
c-0.007,0.018-0.014,0.036-0.022,0.054c-0.001,0.002-0.002,0.004-0.003,0.005C14.615,16.763,14.623,16.743,14.631,16.724z
M14.604,16.789c-0.014,0.034-0.028,0.068-0.043,0.102c0.012-0.028,0.023-0.056,0.035-0.085
C14.599,16.801,14.602,16.795,14.604,16.789z M14.561,16.891c-0.001,0.002-0.002,0.005-0.003,0.008
c-0.007,0.016-0.014,0.033-0.021,0.049C14.545,16.929,14.553,16.91,14.561,16.891z M12.633,19.549c-0.001,0-0.002,0-0.003,0v0
C12.63,19.549,12.632,19.549,12.633,19.549z M12.623,19.55L12.623,19.55c-0.017,0.002-0.033,0.005-0.05,0.006
C12.59,19.555,12.607,19.552,12.623,19.55z M18.99,29.354c-0.336,0.004-0.672,0.006-1.008,0.01
c-0.722,0.006-1.444-0.004-2.163-0.008c-0.742-0.004-1.482,0.012-2.221,0.014c-0.762,0.004-1.524,0.01-2.287,0.024
c-0.625,0.012-1.249-0.005-1.873-0.017c0.001-0.103,0.002-0.205,0.002-0.308c0-0.458-0.012-0.918-0.024-1.376
c-0.025-0.871-0.004-1.743,0.02-2.614c0.635,0.009,1.27-0.001,1.906-0.001c0.774,0,1.548,0.044,2.321,0.052
c0.75,0.008,1.5,0.012,2.249,0.012c0.31,0,0.62,0.004,0.93,0.006c0.394,0.004,0.79,0.01,1.186,0.004
c0.484-0.006,0.968-0.028,1.453-0.026c0.025,0.814,0.078,1.628,0.115,2.443c0.02,0.452,0.026,0.904,0.038,1.356
c0.003,0.14,0.005,0.281,0.009,0.421c-0.099,0.001-0.198,0.008-0.297,0.008C19.226,29.354,19.108,29.352,18.99,29.354z
M23.515,15.994c-0.035,0.191-0.09,0.375-0.157,0.556c-0.08,0.175-0.173,0.341-0.266,0.511c-0.084,0.151-0.165,0.305-0.262,0.449
c-0.098,0.118-0.205,0.23-0.32,0.332c-0.192,0.129-0.403,0.229-0.597,0.357c-0.107,0.071-0.215,0.142-0.329,0.202
c-0.005,0.001-0.009,0.003-0.014,0.004c-0.023,0-0.046,0-0.069-0.001c-0.072-0.016-0.143-0.035-0.214-0.059
c-0.046-0.023-0.09-0.048-0.134-0.075c-0.035-0.032-0.068-0.065-0.099-0.1c-0.021-0.033-0.04-0.067-0.058-0.101
c-0.056-0.165-0.094-0.335-0.133-0.505c-0.004-0.015-0.015-0.025-0.019-0.039c0.134-0.155,0.26-0.317,0.376-0.484
c0.368-0.532,0.684-1.114,0.926-1.711c0.145-0.356,0.174-0.733,0.186-1.115c0.049-0.002,0.097-0.01,0.145-0.009
c0.139,0.026,0.273,0.061,0.407,0.105c0.093,0.048,0.181,0.106,0.267,0.167c0.058,0.051,0.111,0.105,0.162,0.163
c0.031,0.046,0.059,0.093,0.084,0.141c0.056,0.159,0.098,0.321,0.127,0.487C23.543,15.511,23.539,15.752,23.515,15.994z"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512" xml:space="preserve">
<g>
<g>
<path d="M384,209.455c-6.435,0-11.636,5.201-11.636,11.636c0,53.818-40.809,98.234-93.091,104.041v-34.223
c0-6.435-5.201-11.636-11.636-11.636c-32.081,0-58.182-26.1-58.182-58.182c0-32.081,26.1-58.182,58.182-58.182
c32.081,0,58.182,26.1,58.182,58.182c0,16.524-7.063,32.326-19.398,43.369c-4.783,4.282-5.19,11.636-0.908,16.431
s11.66,5.19,16.431,0.908c17.245-15.441,27.148-37.574,27.148-60.707c0-44.905-36.55-81.455-81.455-81.455
s-81.455,36.55-81.455,81.455c0,40.972,30.394,74.961,69.818,80.628v59.008c0,6.435,5.201,11.636,11.636,11.636
c6.435,0,11.636-5.201,11.636-11.636v-12.23c65.14-5.9,116.364-60.753,116.364-127.406
C395.636,214.656,390.435,209.455,384,209.455z"/>
</g>
</g>
<g>
<g>
<path d="M267.636,174.545c-25.67,0-46.545,20.876-46.545,46.545c0,6.435,5.201,11.636,11.636,11.636
c6.435,0,11.636-5.201,11.636-11.636c0-12.835,10.438-23.273,23.273-23.273c6.435,0,11.636-5.201,11.636-11.636
S274.071,174.545,267.636,174.545z"/>
</g>
</g>
<g>
<g>
<path d="M453.818,0c-32.081,0-58.182,26.1-58.182,58.182c0,10.449,2.991,20.119,7.831,28.602l-47.558,41.612
c-50.071-47.697-129.617-46.964-178.781,2.188c-4.55,4.55-4.55,11.904,0,16.454s11.904,4.55,16.454,0
c40.832-40.832,107.299-40.82,147.991-0.128l5.399,5.562c2.281,2.351,5.318,3.537,8.355,3.537c2.723,0,5.469-0.954,7.657-2.874
l55.796-48.815c9.763,7.447,21.818,12.044,35.037,12.044c32.081,0,58.182-26.1,58.182-58.182C512,26.1,485.9,0,453.818,0z
M453.818,93.091c-19.247,0-34.909-15.663-34.909-34.909c0-19.247,15.663-34.909,34.909-34.909
c19.247,0,34.909,15.663,34.909,34.909S473.065,93.091,453.818,93.091z"/>
</g>
</g>
<g>
<g>
<path d="M267.636,395.636c-32.081,0-58.182,26.1-58.182,58.182c0,32.081,26.1,58.182,58.182,58.182
c32.081,0,58.182-26.1,58.182-58.182C325.818,421.737,299.718,395.636,267.636,395.636z M267.636,488.727
c-19.247,0-34.909-15.663-34.909-34.909c0-19.247,15.663-34.909,34.909-34.909c19.247,0,34.909,15.663,34.909,34.909
C302.545,473.065,286.883,488.727,267.636,488.727z"/>
</g>
</g>
<g>
<g>
<path d="M151.273,209.455H91.439c-5.201-20.026-23.261-34.909-44.893-34.909C20.876,174.545,0,195.421,0,221.091
c0,25.67,20.876,46.545,46.545,46.545c21.632,0,39.692-14.883,44.893-34.909h59.834c6.435,0,11.636-5.201,11.636-11.636
C162.909,214.656,157.708,209.455,151.273,209.455z M46.545,244.364c-12.835,0-23.273-10.438-23.273-23.273
c0-12.835,10.438-23.273,23.273-23.273s23.273,10.438,23.273,23.273C69.818,233.926,59.38,244.364,46.545,244.364z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512" xml:space="preserve">
<g>
<g>
<g>
<path d="M392.04,171.636c-3.223-5.574-10.356-7.482-15.895-4.259l-39.005,22.516c-16.908-20.713-41.553-34.828-69.504-37.935
v-35.596c0-6.435-5.201-11.636-11.636-11.636c-6.435,0-11.636,5.201-11.636,11.636v35.596
c-23.575,2.595-45.405,12.975-62.417,29.987c-2.537,2.537-4.911,5.178-7.145,7.913l-38.947-22.481
c-5.574-3.212-12.684-1.315-15.895,4.259c-3.212,5.574-1.303,12.684,4.259,15.895l38.016,21.946
c-7.098,14.289-10.95,30.092-10.95,46.511c0,6.435,5.213,11.636,11.636,11.636h46.825c1.059,23.017,5.248,45.312,12.439,62.348
c-15.593-7.133-28.881-19.014-37.469-34.525c-1.396-2.525-3.665-4.433-6.4-5.364l-4.189-1.443
c-3.165-1.117-6.691-0.756-9.6,0.919l-40.308,23.273c-5.574,3.212-7.482,10.333-4.259,15.895
c3.212,5.574,10.333,7.471,15.895,4.259l32.919-19.014c17.164,25.798,44.916,42.589,75.59,46.022v35.642
c0,6.435,5.201,11.636,11.636,11.636c6.435,0,11.636-5.201,11.636-11.636v-35.596c31.476-3.503,58.775-20.98,75.532-46.092
l32.977,19.049c1.827,1.059,3.828,1.559,5.807,1.559c4.026,0,7.936-2.083,10.089-5.818c3.212-5.574,1.303-12.684-4.259-15.895
l-34.001-19.631c4.422-11.59,6.947-24.099,6.947-37.213c0-16.71-4.026-32.454-11.02-46.487l38.074-21.981
C393.355,184.32,395.263,177.21,392.04,171.636z M255.999,337.455c-6.237,0-20.783-24.413-22.97-69.83h45.94
C276.782,313.041,262.236,337.455,255.999,337.455z M233.017,244.352c0.57-11.439,1.955-22.481,4.119-32.442
c1.361-6.284-2.641-12.474-8.913-13.836c-6.26-1.373-12.474,2.641-13.836,8.913c-2.49,11.52-4.049,24.262-4.643,37.376h-34.362
c5.655-39.424,39.645-69.818,80.617-69.818c6.237,0,20.783,24.401,22.97,69.807H233.017z M289.791,330.019
c7.203-17.036,11.404-39.354,12.463-62.394h11.927v-23.273h-11.927c-1.059-23.028-5.26-45.335-12.463-62.371
c28.067,12.87,47.662,41.169,47.662,74.019C337.454,288.849,317.858,317.149,289.791,330.019z"/>
<path d="M131.897,116.364c1.932,0,3.887-0.477,5.69-1.501l95.569-53.76c6.144,5.353,14.068,8.716,22.842,8.716
c19.247,0,34.909-15.663,34.909-34.909C290.908,15.663,275.246,0,255.999,0S221.09,15.663,221.09,34.909
c0,2.036,0.268,4.015,0.605,5.958l-95.511,53.725c-5.597,3.154-7.587,10.24-4.433,15.837
C123.88,114.223,127.825,116.364,131.897,116.364z M255.999,23.273c6.423,0,11.636,5.213,11.636,11.636
c0,6.423-5.213,11.636-11.636,11.636s-11.636-5.213-11.636-11.636C244.363,28.486,249.576,23.273,255.999,23.273z"/>
<path d="M313.727,77.068l94.359,55.889c-1.571,7.994-0.512,16.535,3.875,24.122c4.655,8.076,12.183,13.859,21.19,16.268
c3.014,0.803,6.063,1.21,9.088,1.21c6.051,0,12.02-1.583,17.396-4.678c16.675-9.635,22.412-31.023,12.788-47.697
c-9.635-16.663-31.011-22.423-47.686-12.788c-0.012,0-0.012,0-0.023,0c-1.757,1.024-3.328,2.234-4.841,3.491l-94.289-55.843
c-5.551-3.281-12.684-1.443-15.942,4.084C306.373,66.665,308.2,73.798,313.727,77.068z M436.363,129.559
c5.574-3.212,12.707-1.28,15.895,4.259c3.212,5.562,1.292,12.695-4.259,15.895c-2.7,1.548-5.841,1.967-8.832,1.164
c-3.002-0.791-5.504-2.723-7.052-5.422C428.892,139.892,430.801,132.771,436.363,129.559z"/>
<path d="M198.283,434.932l-94.359-55.901c1.571-7.994,0.512-16.535-3.863-24.122c-9.635-16.663-30.999-22.388-47.709-12.788
c-16.663,9.635-22.388,31.034-12.765,47.686c4.655,8.076,12.183,13.859,21.19,16.268c3.014,0.803,6.063,1.21,9.088,1.21
c6.063,0,12.02-1.583,17.396-4.678c1.769-1.024,3.34-2.234,4.852-3.503l94.289,55.855c1.862,1.105,3.91,1.629,5.923,1.629
c3.98,0,7.854-2.036,10.019-5.702C205.637,445.335,203.81,438.202,198.283,434.932z M75.636,382.441
c-2.7,1.559-5.853,1.955-8.832,1.164c-3.002-0.791-5.504-2.723-7.052-5.423c-3.212-5.562-1.292-12.695,4.236-15.895
c1.827-1.059,3.828-1.559,5.807-1.559c4.026,0,7.959,2.095,10.1,5.818C83.118,372.108,81.198,379.241,75.636,382.441z"/>
<path d="M374.422,397.138l-95.581,53.772c-6.144-5.364-14.068-8.727-22.842-8.727c-19.247,0-34.909,15.663-34.909,34.909
c0,19.247,15.663,34.909,34.909,34.909s34.909-15.663,34.909-34.909c0-2.036-0.268-4.003-0.605-5.946l95.523-53.737
c5.597-3.154,7.587-10.24,4.433-15.837C387.129,395.962,380.031,393.949,374.422,397.138z M255.999,488.727
c-6.423,0-11.636-5.213-11.636-11.636c0-6.423,5.213-11.636,11.636-11.636s11.636,5.213,11.636,11.636
C267.636,483.514,262.422,488.727,255.999,488.727z"/>
<path d="M58.181,172.404v130.141c0,6.435,5.201,11.636,11.636,11.636c6.435,0,11.636-5.201,11.636-11.636V172.404
c13.51-4.817,23.273-17.617,23.273-32.768c0-19.247-15.663-34.909-34.909-34.909c-19.247,0-34.909,15.663-34.909,34.909
C34.908,154.787,44.671,167.587,58.181,172.404z M69.817,128c6.423,0,11.636,5.213,11.636,11.636s-5.213,11.636-11.636,11.636
s-11.636-5.213-11.636-11.636S63.394,128,69.817,128z"/>
<path d="M453.817,339.596V209.455c0-6.435-5.201-11.636-11.636-11.636s-11.636,5.201-11.636,11.636v130.141
c-13.51,4.817-23.273,17.617-23.273,32.768c0,19.247,15.663,34.909,34.909,34.909s34.909-15.663,34.909-34.909
C477.09,357.213,467.327,344.413,453.817,339.596z M442.181,384c-6.423,0-11.636-5.213-11.636-11.636s5.213-11.636,11.636-11.636
c6.423,0,11.636,5.213,11.636,11.636S448.604,384,442.181,384z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -3.5 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M142.076578,191.086817 C142.076578,159.280656 116.294759,133.494615 84.4885969,133.494615 C52.6782136,133.494615 26.896394,159.280656 26.896394,191.086817 C26.896394,222.892979 52.6782136,248.67902 84.4885969,248.67902 C116.294759,248.67902 142.076578,222.892979 142.076578,191.086817" fill="#FF6600" transform="translate(84.486486, 191.086817) scale(1, -1) translate(-84.486486, -191.086817) ">
</path>
<path d="M255.979703,110.454356 C255.979703,78.652416 230.197884,52.862153 198.391722,52.862153 C166.581339,52.862153 140.799519,78.652416 140.799519,110.454356 C140.799519,142.260518 166.581339,168.050781 198.391722,168.050781 C230.197884,168.050781 255.979703,142.260518 255.979703,110.454356" fill="#FFCC00" transform="translate(198.389611, 110.456467) scale(1, -1) translate(-198.389611, -110.456467) ">
</path>
<path d="M115.200498,109.176452 C115.200498,77.3745125 89.4186786,51.5842495 57.6082953,51.5842495 C25.8063553,51.5842495 0.0203140271,77.3745125 0.0203140271,109.176452 C0.0203140271,140.982614 25.8063553,166.772877 57.6082953,166.772877 C89.4186786,166.772877 115.200498,140.982614 115.200498,109.176452" fill="#0089CC" transform="translate(57.610406, 109.178563) scale(1, -1) translate(-57.610406, -109.178563) ">
</path>
<path d="M230.385749,191.086817 C230.385749,159.280656 204.603929,133.494615 172.789324,133.494615 C140.987384,133.494615 115.201343,159.280656 115.201343,191.086817 C115.201343,222.892979 140.987384,248.67902 172.789324,248.67902 C204.603929,248.67902 230.385749,222.892979 230.385749,191.086817" fill="#009939" transform="translate(172.793546, 191.086817) scale(1, -1) translate(-172.793546, -191.086817) ">
</path>
<path d="M185.592001,57.9843213 C185.592001,26.1781597 159.805959,0.392118349 127.999798,0.392118349 C96.1936359,0.392118349 70.4075946,26.1781597 70.4075946,57.9843213 C70.4075946,89.790483 96.1936359,115.576524 127.999798,115.576524 C159.805959,115.576524 185.592001,89.790483 185.592001,57.9843213" fill="#BF0000" transform="translate(127.999798, 57.984321) scale(1, -1) translate(-127.999798, -57.984321) ">
</path>
<path d="M140.798675,57.9788331 C140.798675,56.76721 140.904217,55.580917 140.980207,54.3861807 C166.525612,60.2796505 185.590734,83.1189569 185.590734,110.454356 C185.590734,111.665979 185.485192,112.856494 185.409202,114.05123 C159.863796,108.153539 140.798675,85.3142322 140.798675,57.9788331" fill="#FC0007" transform="translate(163.194704, 84.218705) scale(1, -1) translate(-163.194704, -84.218705) ">
</path>
<path d="M148.39686,162.570614 C158.322038,145.219495 176.973434,133.495881 198.394255,133.495881 C207.124696,133.495881 215.369643,135.496959 222.787141,138.975626 C212.866185,156.326744 194.214789,168.050358 172.789746,168.050358 C164.059305,168.050358 155.814358,166.049281 148.39686,162.570614" fill="#1CD306" transform="translate(185.592001, 150.773120) scale(1, -1) translate(-185.592001, -150.773120) ">
</path>
<path d="M115.200498,191.086817 C115.200498,177.015947 120.258075,164.139813 128.642338,154.138646 C137.018157,164.139813 142.075734,177.015947 142.075734,191.086817 C142.075734,205.157688 137.018157,218.033822 128.642338,228.034989 C120.258075,218.033822 115.200498,205.157688 115.200498,191.086817" fill="#0F7504" transform="translate(128.638116, 191.086817) scale(1, -1) translate(-128.638116, -191.086817) ">
</path>

After

Width:  |  Height:  |  Size: 5.0 KiB

2
icons/svg/hentai.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M358.834 61.088c-16.677.158-33.4 3.933-49 12.023-21.366 11.083-40.224 30.342-54.084 58.193-13.86-27.85-32.718-47.11-54.084-58.192-16.42-8.515-34.087-12.25-51.633-12.016-10.528.14-21.012 1.706-31.158 4.525-54.11 15.032-100.2 65.618-97.844 128.216C22.144 223.394 34.923 248.74 53.32 271c13.254 16.036 29.445 30.674 46.823 44.813 1.536 62.25 49.414 85.402 96.515 77.097 21.517 19.774 39.698 40.855 50.594 64.686l8.498 18.586 8.498-18.586c10.56-23.096 27.953-43.614 48.604-62.858 38.73.263 70.002-20.92 78.976-63.515 24.636-18.988 48.233-38.3 66.352-60.223 18.398-22.26 31.177-47.606 32.29-77.164 2.354-62.598-43.734-113.184-97.845-128.217-10.99-3.054-22.38-4.64-33.79-4.532zm-208.61 18.668c14.693-.212 29.29 2.917 42.84 9.945 21.678 11.245 41.143 32.584 53.885 68.306l8.8 24.674 8.8-24.674c9.17-25.704 21.82-43.96 36.272-56.367 42.38-32.464 75.468 1.13 81.944 20.153 17.593 51.696-40.657 77.01-90.434 44.572 9.057 34.565 64.323 57.726 109.563 22.453 25.06-19.542 32.273-60.32 18.162-84.765-1.93-3.342-3.97-6.47-6.106-9.39 34.043 19.405 59.444 55.933 57.843 98.47v.002c-.927 24.645-11.312 45.744-28.02 65.96-13.474 16.302-31.075 31.77-50.36 47.14-3.396-32.532-28.867-60.732-72.632-72.633 37.742 25.785 50.993 69.674 29.945 105.433-36.287 27.684-72.58 57.176-94.975 94.815-10.18-17.11-23.243-32.53-37.86-46.87 50.032-19.325 90.573-74.834 60.057-156.552-10.006 99.388-63.498 121.28-116.892 108.82-9.705-7.406-19.41-14.69-28.854-21.955-24.76-19.05-47.766-37.984-64.473-58.2-16.708-20.214-27.093-41.313-28.02-65.958v-.002c-.347-9.22.578-18.155 2.58-26.697C59.897 202.6 88.5 232.264 132.05 252.83c77.033 36.38 147.145-25.855 70.425-93.076 28.247 49.57-4.545 91.677-60.08 49.81-36.166-27.262-56.032-62.257-63.96-101.392 13.264-11.443 28.938-19.96 45.444-24.547 8.68-2.412 17.53-3.742 26.345-3.87z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

27
icons/svg/instagram.svg Normal file
View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="28" height="28" rx="6" fill="url(#paint0_radial_87_7153)"/>
<rect x="2" y="2" width="28" height="28" rx="6" fill="url(#paint1_radial_87_7153)"/>
<rect x="2" y="2" width="28" height="28" rx="6" fill="url(#paint2_radial_87_7153)"/>
<path d="M23 10.5C23 11.3284 22.3284 12 21.5 12C20.6716 12 20 11.3284 20 10.5C20 9.67157 20.6716 9 21.5 9C22.3284 9 23 9.67157 23 10.5Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 21C18.7614 21 21 18.7614 21 16C21 13.2386 18.7614 11 16 11C13.2386 11 11 13.2386 11 16C11 18.7614 13.2386 21 16 21ZM16 19C17.6569 19 19 17.6569 19 16C19 14.3431 17.6569 13 16 13C14.3431 13 13 14.3431 13 16C13 17.6569 14.3431 19 16 19Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 15.6C6 12.2397 6 10.5595 6.65396 9.27606C7.2292 8.14708 8.14708 7.2292 9.27606 6.65396C10.5595 6 12.2397 6 15.6 6H16.4C19.7603 6 21.4405 6 22.7239 6.65396C23.8529 7.2292 24.7708 8.14708 25.346 9.27606C26 10.5595 26 12.2397 26 15.6V16.4C26 19.7603 26 21.4405 25.346 22.7239C24.7708 23.8529 23.8529 24.7708 22.7239 25.346C21.4405 26 19.7603 26 16.4 26H15.6C12.2397 26 10.5595 26 9.27606 25.346C8.14708 24.7708 7.2292 23.8529 6.65396 22.7239C6 21.4405 6 19.7603 6 16.4V15.6ZM15.6 8H16.4C18.1132 8 19.2777 8.00156 20.1779 8.0751C21.0548 8.14674 21.5032 8.27659 21.816 8.43597C22.5686 8.81947 23.1805 9.43139 23.564 10.184C23.7234 10.4968 23.8533 10.9452 23.9249 11.8221C23.9984 12.7223 24 13.8868 24 15.6V16.4C24 18.1132 23.9984 19.2777 23.9249 20.1779C23.8533 21.0548 23.7234 21.5032 23.564 21.816C23.1805 22.5686 22.5686 23.1805 21.816 23.564C21.5032 23.7234 21.0548 23.8533 20.1779 23.9249C19.2777 23.9984 18.1132 24 16.4 24H15.6C13.8868 24 12.7223 23.9984 11.8221 23.9249C10.9452 23.8533 10.4968 23.7234 10.184 23.564C9.43139 23.1805 8.81947 22.5686 8.43597 21.816C8.27659 21.5032 8.14674 21.0548 8.0751 20.1779C8.00156 19.2777 8 18.1132 8 16.4V15.6C8 13.8868 8.00156 12.7223 8.0751 11.8221C8.14674 10.9452 8.27659 10.4968 8.43597 10.184C8.81947 9.43139 9.43139 8.81947 10.184 8.43597C10.4968 8.27659 10.9452 8.14674 11.8221 8.0751C12.7223 8.00156 13.8868 8 15.6 8Z" fill="white"/>
<defs>
<radialGradient id="paint0_radial_87_7153" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(12 23) rotate(-55.3758) scale(25.5196)">
<stop stop-color="#B13589"/>
<stop offset="0.79309" stop-color="#C62F94"/>
<stop offset="1" stop-color="#8A3AC8"/>
</radialGradient>
<radialGradient id="paint1_radial_87_7153" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(11 31) rotate(-65.1363) scale(22.5942)">
<stop stop-color="#E0E8B7"/>
<stop offset="0.444662" stop-color="#FB8A2E"/>
<stop offset="0.71474" stop-color="#E2425C"/>
<stop offset="1" stop-color="#E2425C" stop-opacity="0"/>
</radialGradient>
<radialGradient id="paint2_radial_87_7153" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(0.500002 3) rotate(-8.1301) scale(38.8909 8.31836)">
<stop offset="0.156701" stop-color="#406ADC"/>
<stop offset="0.467799" stop-color="#6A45BE"/>
<stop offset="1" stop-color="#6A45BE" stop-opacity="0"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

2
icons/svg/libraries.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><title>ionicons-v5-l</title><path d="M64,480H48a32,32,0,0,1-32-32V112A32,32,0,0,1,48,80H64a32,32,0,0,1,32,32V448A32,32,0,0,1,64,480Z"/><path d="M240,176a32,32,0,0,0-32-32H144a32,32,0,0,0-32,32v28a4,4,0,0,0,4,4H236a4,4,0,0,0,4-4Z"/><path d="M112,448a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V418a2,2,0,0,0-2-2H114a2,2,0,0,0-2,2Z"/><rect x="112" y="240" width="128" height="144" rx="2" ry="2"/><path d="M320,480H288a32,32,0,0,1-32-32V64a32,32,0,0,1,32-32h32a32,32,0,0,1,32,32V448A32,32,0,0,1,320,480Z"/><path d="M495.89,445.45l-32.23-340c-1.48-15.65-16.94-27-34.53-25.31l-31.85,3c-17.59,1.67-30.65,15.71-29.17,31.36l32.23,340c1.48,15.65,16.94,27,34.53,25.31l31.85-3C484.31,475.14,497.37,461.1,495.89,445.45Z"/></svg>

After

Width:  |  Height:  |  Size: 936 B

4
icons/svg/meta.svg Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" id="Camada_1" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style type="text/css">
.st0{fill:#FFFFFF;}
</style><path d="M6,2h20c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H6c-2.2,0-4-1.8-4-4V6C2,3.8,3.8,2,6,2z"/><path class="st0" d="M7.4,18.6c0-3.6,1.8-7.2,3.9-7.2c1.1,0,2.1,0.7,3.6,2.8c-1.4,2.1-2.2,3.5-2.2,3.5c-1.9,2.9-2.5,3.6-3.6,3.6 C8,21.2,7.4,20.3,7.4,18.6 M19.7,17.3l-1.3-2.1c-0.3-0.6-0.7-1.1-1-1.6c1.2-1.8,2.1-2.7,3.3-2.7c2.4,0,4.3,3.5,4.3,7.8 c0,1.6-0.5,2.6-1.6,2.6C22.2,21.2,21.7,20.5,19.7,17.3 M16.3,12.1c-1.8-2.2-3.2-3.1-5-3.1C7.7,9,5,13.7,5,18.6c0,3.1,1.5,5,4,5 c1.8,0,3.1-0.8,5.4-4.9c0,0,1-1.7,1.6-2.9c0.2,0.4,0.5,0.8,0.7,1.2l1.1,1.8c2.1,3.5,3.3,4.7,5.4,4.7c2.4,0,3.8-2,3.8-5.1 c0-5.2-2.8-9.5-6.2-9.5C19,9,17.6,10.4,16.3,12.1"/></svg>

After

Width:  |  Height:  |  Size: 969 B

2
icons/svg/microsoft.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="#F35325" d="M1 1h6.5v6.5H1V1z"/><path fill="#81BC06" d="M8.5 1H15v6.5H8.5V1z"/><path fill="#05A6F0" d="M1 8.5h6.5V15H1V8.5z"/><path fill="#FFBA08" d="M8.5 8.5H15V15H8.5V8.5z"/></svg>

After

Width:  |  Height:  |  Size: 414 B

3
icons/svg/news.svg Normal file
View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" fill="#000000" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M344.854 687.167c26.725 56.8 66.665 111.099 118.91 161.654-109.515-16.445-200.574-83.285-250.026-175.73l131.114 14.076zM461.776 177.924c-106.691 16.718-195.535 81.185-245.233 170.432l128.342-12.64c26.395-55.654 65.729-108.624 116.89-157.793zM502.016 337.406l1.78-163.191h-0.362c-57.402 50.103-101.083 104.341-130.194 161.745l128.774 1.45zM224.829 388.081l-23.709-0.211-23.439-0.304-1.84 169.497-94.898-170.523-52.909-0.575-2.593 241.198 23.589 0.331 23.468 0.211 1.871-173.871 97.645 174.957 50.256 0.575 2.564-241.289zM450.373 433.36l0.211-21.506 0.271-21.357-177.611-1.9-2.593 241.289 183.132 1.93 0.241-21.446 0.211-21.387-132.697-1.418 0.663-62.954 117.977 1.266 0.211-20.694 0.211-20.814-117.977-1.238 0.575-51.161 127.175 1.387zM691.15 568.256l-33.060-175.501-53.664-0.635-36.349 176.255-38.43-177.009-52.397-0.603 64.553 242.012 23.922 0.241 23.981 0.304 39.907-189.616 36.711 190.401 24.071 0.331 23.889 0.241 69.742-240.566-50.949-0.544-41.929 174.687zM529.708 174.514h-0.362l-1.748 163.162 128.866 1.359c-27.932-58.038-70.404-113.18-126.754-164.521zM804.932 340.603c-53.633-89.519-145.152-151.602-251.828-164.202 68.335 52.922 106.493 106.707 131.741 162.933l120.086 1.266zM554.925 849.786c109.455-14.028 201.386-78.448 252.927-168.876l-130.547 9.845c-27.963 56.197-69.108 109.589-122.378 159.030zM648.738 690.455l-124.914-1.359-1.69 155.833c54.961-47.872 97.462-99.846 126.602-154.475zM981.396 521.109c-11.763-10.407-35.052-19.757-70.074-27.873-24.132-5.791-39.907-10.528-47.267-14.629-7.513-3.953-11.283-9.593-11.191-16.861 0.061-9.923 3.771-17.979 11.101-23.5 7.209-5.34 17.283-8.084 30.044-7.904 14.781 0.121 26.725 3.682 35.867 10.407 9.079 6.788 13.998 15.867 14.721 27.391l49.077 0.603c-1.569-24.282-10.769-43.469-27.6-57.887-16.741-14.419-38.703-21.748-65.729-22.020-28.837-0.331-51.852 6.335-68.956 19.728-17.073 13.546-25.73 32.246-25.973 55.535-0.211 20.905 6.004 36.349 18.642 46.393 12.819 9.984 38.338 19.517 76.469 28.415 20.753 4.827 34.238 9.562 40.572 13.786 6.395 4.346 9.593 10.979 9.502 20.151-0.090 9.199-4.705 16.259-13.786 21.387-9.109 5.068-21.628 7.54-37.766 7.359-15.596-0.181-27.813-3.71-36.439-10.738-8.746-6.91-13.212-16.711-13.634-29.652l-48.534-0.512c0.875 26.063 9.895 46.213 26.908 60.511 17.043 14.419 40.844 21.689 71.278 21.989 30.495 0.304 54.598-5.942 72.578-19.154 18.038-13.151 27.088-30.979 27.328-53.664 0.362-22.503-5.429-38.974-17.134-49.26zM496.586 844.508l1.69-155.651-124.914-1.359c28.053 55.201 69.348 108.050 123.223 157.009z" /></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

5
icons/svg/nintendo.svg Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#e60012"/>
<path d="M296.9 307.7h127.3l176.6 285v-285h126.4v408.7H600.9l-177.4-285v285H296.9V307.7" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 391 B

13
icons/svg/numbers/n01.svg Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 496.158 496.158" xml:space="preserve">
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

19
icons/svg/numbers/n02.svg Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 496.158 496.158" xml:space="preserve">
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

24
icons/svg/numbers/n03.svg Normal file
View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 496.158 496.158" xml:space="preserve">
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
<path style="fill:#FFFFFF;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

4
icons/svg/onedrive.svg Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="#4F8AD8" fill-rule="evenodd" d="M21.6924215,13.986674 C22.9997233,14.1908343 24,15.3216239 24,16.6862741 C24,17.7522298 23.3892094,18.6751163 22.4988002,19.1254521 C22.4321553,19.1592575 22.3639409,19.1904067 22.294157,19.2186583 L8.59404885,19.2186583 L8.59404885,19.2181754 C6.85476268,19.2073094 5.44797646,17.7943658 5.44797646,16.0524235 C5.44797646,14.3037201 6.86550796,12.8860679 8.61421133,12.8860679 C8.70222602,12.8860679 8.78903338,12.8906557 8.87511633,12.8976583 C8.87028699,12.8172498 8.86702719,12.7364791 8.86702719,12.6548633 C8.86702719,10.4662072 10.6413261,8.69190834 12.8299821,8.69190834 C14.3676434,8.69190834 15.6998164,9.5683125 16.3568479,10.8482079 C16.9002691,10.4918027 17.5498151,10.283779 18.2483789,10.283779 C20.1559675,10.283779 21.7023216,11.8301331 21.7023216,13.7377217 C21.7023216,13.8215107 21.6982167,13.9043338 21.6924215,13.986674 Z M8.18741857,12.2086324 C6.25507961,12.421727 4.74711875,14.0641849 4.74711875,16.0524235 C4.74711875,16.8619413 4.9992102,17.6150766 5.42841764,18.2378198 L3.27887919,18.2378198 C1.46799809,18.2378198 -1.77635684e-15,16.7698217 -1.77635684e-15,14.9589406 C-1.77635684e-15,13.2281057 1.34134869,11.8115401 3.04103428,11.6894786 C2.98428956,11.4324371 2.95350253,11.1656161 2.95350253,10.8915512 C2.95350253,8.85248384 4.60646427,7.19964283 6.64541087,7.19964283 C7.40977438,7.19964283 8.11980783,7.43181327 8.70886636,7.82963 C9.54542848,6.15252157 11.276867,5 13.2783862,5 C15.9223281,5 18.0967377,7.01021204 18.3569183,9.58557738 C18.3206982,9.58461151 18.2847197,9.58292125 18.2483789,9.58292125 C17.6798451,9.58292125 17.1232638,9.6982217 16.6079734,9.92012979 C15.7386926,8.71545137 14.3462736,7.99105063 12.8299821,7.99105063 C10.4089142,7.99105063 8.41282793,9.84563725 8.18741857,12.2086324 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

7
icons/svg/paypal.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="24" cy="24" r="20" fill="#0070BA"/>
<path d="M32.3305 18.0977C32.3082 18.24 32.2828 18.3856 32.2542 18.5351C31.2704 23.5861 27.9046 25.331 23.606 25.331H21.4173C20.8916 25.331 20.4486 25.7127 20.3667 26.2313L19.2461 33.3381L18.9288 35.3527C18.8755 35.693 19.1379 36 19.4815 36H23.3634C23.8231 36 24.2136 35.666 24.286 35.2127L24.3241 35.0154L25.055 30.3772L25.1019 30.1227C25.1735 29.6678 25.5648 29.3338 26.0245 29.3338H26.6051C30.3661 29.3338 33.3103 27.8068 34.1708 23.388C34.5303 21.5421 34.3442 20.0008 33.393 18.9168C33.1051 18.59 32.748 18.3188 32.3305 18.0977Z" fill="white" fill-opacity="0.6"/>
<path d="M31.3009 17.6871C31.1506 17.6434 30.9955 17.6036 30.8364 17.5678C30.6766 17.5328 30.5127 17.5018 30.3441 17.4748C29.754 17.3793 29.1074 17.334 28.4147 17.334H22.5676C22.4237 17.334 22.2869 17.3666 22.1644 17.4254C21.8948 17.5551 21.6944 17.8104 21.6459 18.1229L20.402 26.0013L20.3662 26.2311C20.4481 25.7126 20.8911 25.3308 21.4168 25.3308H23.6055C27.9041 25.3308 31.2699 23.5851 32.2537 18.5349C32.2831 18.3854 32.3078 18.2398 32.33 18.0975C32.0811 17.9655 31.8115 17.8525 31.5212 17.7563C31.4496 17.7324 31.3757 17.7094 31.3009 17.6871Z" fill="white" fill-opacity="0.8"/>
<path d="M21.6461 18.1231C21.6946 17.8105 21.895 17.5552 22.1646 17.4264C22.2879 17.3675 22.4239 17.3349 22.5678 17.3349H28.4149C29.1077 17.3349 29.7542 17.3803 30.3444 17.4757C30.513 17.5027 30.6768 17.5338 30.8367 17.5687C30.9957 17.6045 31.1508 17.6443 31.3011 17.688C31.3759 17.7103 31.4498 17.7334 31.5222 17.7564C31.8125 17.8527 32.0821 17.9664 32.331 18.0976C32.6237 16.231 32.3287 14.9601 31.3194 13.8093C30.2068 12.5424 28.1986 12 25.629 12H18.169C17.6441 12 17.1963 12.3817 17.1152 12.9011L14.0079 32.5969C13.9467 32.9866 14.2473 33.3381 14.6402 33.3381H19.2458L20.4022 26.0014L21.6461 18.1231Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

7
icons/svg/perplexity.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg width="36" height="36" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1">
<g>
<title>Layer 1</title>
<path id="svg_1" stroke-miterlimit="10" stroke="#20808d" fill="none" d="m27.496,1.398l-9.495,9.504l9.495,0l0,-9.504l0,2.602l0,-2.602zm-9.496,9.504l-9.496,-9.504l0,9.504l9.496,0zm-0.021,-10.902l0,36m9.517,-15.596l-9.495,-9.504l0,13.625l9.495,9.504l0,-13.625zm-18.991,0l9.496,-9.504l0,13.625l-9.496,9.504l0,-13.625zm-4.075,-9.504l0,13.57l4.074,0l0,-4.066l9.496,-9.504l-13.57,0zm13.57,0l9.495,9.504l0,4.066l4.075,0l0,-13.57l-13.57,0z" class="cls-1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 577 B

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><path d="M11.503 12.216c-.119.259-.251.549-.387.858-.482 1.092-1.016 2.42-1.21 3.271a4.91 4.91 0 0 0-.112 1.096c0 .164.009.337.022.514.682.25 1.417.388 2.186.39a6.39 6.39 0 0 0 2.001-.326 3.808 3.808 0 0 1-.418-.441c-.854-1.089-1.329-2.682-2.082-5.362M8.355 6.813A6.347 6.347 0 0 0 5.657 12a6.347 6.347 0 0 0 2.625 5.134c.39-1.622 1.366-3.107 2.83-6.084-.087-.239-.186-.5-.297-.775-.406-1.018-.991-2.198-1.513-2.733a4.272 4.272 0 0 0-.947-.729m9.172 12.464c-.84-.105-1.533-.232-2.141-.446A7.625 7.625 0 0 1 4.376 12a7.6 7.6 0 0 1 2.6-5.73 5.582 5.582 0 0 0-1.324-.162c-2.236.02-4.597 1.258-5.58 4.602-.092.486-.07.854-.07 1.29 0 6.627 5.373 12 12 12 4.059 0 7.643-2.017 9.815-5.101-1.174.293-2.305.433-3.271.436-.362 0-.702-.02-1.019-.058m-2.254-2.325c.074.036.242.097.475.163a6.354 6.354 0 0 0 2.6-5.115h-.002a6.354 6.354 0 0 0-6.345-6.345 6.338 6.338 0 0 0-1.992.324c1.289 1.468 1.908 3.566 2.507 5.862l.001.003c.001.002.192.637.518 1.48.326.842.789 1.885 1.293 2.645.332.51.697.876.945.983M12.001 0a11.98 11.98 0 0 0-9.752 5.013c1.134-.71 2.291-.967 3.301-.957 1.394.004 2.491.436 3.017.732.127.073.248.152.366.233A7.625 7.625 0 0 1 19.625 12a7.605 7.605 0 0 1-2.268 5.425c.344.038.709.063 1.084.061 1.328 0 2.766-.293 3.842-1.198.703-.592 1.291-1.458 1.617-2.757.065-.502.1-1.012.1-1.531 0-6.627-5.371-12-11.999-12"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#0070d1"/>
<path d="M242.37 595.7c-21.06 14-14 40.72 30.89 53.36a302.24 302.24 0 0 0 146 11.23c2.81 0 5.62-1.4 7-1.4v-47.75l-47.74 15.45c-18.25 5.62-36.51 7-54.76 2.81-14-4.21-11.23-12.64 5.62-19.66L426.32 576v-52l-134.8 46.34a181.6 181.6 0 0 0-49.15 25.36zm325.77-210.63v136.21c57.57 28.08 102.51 0 102.51-73 0-74.42-26.68-108.12-103.91-134.8-40.72-14-82.85-26.68-125-35.1v405.78l98.29 29.49V372.43c0-15.45 0-26.68 11.23-22.47 15.48 4.22 16.88 19.66 16.88 35.11zM750.69 563.4c-40.72-14-84.25-19.66-126.38-15.45-22.47 1.4-43.53 7-63.19 14l-4.21 1.4v54.76l91.27-33.7c18.25-5.62 36.51-7 54.76-2.81 14 4.21 11.23 12.64-5.62 19.66l-140.42 52v53.36L750.69 635c14-5.62 26.68-12.64 37.91-23.87 9.83-14.03 5.62-33.69-37.91-47.73z" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1014 B

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.2901 9.1698L7.70015 3.0698C4.95015 1.6198 1.96015 4.5498 3.35015 7.3298L4.97015 10.5698C5.42015 11.4698 5.42015 12.5298 4.97015 13.4298L3.35015 16.6698C1.96015 19.4498 4.95015 22.3698 7.70015 20.9298L19.2901 14.8298C21.5701 13.6298 21.5701 10.3698 19.2901 9.1698Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 590 B

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.4" d="M16.19 2H7.81C4.17 2 2 4.17 2 7.81V16.18C2 19.83 4.17 22 7.81 22H16.18C19.82 22 21.99 19.83 21.99 16.19V7.81C22 4.17 19.83 2 16.19 2Z" fill="#292D32"/>
<path d="M11.9995 10.6899C11.2795 10.6899 10.6895 11.2799 10.6895 11.9999C10.6895 12.7199 11.2795 13.3099 11.9995 13.3099C12.7195 13.3099 13.3095 12.7199 13.3095 11.9999C13.3095 11.2799 12.7195 10.6899 11.9995 10.6899Z" fill="#292D32"/>
<path d="M6.99945 10.6899C6.27945 10.6899 5.68945 11.2799 5.68945 11.9999C5.68945 12.7199 6.27945 13.3099 6.99945 13.3099C7.71945 13.3099 8.30945 12.7199 8.30945 11.9999C8.30945 11.2799 7.71945 10.6899 6.99945 10.6899Z" fill="#292D32"/>
<path d="M16.9995 10.6899C16.2795 10.6899 15.6895 11.2799 15.6895 11.9999C15.6895 12.7199 16.2795 13.3099 16.9995 13.3099C17.7195 13.3099 18.3095 12.7199 18.3095 11.9999C18.3095 11.2799 17.7195 10.6899 16.9995 10.6899Z" fill="#292D32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" fill="white" fill-opacity="0.01"/>
<path d="M40 28L24 40L8 28" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8 10H40" stroke="#000000" stroke-width="4" stroke-linecap="round"/>
<path d="M8 18H40" stroke="#000000" stroke-width="4" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 558 B

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" ?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 512 512" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style type="text/css">
.st0{fill:#333333;}
.st1{fill:none;stroke:#333333;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Layer_1"/>
<g id="Layer_2">

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<title>skip</title>
<g id="Layer_2" data-name="Layer 2">
<g id="invisible_box" data-name="invisible box">
<rect width="48" height="48" fill="none"/>
</g>
<g id="icons_Q2" data-name="icons Q2">
<g>
<circle cx="8" cy="37" r="6"/>
<path d="M24,31a6,6,0,1,0,6,6A6,6,0,0,0,24,31Zm0,8a2,2,0,1,1,2-2A2,2,0,0,1,24,39Z"/>
<circle cx="40" cy="37" r="6"/>
<path d="M37.4,19.6a1.9,1.9,0,0,0-3,.2,2.1,2.1,0,0,0,.2,2.7l4,3.9a1.9,1.9,0,0,0,2.8,0l4-3.9a2.3,2.3,0,0,0,.3-2.7,2,2,0,0,0-3.1-.2l-.6.6A18,18,0,0,0,6,21v2a2,2,0,0,0,4,0V21a14,14,0,0,1,28-.9Z"/>
</g>
</g>
</g>

After

Width:  |  Height:  |  Size: 858 B

13
icons/svg/porn.svg Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 256 193" xml:space="preserve">
<path d="M24.5,146c12.4,0,22.5,10.1,22.5,22.5s-10.1,22.5-22.5,22.5S2,180.9,2,168.5S12.1,146,24.5,146z M150.2,3.6
C140,0.5,132.8,2,126.3,8.4c-8.7,8.6-8.7,22.6-0.1,31.3s22.1,8.3,31.3,0.1c11.7-10.4,14.4-26.2,11.8-36.7c0,0,0,0,0,0
C163.4,6.5,156.6,5.6,150.2,3.6z M248.5,165.6l-35.6-27.4c-4.6-3.6-11.7-3.9-16.7-0.9l-37.9,24.9c-0.5,0.3-1.1,0.5-1.6,0.5
c-1,0-2.1-0.6-2.6-1.6c-0.7-1.4-0.2-3.1,1.1-3.9l12-7.9c5.1-3.4,8.2-9.1,8.2-15.2V65.6c0-9.8-7.2-17.3-17.1-17.3
c-5.7,0-11.7,3.9-15.2,7.1c-6.6,6-11.7,16.8-11.7,25.8c0,4.5,0,24,0,24l-27.7,18.2c-4.5,3-5.8,9.1-2.8,13.6c1.9,2.9,5,4.4,8.2,4.4
c1.3,0,2.6-0.3,3.8-0.8l37.9-24.9V91.5c0-1.6,1.2-3,2.8-3.1c1.7-0.1,3.1,1.3,3.1,2.9v27.6l-43.8,28.9c-3.8-0.4-7.8-0.7-11.7-0.8
c-17.1-0.5-48.7,5.2-49.1,26.2C51.8,183,59.9,191,69.6,191h89c5.1,0,10.2-1.5,14.5-4.3l30.4-19.9l27.7,21.2c2.6,2,5.6,2.9,8.6,2.9
c4.2,0,8.4-1.9,11.2-5.5C255.8,179.2,254.7,170.4,248.5,165.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

14
icons/svg/proton.svg Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg xmlns="http://www.w3.org/2000/svg"
aria-label="ProtonMail" role="img"
viewBox="0 0 512 512">
<rect
width="512" height="512"
rx="15%"
fill="#8A90C7"/>
<g fill="#ffffff">

After

Width:  |  Height:  |  Size: 573 B

5
icons/svg/reddit.svg Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16 2C8.27812 2 2 8.27812 2 16C2 23.7219 8.27812 30 16 30C23.7219 30 30 23.7219 30 16C30 8.27812 23.7219 2 16 2Z" fill="#FC471E"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0193 8.90951C20.0066 8.98984 20 9.07226 20 9.15626C20 10.0043 20.6716 10.6918 21.5 10.6918C22.3284 10.6918 23 10.0043 23 9.15626C23 8.30819 22.3284 7.6207 21.5 7.6207C21.1309 7.6207 20.7929 7.7572 20.5315 7.98359L16.6362 7L15.2283 12.7651C13.3554 12.8913 11.671 13.4719 10.4003 14.3485C10.0395 13.9863 9.54524 13.7629 9 13.7629C7.89543 13.7629 7 14.6796 7 15.8103C7 16.5973 7.43366 17.2805 8.06967 17.6232C8.02372 17.8674 8 18.1166 8 18.3696C8 21.4792 11.5817 24 16 24C20.4183 24 24 21.4792 24 18.3696C24 18.1166 23.9763 17.8674 23.9303 17.6232C24.5663 17.2805 25 16.5973 25 15.8103C25 14.6796 24.1046 13.7629 23 13.7629C22.4548 13.7629 21.9605 13.9863 21.5997 14.3485C20.2153 13.3935 18.3399 12.7897 16.2647 12.7423L17.3638 8.24143L20.0193 8.90951ZM12.5 18.8815C13.3284 18.8815 14 18.194 14 17.3459C14 16.4978 13.3284 15.8103 12.5 15.8103C11.6716 15.8103 11 16.4978 11 17.3459C11 18.194 11.6716 18.8815 12.5 18.8815ZM19.5 18.8815C20.3284 18.8815 21 18.194 21 17.3459C21 16.4978 20.3284 15.8103 19.5 15.8103C18.6716 15.8103 18 16.4978 18 17.3459C18 18.194 18.6716 18.8815 19.5 18.8815ZM12.7773 20.503C12.5476 20.3462 12.2372 20.4097 12.084 20.6449C11.9308 20.8802 11.9929 21.198 12.2226 21.3548C13.3107 22.0973 14.6554 22.4686 16 22.4686C17.3446 22.4686 18.6893 22.0973 19.7773 21.3548C20.0071 21.198 20.0692 20.8802 19.916 20.6449C19.7628 20.4097 19.4524 20.3462 19.2226 20.503C18.3025 21.1309 17.1513 21.4449 16 21.4449C15.3173 21.4449 14.6345 21.3345 14 21.1137C13.5646 20.9621 13.1518 20.7585 12.7773 20.503Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--emojione-monotone" preserveAspectRatio="xMidYMid meet"><path d="M28.216 35.543h7.431l-3.666-11.418z" fill="#000000"></path><path d="M32 2C15.432 2 2 15.431 2 32c0 16.569 13.432 30 30 30s30-13.432 30-30C62 15.431 48.568 2 32 2m7.167 44.508l-1.914-5.965H26.567L24.6 46.508h-6.342l10.358-29.016h6.859l10.266 29.016h-6.574" fill="#000000"></path></svg>

After

Width:  |  Height:  |  Size: 653 B

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--emojione-monotone" preserveAspectRatio="xMidYMid meet"><path d="M36.929 34.225c-.688-.315-1.654-.479-2.899-.492h-7.143v7.736h7.045c1.258 0 2.238-.171 2.938-.512c1.271-.631 1.907-1.838 1.907-3.623c0-1.509-.616-2.545-1.848-3.109" fill="#000000"></path><path d="M37.008 28.211c.785-.479 1.179-1.329 1.179-2.55c0-1.352-.52-2.244-1.558-2.677c-.896-.303-2.04-.453-3.43-.453h-6.313v6.397h7.053c1.26.001 2.284-.239 3.069-.717" fill="#000000"></path><path d="M32 2C15.432 2 2 15.432 2 32s13.432 30 30 30s30-13.432 30-30S48.568 2 32 2m11.607 40.374a7.996 7.996 0 0 1-2.055 2.283c-.927.709-2.02 1.194-3.279 1.457c-1.259.263-2.625.394-4.1.394H21.1V17.492h14.023c3.537.052 6.044 1.082 7.52 3.09c.888 1.234 1.332 2.71 1.332 4.43c0 1.771-.449 3.195-1.344 4.271c-.502.604-1.238 1.154-2.214 1.653c1.481.538 2.599 1.392 3.353 2.56c.753 1.168 1.13 2.585 1.13 4.252c-.001 1.719-.431 3.261-1.293 4.626" fill="#000000"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--emojione-monotone" preserveAspectRatio="xMidYMid meet"><path d="M32 2C15.432 2 2 15.432 2 32s13.432 30 30 30s30-13.432 30-30S48.568 2 32 2m-4.592 37.521c1.316 1.621 2.988 2.431 5.018 2.431c2.078 0 3.664-.695 4.756-2.086c.604-.748 1.104-1.87 1.502-3.366h6.023c-.52 3.163-1.848 5.735-3.982 7.717c-2.137 1.981-4.871 2.972-8.209 2.972c-4.129 0-7.375-1.338-9.736-4.016c-2.363-2.689-3.545-6.378-3.545-11.063c0-5.066 1.344-8.971 4.031-11.713c2.338-2.389 5.311-3.583 8.92-3.583c4.83 0 8.361 1.601 10.594 4.804c1.234 1.798 1.896 3.602 1.986 5.413h-6.063c-.387-1.392-.881-2.44-1.484-3.149c-1.08-1.26-2.682-1.891-4.803-1.891c-2.16 0-3.863.89-5.111 2.668c-1.246 1.778-1.869 4.295-1.869 7.549c0 3.254.658 5.691 1.972 7.313" fill="#000000"></path></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--emojione-monotone" preserveAspectRatio="xMidYMid meet"><path d="M32.202 22.531h-5.6v18.938h5.6c2.865 0 4.862-1.41 5.993-4.232c.617-1.549.927-3.393.927-5.531c0-2.953-.464-5.221-1.39-6.801c-.927-1.583-2.77-2.374-5.53-2.374" fill="#000000"></path><path d="M32 2C15.432 2 2 15.432 2 32s13.432 30 30 30s30-13.432 30-30S48.568 2 32 2m10.959 39.094c-2.102 3.609-5.346 5.414-9.732 5.414H20.716V17.492h12.511c1.799.025 3.297.236 4.492.629c2.035.67 3.684 1.896 4.944 3.682c1.012 1.443 1.7 3.006 2.068 4.686s.552 3.281.552 4.803c0 3.858-.774 7.126-2.324 9.802" fill="#000000"></path></svg>

After

Width:  |  Height:  |  Size: 883 B

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" ?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="_x36_0"/>
<g id="_x35_9"/>
<g id="_x35_8"/>
<g id="_x35_7"/>
<g id="_x35_6"/>
<g id="_x35_5"/>
<g id="_x35_4"/>
<g id="_x35_3"/>
<g id="_x35_2"/>
<g id="_x35_1"/>
<g id="_x35_0"/>
<g id="_x34_9"/>
<g id="_x34_8"/>
<g id="_x34_7"/>
<g id="_x34_6"/>
<g id="_x34_5"/>
<g id="_x34_4"/>
<g id="_x34_3"/>
<g id="_x34_2"/>
<g id="_x34_1"/>
<g id="_x34_0"/>
<g id="_x33_9"/>
<g id="_x33_8"/>
<g id="_x33_7"/>
<g id="_x33_6"/>
<g id="_x33_5"/>
<g id="_x33_4"/>
<g id="_x33_3"/>
<g id="_x33_2"/>
<g id="_x33_1"/>
<g id="_x33_0"/>
<g id="_x32_9"/>

After

Width:  |  Height:  |  Size: 4.7 KiB

7
icons/svg/samsung.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg xmlns="http://www.w3.org/2000/svg"
aria-label="Samsung" role="img"
viewBox="0 0 512 512" fill="#117cad"><rect
width="512" height="512"
rx="15%"
fill="#034ea2"/><path fill="#ffffff" d="m72,224c-16 0-23 5-22 20 3 12 25 19 27 23l0 4c0 2-1 4-5 4-4 0-6-3-6-5l0-5-16 0c-1 16 11 21 22 21 14 0 21-4 21-17 1-19-24-20-26-28 0 -1 0-1 0-3 0-1 1-4 5-4 4 0 5 3 5 5l0 4 15 0 0-4c0-13-12-15-20-15zm353,15 0,33c1,21 39,17 39,0 l 0-20-17 0 0 8 5 0 0 11c-1 5-13 5-13 0 0-11 0-21 0-31 0-5 11-5 12 0l0 5 13 0 0-6c-1-20-39-17-39 0zm-160-15c-16 0-23 5-22 20 3 12 25 19 27 23l0 4c0 2-1 4-5 4-4 0-6-3-6-5l0-5-16 0c-1 16 11 21 22 21 14 0 21-4 21-17 1-19-24-20-26-28 0 -1 0-1 0-3 0-1 1-4 5-4 4 0 5 3 5 5l0 4 15 0 0-4c0-13-12-15-20-15zm-100 1-1 59 15 0 0-53 11 53 15 0 9-53 0 53 15 0-1-59-24 0-7 45-7-45-24 0zm135 0 0 43c0 1 0 3 0 2 1 11 9 15 21 15 11 0 20-4 20-15 0 0 0-3 0,-4l0-41-15 0 0 43c0 1 0 1 0 3 0 1-1 4-7 4-4 0-5-3-5-4 0 0 0-1 0-3l0-43zm-185 0-11 59 16 0 8-53 8 53 16 0-11-59zm243 0 0 59 15 0 0-48 15 48 21 0 0-59-15 0 0 47-13-47z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#DE2910" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><path fill="#FFDE02" d="M11.136 8.977l.736.356l.589-.566l-.111.81l.72.386l-.804.144l-.144.804l-.386-.72l-.81.111l.566-.589zm4.665 2.941l-.356.735l.566.59l-.809-.112l-.386.721l-.144-.805l-.805-.144l.721-.386l-.112-.809l.59.566zm-.957 3.779l.268.772l.817.017l-.651.493l.237.783l-.671-.467l-.671.467l.236-.783l-.651-.493l.817-.017zm-3.708 3.28l.736.356l.589-.566l-.111.81l.72.386l-.804.144l-.144.804l-.386-.72l-.81.111l.566-.589zM7 10.951l.929 2.671l2.826.058l-2.253 1.708l.819 2.706L7 16.479l-2.321 1.615l.819-2.706l-2.253-1.708l2.826-.058z"></path></svg>

After

Width:  |  Height:  |  Size: 1009 B

19
icons/svg/services-eu.svg Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -4 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_503_2543)">
<rect width="28" height="20" rx="2" fill="white"/>
<mask id="mask0_503_2543" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="20">
<rect width="28" height="20" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_503_2543)">
<rect width="28" height="20" fill="#043CAE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.0572 4.27615L14 4.00001L14.9428 4.27615L14.6666 3.33334L14.9428 2.39053L14 2.66668L13.0572 2.39053L13.3333 3.33334L13.0572 4.27615ZM13.0572 17.6095L14 17.3333L14.9428 17.6095L14.6666 16.6667L14.9428 15.7239L14 16L13.0572 15.7239L13.3333 16.6667L13.0572 17.6095ZM20.6666 10.6667L19.7238 10.9428L20 10L19.7238 9.0572L20.6666 9.33334L21.6095 9.0572L21.3333 10L21.6095 10.9428L20.6666 10.6667ZM6.3905 10.9428L7.33331 10.6667L8.27612 10.9428L7.99998 10L8.27612 9.0572L7.33331 9.33334L6.3905 9.0572L6.66665 10L6.3905 10.9428ZM19.7735 7.33334L18.8307 7.60948L19.1068 6.66668L18.8307 5.72387L19.7735 6.00001L20.7163 5.72387L20.4401 6.66668L20.7163 7.60948L19.7735 7.33334ZM7.28367 14.2762L8.22648 14L9.16929 14.2762L8.89314 13.3333L9.16929 12.3905L8.22648 12.6667L7.28367 12.3905L7.55981 13.3333L7.28367 14.2762ZM17.3333 4.89317L16.3905 5.16932L16.6666 4.22651L16.3905 3.2837L17.3333 3.55984L18.2761 3.2837L18 4.22651L18.2761 5.16932L17.3333 4.89317ZM9.72384 16.7163L10.6666 16.4402L11.6095 16.7163L11.3333 15.7735L11.6095 14.8307L10.6666 15.1068L9.72384 14.8307L9.99998 15.7735L9.72384 16.7163ZM19.7735 14L18.8307 14.2762L19.1068 13.3333L18.8307 12.3905L19.7735 12.6667L20.7163 12.3905L20.4401 13.3333L20.7163 14.2762L19.7735 14ZM7.28367 7.60948L8.22648 7.33334L9.16929 7.60948L8.89314 6.66668L9.16929 5.72387L8.22648 6.00001L7.28367 5.72387L7.55981 6.66668L7.28367 7.60948ZM17.3333 16.4402L16.3905 16.7163L16.6666 15.7735L16.3905 14.8307L17.3333 15.1068L18.2761 14.8307L18 15.7735L18.2761 16.7163L17.3333 16.4402ZM9.72384 5.16932L10.6666 4.89317L11.6095 5.16932L11.3333 4.22651L11.6095 3.2837L10.6666 3.55984L9.72384 3.2837L9.99998 4.22651L9.72384 5.16932Z" fill="#FFD429"/>
</g>
</g>
<defs>
<clipPath id="clip0_503_2543">
<rect width="28" height="20" rx="2" fill="white"/>
</clipPath>
</defs>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#CE2028" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4v-4h36v4z"></path><path fill="#22408C" d="M0 13h36v10H0z"></path><path fill="#EEE" d="M32 5H4a4 4 0 0 0-4 4v4h36V9a4 4 0 0 0-4-4z"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

34
icons/svg/services-us.svg Normal file
View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -4 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_503_3486)">
<rect width="28" height="20" rx="2" fill="white"/>
<mask id="mask0_503_3486" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="20">
<rect width="28" height="20" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_503_3486)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M28 0H0V1.33333H28V0ZM28 2.66667H0V4H28V2.66667ZM0 5.33333H28V6.66667H0V5.33333ZM28 8H0V9.33333H28V8ZM0 10.6667H28V12H0V10.6667ZM28 13.3333H0V14.6667H28V13.3333ZM0 16H28V17.3333H0V16ZM28 18.6667H0V20H28V18.6667Z" fill="#D02F44"/>
<rect width="12" height="9.33333" fill="#46467F"/>
<g filter="url(#filter0_d_503_3486)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.66665 1.99999C2.66665 2.36818 2.36817 2.66666 1.99998 2.66666C1.63179 2.66666 1.33331 2.36818 1.33331 1.99999C1.33331 1.63181 1.63179 1.33333 1.99998 1.33333C2.36817 1.33333 2.66665 1.63181 2.66665 1.99999ZM5.33331 1.99999C5.33331 2.36818 5.03484 2.66666 4.66665 2.66666C4.29846 2.66666 3.99998 2.36818 3.99998 1.99999C3.99998 1.63181 4.29846 1.33333 4.66665 1.33333C5.03484 1.33333 5.33331 1.63181 5.33331 1.99999ZM7.33331 2.66666C7.7015 2.66666 7.99998 2.36818 7.99998 1.99999C7.99998 1.63181 7.7015 1.33333 7.33331 1.33333C6.96512 1.33333 6.66665 1.63181 6.66665 1.99999C6.66665 2.36818 6.96512 2.66666 7.33331 2.66666ZM10.6666 1.99999C10.6666 2.36818 10.3682 2.66666 9.99998 2.66666C9.63179 2.66666 9.33331 2.36818 9.33331 1.99999C9.33331 1.63181 9.63179 1.33333 9.99998 1.33333C10.3682 1.33333 10.6666 1.63181 10.6666 1.99999ZM3.33331 3.99999C3.7015 3.99999 3.99998 3.70152 3.99998 3.33333C3.99998 2.96514 3.7015 2.66666 3.33331 2.66666C2.96512 2.66666 2.66665 2.96514 2.66665 3.33333C2.66665 3.70152 2.96512 3.99999 3.33331 3.99999ZM6.66665 3.33333C6.66665 3.70152 6.36817 3.99999 5.99998 3.99999C5.63179 3.99999 5.33331 3.70152 5.33331 3.33333C5.33331 2.96514 5.63179 2.66666 5.99998 2.66666C6.36817 2.66666 6.66665 2.96514 6.66665 3.33333ZM8.66665 3.99999C9.03484 3.99999 9.33331 3.70152 9.33331 3.33333C9.33331 2.96514 9.03484 2.66666 8.66665 2.66666C8.29846 2.66666 7.99998 2.96514 7.99998 3.33333C7.99998 3.70152 8.29846 3.99999 8.66665 3.99999ZM10.6666 4.66666C10.6666 5.03485 10.3682 5.33333 9.99998 5.33333C9.63179 5.33333 9.33331 5.03485 9.33331 4.66666C9.33331 4.29847 9.63179 3.99999 9.99998 3.99999C10.3682 3.99999 10.6666 4.29847 10.6666 4.66666ZM7.33331 5.33333C7.7015 5.33333 7.99998 5.03485 7.99998 4.66666C7.99998 4.29847 7.7015 3.99999 7.33331 3.99999C6.96512 3.99999 6.66665 4.29847 6.66665 4.66666C6.66665 5.03485 6.96512 5.33333 7.33331 5.33333ZM5.33331 4.66666C5.33331 5.03485 5.03484 5.33333 4.66665 5.33333C4.29846 5.33333 3.99998 5.03485 3.99998 4.66666C3.99998 4.29847 4.29846 3.99999 4.66665 3.99999C5.03484 3.99999 5.33331 4.29847 5.33331 4.66666ZM1.99998 5.33333C2.36817 5.33333 2.66665 5.03485 2.66665 4.66666C2.66665 4.29847 2.36817 3.99999 1.99998 3.99999C1.63179 3.99999 1.33331 4.29847 1.33331 4.66666C1.33331 5.03485 1.63179 5.33333 1.99998 5.33333ZM3.99998 5.99999C3.99998 6.36819 3.7015 6.66666 3.33331 6.66666C2.96512 6.66666 2.66665 6.36819 2.66665 5.99999C2.66665 5.6318 2.96512 5.33333 3.33331 5.33333C3.7015 5.33333 3.99998 5.6318 3.99998 5.99999ZM5.99998 6.66666C6.36817 6.66666 6.66665 6.36819 6.66665 5.99999C6.66665 5.6318 6.36817 5.33333 5.99998 5.33333C5.63179 5.33333 5.33331 5.6318 5.33331 5.99999C5.33331 6.36819 5.63179 6.66666 5.99998 6.66666ZM9.33331 5.99999C9.33331 6.36819 9.03484 6.66666 8.66665 6.66666C8.29846 6.66666 7.99998 6.36819 7.99998 5.99999C7.99998 5.6318 8.29846 5.33333 8.66665 5.33333C9.03484 5.33333 9.33331 5.6318 9.33331 5.99999ZM9.99998 8C10.3682 8 10.6666 7.70152 10.6666 7.33333C10.6666 6.96514 10.3682 6.66666 9.99998 6.66666C9.63179 6.66666 9.33331 6.96514 9.33331 7.33333C9.33331 7.70152 9.63179 8 9.99998 8ZM7.99998 7.33333C7.99998 7.70152 7.7015 8 7.33331 8C6.96512 8 6.66665 7.70152 6.66665 7.33333C6.66665 6.96514 6.96512 6.66666 7.33331 6.66666C7.7015 6.66666 7.99998 6.96514 7.99998 7.33333ZM4.66665 8C5.03484 8 5.33331 7.70152 5.33331 7.33333C5.33331 6.96514 5.03484 6.66666 4.66665 6.66666C4.29846 6.66666 3.99998 6.96514 3.99998 7.33333C3.99998 7.70152 4.29846 8 4.66665 8ZM2.66665 7.33333C2.66665 7.70152 2.36817 8 1.99998 8C1.63179 8 1.33331 7.70152 1.33331 7.33333C1.33331 6.96514 1.63179 6.66666 1.99998 6.66666C2.36817 6.66666 2.66665 6.96514 2.66665 7.33333Z" fill="url(#paint0_linear_503_3486)"/>
</g>
</g>
</g>
<defs>
<filter id="filter0_d_503_3486" x="1.33331" y="1.33333" width="9.33331" height="7.66667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_503_3486"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_503_3486" result="shape"/>
</filter>
<linearGradient id="paint0_linear_503_3486" x1="1.33331" y1="1.33333" x2="1.33331" y2="7.99999" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#F0F0F0"/>
</linearGradient>
<clipPath id="clip0_503_3486">
<rect width="28" height="20" rx="2" fill="white"/>
</clipPath>
</defs>

After

Width:  |  Height:  |  Size: 5.5 KiB

6
icons/svg/signal.svg Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg">
<title>signal</title>
<path d="M16 3.816c-6.726 0.004-12.178 5.457-12.178 12.184 0 2.404 0.696 4.645 1.897 6.533l-0.029-0.049-1.172 4.999 4.999-1.172c1.841 1.176 4.086 1.874 6.493 1.874 6.729 0 12.184-5.455 12.184-12.184s-5.455-12.184-12.184-12.184c-0.004 0-0.007 0-0.011 0h0.001zM9.041 27.688l-2.012 0.469 0.319 1.368 1.481-0.344c1.024 0.57 2.211 1.044 3.46 1.36l0.103 0.022 0.337-1.363c-1.394-0.354-2.619-0.875-3.738-1.555l0.060 0.034zM2.48 24.642l1.368 0.319 0.469-2.012c-0.643-1.062-1.162-2.291-1.492-3.596l-0.020-0.093-1.362 0.337c0.338 1.352 0.812 2.539 1.421 3.64l-0.039-0.076zM5.782 28.443l-2.903 0.679 0.677-2.903-1.368-0.321-0.677 2.903c-0.024 0.096-0.037 0.207-0.037 0.321 0 0.776 0.629 1.406 1.406 1.406 0.114 0 0.224-0.014 0.33-0.039l-0.010 0.002 2.9-0.665zM13.964 2.561c0.612-0.097 1.317-0.152 2.036-0.152s1.424 0.055 2.112 0.162l-0.077-0.010 0.214-1.39c-0.675-0.107-1.454-0.169-2.247-0.169s-1.572 0.061-2.332 0.18l0.085-0.011zM28.84 8.248l-1.205 0.721c0.666 1.083 1.201 2.337 1.538 3.669l0.020 0.094 1.363-0.337c-0.394-1.571-0.984-2.953-1.754-4.212l0.037 0.065zM5.061 7.938c0.822-1.107 1.772-2.057 2.843-2.853l0.036-0.026-0.844-1.132c-1.218 0.905-2.263 1.95-3.139 3.128l-0.028 0.040zM24.060 5.059c1.107 0.822 2.057 1.772 2.853 2.843l0.026 0.036 1.132-0.843c-0.905-1.218-1.95-2.263-3.128-3.139l-0.040-0.028zM26.939 24.063c-0.822 1.106-1.772 2.055-2.843 2.851l-0.036 0.026 0.835 1.132c1.221-0.905 2.269-1.95 3.148-3.128l0.028-0.040zM18.036 29.44c-0.612 0.097-1.317 0.152-2.036 0.152s-1.424-0.055-2.112-0.162l0.077 0.010-0.212 1.39c0.675 0.107 1.454 0.169 2.247 0.169s1.572-0.061 2.332-0.18l-0.085 0.011zM30.557 19.599l-1.362-0.337c-0.358 1.428-0.893 2.683-1.593 3.827l0.034-0.059 1.205 0.726c0.734-1.196 1.324-2.581 1.695-4.053l0.022-0.103zM29.59 16c0 0.003 0 0.006 0 0.009 0 0.716-0.055 1.419-0.162 2.104l0.010-0.076 1.39 0.21c0.107-0.675 0.169-1.454 0.169-2.247s-0.061-1.572-0.18-2.331l0.011 0.085-1.39 0.211c0.097 0.61 0.152 1.312 0.152 2.028 0 0.003 0 0.006 0 0.009v-0zM23.752 28.839l-0.722-1.205c-1.083 0.666-2.337 1.201-3.669 1.538l-0.094 0.020 0.337 1.363c1.572-0.394 2.954-0.984 4.213-1.754l-0.065 0.037zM2.41 15.999c0-0.003 0-0.006 0-0.009 0-0.716 0.055-1.419 0.162-2.104l-0.010 0.076-1.39-0.21c-0.107 0.675-0.169 1.454-0.169 2.247s0.061 1.572 0.179 2.331l-0.011-0.085 1.39-0.211c-0.097-0.61-0.152-1.312-0.152-2.028 0-0.002 0-0.005 0-0.007v0zM3.16 8.248c-0.734 1.195-1.323 2.578-1.695 4.048l-0.022 0.103 1.362 0.337c0.358-1.428 0.894-2.683 1.595-3.827l-0.034 0.059zM19.599 1.442l-0.337 1.362c1.428 0.358 2.683 0.893 3.827 1.593l-0.059-0.034 0.726-1.205c-1.196-0.734-2.581-1.324-4.053-1.695l-0.103-0.022zM12.401 1.442l0.337 1.362c-1.428 0.358-2.683 0.893-3.827 1.593l0.059-0.034-0.722-1.205c1.195-0.734 2.579-1.323 4.049-1.695l0.103-0.022z"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

7
icons/svg/soundcloud.svg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg xmlns="http://www.w3.org/2000/svg"
aria-label="SoundCloud" role="img"
viewBox="0 0 512 512"><rect
width="512" height="512"
rx="15%"
fill="#f50"/><path d="m59 270-3 22 3 22c0 2 3 2 3 0l3-22-3-22c0-3-3-3-3 0zm18-14c0-3-3-3-3 0l-5 36 4 35c0 3 4 3 4 0l4-35zm59-30-3 66 2 40c0 8 7 8 7 0l4-40-4-66c0-5-6-5-6 0zm-31 22-4 44 3 40c0 6 5 6 5 0l4-40-4-44c0-3-4-3-4 0zm70 84 3-40-3-88c0-6-7-6-7 0l-3 88 2 40c0 8 8 8 8 0zm68 0 2-40-2-102c0-7-10-7-10 0l-2 102 2 40c0 8 10 8 10 0zm-34 0 3-40-3-89c0-6-9-6-9 0l-2 89 2 40c0 8 9 8 9 0zm-83 0 3-40-3-41c0-3-6-3-6 0l-3 41 3 40c0 7 6 7 6 0zm-33 0 4-40-4-43c0-3-4-3-4 0l-4 43 4 40c0 4 4 4 4 0zm124-125-2 85 1 40c0 8 10 8 10 0l2-40-2-85c0-7-9-7-9 0zm-58 125 3-40-3-81c0-6-7-6-7 0l-3 81 2 40c0 8 8 8 8 0zm33 0 3-40-3-91c0-6-8-6-8 0l-3 91 3 40c0 8 8 8 8 0zm196-89c-5-57-64-94-118-73-4 2-5 3-5 6v156c0 3 2 6 5 6h137c27 0 49-22 49-49 0-37-35-57-68-46zm-138-62-3 111 3 40c0 8 10 8 10 0l3-40-3-111c0-7-10-7-10 0z" fill="#ffffff"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

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