interface frontend update

This commit is contained in:
Christoph Haas 2023-06-14 23:03:24 +02:00
parent c4c635e702
commit bd89258e81
96 changed files with 1771 additions and 14807 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8,22 +8,24 @@
"preview": "vite preview --port 5050"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^6.2.1",
"@kyvg/vue3-notification": "^2.8.0",
"@popperjs/core": "^2.11.6",
"bootstrap": "^5.2.3",
"bootswatch": "^5.2.3",
"flag-icons": "^6.6.6",
"is-cidr": "^5.0.2",
"@fortawesome/fontawesome-free": "^6.4.0",
"@kyvg/vue3-notification": "^2.9.1",
"@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.0",
"bootswatch": "^5.3.0",
"flag-icons": "^6.7.0",
"is-cidr": "^5.0.3",
"is-ip": "^5.0.0",
"pinia": "^2.0.29",
"vue": "^3.2.45",
"vue-i18n": "^9.1.10",
"vue-router": "^4.1.6",
"vue3-tags-input": "^1.0.6"
"pinia": "^2.1.4",
"prismjs": "^1.29.0",
"vue": "^3.3.4",
"vue-i18n": "^9.2.2",
"vue-prism-component": "github:h44z/vue-prism-component",
"vue-router": "^4.2.2",
"vue3-tags-input": "^1.0.12"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.0.0",
"vite": "^4.0.4"
"@vitejs/plugin-vue": "^4.2.3",
"vite": "^4.3.9"
}
}

View File

@ -51,7 +51,7 @@ function freshFormData() {
ListenPort: 51820,
Addresses: [],
DnsStr: [],
DnsSearchStr: "",
DnsSearch: [],
Mtu: 0,
FirewallMark: 0,
@ -66,11 +66,11 @@ function freshFormData() {
// Peer defaults
PeerDefNetworkStr: "",
PeerDefDnsStr: "",
PeerDefDnsSearchStr: "",
PeerDefNetwork: [],
PeerDefDns: [],
PeerDefDnsSearch: [],
PeerDefEndpoint: "",
PeerDefAllowedIPsStr: "",
PeerDefAllowedIPs: [],
PeerDefMtu: 0,
PeerDefPersistentKeepalive: 0,
PeerDefFirewallMark: 0,
@ -98,8 +98,8 @@ watch(() => props.visible, async (newValue, oldValue) => {
formData.value.ListenPort = interfaces.Prepared.ListenPort
formData.value.Addresses = interfaces.Prepared.Addresses
formData.value.DnsStr = interfaces.Prepared.DnsStr
formData.value.DnsSearchStr = interfaces.Prepared.DnsSearchStr
formData.value.Dns = interfaces.Prepared.Dns
formData.value.DnsSearch = interfaces.Prepared.DnsSearch
formData.value.Mtu = interfaces.Prepared.Mtu
formData.value.FirewallMark = interfaces.Prepared.FirewallMark
@ -112,12 +112,12 @@ watch(() => props.visible, async (newValue, oldValue) => {
formData.value.SaveConfig = interfaces.Prepared.SaveConfig
formData.value.PeerDefNetworkStr = interfaces.Prepared.PeerDefNetworkStr
formData.value.PeerDefDnsStr = interfaces.Prepared.PeerDefDnsStr
formData.value.PeerDefDnsSearchStr = interfaces.Prepared.PeerDefDnsSearchStr
formData.value.PeerDefNetwork = interfaces.Prepared.PeerDefNetwork
formData.value.PeerDefDns = interfaces.Prepared.PeerDefDns
formData.value.PeerDefDnsSearch = interfaces.Prepared.PeerDefDnsSearch
formData.value.PeerDefEndpoint = interfaces.Prepared.PeerDefEndpoint
formData.value.PeerDefAllowedIPsStr = interfaces.Prepared.PeerDefAllowedIPsStr
formData.value.PeerDefMtu = selectedInterface.value.PeerDefMtu
formData.value.PeerDefAllowedIPs = interfaces.Prepared.PeerDefAllowedIPs
formData.value.PeerDefMtu = interfaces.Prepared.PeerDefMtu
formData.value.PeerDefPersistentKeepalive = interfaces.Prepared.PeerDefPersistentKeepalive
formData.value.PeerDefFirewallMark = interfaces.Prepared.PeerDefFirewallMark
formData.value.PeerDefRoutingTable = interfaces.Prepared.PeerDefRoutingTable
@ -136,8 +136,8 @@ watch(() => props.visible, async (newValue, oldValue) => {
formData.value.ListenPort = selectedInterface.value.ListenPort
formData.value.Addresses = selectedInterface.value.Addresses
formData.value.DnsStr = selectedInterface.value.DnsStr
formData.value.DnsSearchStr = selectedInterface.value.DnsSearchStr
formData.value.Dns = selectedInterface.value.Dns
formData.value.DnsSearch = selectedInterface.value.DnsSearch
formData.value.Mtu = selectedInterface.value.Mtu
formData.value.FirewallMark = selectedInterface.value.FirewallMark
@ -150,11 +150,11 @@ watch(() => props.visible, async (newValue, oldValue) => {
formData.value.SaveConfig = selectedInterface.value.SaveConfig
formData.value.PeerDefNetworkStr = selectedInterface.value.PeerDefNetworkStr
formData.value.PeerDefDnsStr = selectedInterface.value.PeerDefDnsStr
formData.value.PeerDefDnsSearchStr = selectedInterface.value.PeerDefDnsSearchStr
formData.value.PeerDefNetwork = selectedInterface.value.PeerDefNetwork
formData.value.PeerDefDns = selectedInterface.value.PeerDefDns
formData.value.PeerDefDnsSearch = selectedInterface.value.PeerDefDnsSearch
formData.value.PeerDefEndpoint = selectedInterface.value.PeerDefEndpoint
formData.value.PeerDefAllowedIPsStr = selectedInterface.value.PeerDefAllowedIPsStr
formData.value.PeerDefAllowedIPs = selectedInterface.value.PeerDefAllowedIPs
formData.value.PeerDefMtu = selectedInterface.value.PeerDefMtu
formData.value.PeerDefPersistentKeepalive = selectedInterface.value.PeerDefPersistentKeepalive
formData.value.PeerDefFirewallMark = selectedInterface.value.PeerDefFirewallMark
@ -204,10 +204,69 @@ function handleChangeDns(tags) {
}
})
if(validInput) {
formData.value.DnsStr = tags
formData.value.Dns = tags
}
}
function handleChangeDnsSearch(tags) {
formData.value.DnsSearch = tags
}
function handleChangePeerDefNetwork(tags) {
let validInput = true
tags.forEach(tag => {
if(isCidr(tag) === 0) {
validInput = false
notify({
title: "Invalid CIDR",
text: tag + " is not a valid IP address",
type: 'error',
})
}
})
if(validInput) {
formData.value.PeerDefNetwork = tags
}
}
function handleChangePeerDefAllowedIPs(tags) {
let validInput = true
tags.forEach(tag => {
if(isCidr(tag) === 0) {
validInput = false
notify({
title: "Invalid CIDR",
text: tag + " is not a valid IP address",
type: 'error',
})
}
})
if(validInput) {
formData.value.PeerDefAllowedIPs = tags
}
}
function handleChangePeerDefDns(tags) {
let validInput = true
tags.forEach(tag => {
if(!isIP(tag)) {
validInput = false
notify({
title: "Invalid IP",
text: tag + " is not a valid IP address",
type: 'error',
})
}
})
if(validInput) {
formData.value.PeerDefDns = tags
}
}
function handleChangePeerDefDnsSearch(tags) {
formData.value.DnsSearch = tags
}
function validateCIDR(value) {
return isCidr(value) !== 0
}
@ -216,6 +275,11 @@ function validateIP(value) {
return isIP(value)
}
function validateDomain(value) {
console.log("validating: ", value)
return true
}
async function save() {
try {
if (props.interfaceId!=='#NEW#') {
@ -297,7 +361,7 @@ async function del() {
<label class="form-label mt-4">{{ $t('modals.interfaceedit.ips') }}</label>
<vue3-tags-input class="form-control" :tags="formData.Addresses"
placeholder="IP Addresses (CIDR format)"
add-tag-on-keys="[13, 188, 32, 9]"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateCIDR"
@on-tags-changed="handleChangeAddresses"/>
</div>
@ -307,15 +371,19 @@ async function del() {
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.dns') }}</label>
<vue3-tags-input class="form-control" :tags="formData.DnsStr"
<vue3-tags-input class="form-control" :tags="formData.Dns"
placeholder="DNS Servers"
add-tag-on-keys="[13, 188, 32, 9]"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateIP"
@on-tags-changed="handleChangeDns"/>
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.dnssearch') }}</label>
<input v-model="formData.DnsSearchStr" class="form-control" placeholder="DNS Search prefix" type="text">
<vue3-tags-input class="form-control" :tags="formData.DnsSearch"
placeholder="DNS Search prefixes"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateDomain"
@on-tags-changed="handleChangeDnsSearch"/>
</div>
<div class="row">
<div class="form-group col-md-6">
@ -377,20 +445,36 @@ async function del() {
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.defaults.networks') }}</label>
<input v-model="formData.PeerDefNetworkStr" class="form-control" placeholder="Network Addresses" type="text">
<vue3-tags-input class="form-control" :tags="formData.PeerDefNetwork"
placeholder="Network Addresses"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateCIDR"
@on-tags-changed="handleChangePeerDefNetwork"/>
<small class="form-text text-muted">Peers will get IP addresses from those subnets.</small>
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.defaults.allowedips') }}</label>
<input v-model="formData.PeerDefAllowedIPsStr" class="form-control" placeholder="Listen Port" type="text">
<vue3-tags-input class="form-control" :tags="formData.PeerDefAllowedIPs"
placeholder="Default Allowed IP Addresses"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateCIDR"
@on-tags-changed="handleChangePeerDefAllowedIPs"/>
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.defaults.dns') }}</label>
<input v-model="formData.PeerDefDnsStr" class="form-control" placeholder="DNS Servers" type="text">
<vue3-tags-input class="form-control" :tags="formData.PeerDefDns"
placeholder="DNS Servers"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateIP"
@on-tags-changed="handleChangePeerDefDns"/>
</div>
<div class="form-group">
<label class="form-label mt-4">{{ $t('modals.interfaceedit.defaults.dnssearch') }}</label>
<input v-model="formData.PeerDefDnsSearchStr" class="form-control" placeholder="DNS Search prefix" type="text">
<vue3-tags-input class="form-control" :tags="formData.PeerDefDnsSearch"
placeholder="DNS Search prefix"
:add-tag-on-keys="[13, 188, 32, 9]"
:validate="validateDomain"
@on-tags-changed="handleChangePeerDefDnsSearch"/>
</div>
<div class="row">
<div class="form-group col-md-6">

View File

@ -0,0 +1,60 @@
<script setup>
import Modal from "./Modal.vue";
import {computed, ref, watch} from "vue";
import { useI18n } from 'vue-i18n';
import {interfaceStore} from "@/stores/interfaces";
import Prism from 'vue-prism-component'
import 'prismjs/components/prism-ini'
const { t } = useI18n()
const interfaces = interfaceStore()
const props = defineProps({
interfaceId: String,
visible: Boolean,
})
const configString = ref("")
const emit = defineEmits(['close'])
const selectedInterface = computed(() => {
return interfaces.Find(props.interfaceId)
})
const title = computed(() => {
if (!props.visible) {
return "" // otherwise interfaces.GetSelected will die...
}
return t("interfaces.interface.show") + ": " + selectedInterface.value.Identifier
})
// functions
watch(() => props.visible, async (newValue, oldValue) => {
if (oldValue === false && newValue === true) { // if modal is shown
console.log(selectedInterface.value)
await interfaces.InterfaceConfig(selectedInterface.value.Identifier)
configString.value = interfaces.configuration
}
}
)
function close() {
emit('close')
}
</script>
<template>
<Modal :title="title" :visible="visible" @close="close">
<template #default>
<Prism language="ini" :code="configString"></Prism>
</template>
<template #footer>
<button class="btn btn-primary" type="button" @click.prevent="close">Close</button>
</template>
</Modal>
</template>

View File

@ -16,12 +16,14 @@ import "bootstrap";
import "./assets/base.css";
// Fontawesome
import "@fortawesome/fontawesome-free/js/all.js";
import "@fortawesome/fontawesome-free/js/all.js"
// Flags
import "flag-icons/css/flag-icons.min.css"
// Syntax Highlighting
import 'prismjs'
import 'prismjs/themes/prism-okaidia.css'
const app = createApp(App);

View File

@ -13,6 +13,7 @@ export const interfaceStore = defineStore({
Identifier: "",
Type: "server",
},
configuration: "",
selected: "wg0",
fetching: false,
}),
@ -46,7 +47,9 @@ export const interfaceStore = defineStore({
},
setPreparedInterface(iface) {
this.prepared = iface;
this.prepared.AddressStr = iface.Addresses.join(', ');
},
setInterfaceConfig(ifaceConfig) {
this.configuration = ifaceConfig;
},
async PrepareInterface() {
return apiWrapper.get(`${baseUrl}/prepare`)
@ -60,9 +63,21 @@ export const interfaceStore = defineStore({
})
})
},
async InterfaceConfig(id) {
return apiWrapper.get(`${baseUrl}/config/${id}`)
.then(this.setInterfaceConfig)
.catch(error => {
this.prepared = {}
console.log("Failed to load interface configuration: ", error)
notify({
title: "Backend Connection Failure",
text: "Failed to load interface configuration!",
})
})
},
async DeleteInterface(id) {
this.fetching = true
return apiWrapper.delete(`${baseUrl}/` + id)
return apiWrapper.delete(`${baseUrl}/${id}`)
.then(() => {
this.interfaces = this.interfaces.filter(i => i.Identifier !== id)
this.fetching = false
@ -75,7 +90,7 @@ export const interfaceStore = defineStore({
},
async UpdateInterface(id, formData) {
this.fetching = true
return apiWrapper.put(`${baseUrl}/` + id, formData)
return apiWrapper.put(`${baseUrl}/${id}`, formData)
.then(iface => {
let idx = this.interfaces.findIndex((i) => i.Identifier === id)
this.interfaces[idx] = iface

View File

@ -2,6 +2,7 @@
import PeerViewModal from "../components/PeerViewModal.vue";
import PeerEditModal from "../components/PeerEditModal.vue";
import InterfaceEditModal from "../components/InterfaceEditModal.vue";
import InterfaceViewModal from "../components/InterfaceViewModal.vue";
import {onMounted, ref} from "vue";
import {peerStore} from "../stores/peers";
@ -13,6 +14,15 @@ const peers = peerStore()
const viewedPeerId = ref("")
const editPeerId = ref("")
const editInterfaceId = ref("")
const viewedInterfaceId = ref("")
function calculateInterfaceName(id, name) {
let result = id
if (name) {
result += ' (' + name + ')'
}
return result
}
onMounted(async () => {
await interfaces.LoadInterfaces()
@ -24,6 +34,7 @@ onMounted(async () => {
<PeerViewModal :peerId="viewedPeerId" :visible="viewedPeerId!==''" @close="viewedPeerId=''"></PeerViewModal>
<PeerEditModal :peerId="editPeerId" :visible="editPeerId!==''" @close="editPeerId=''"></PeerEditModal>
<InterfaceEditModal :interfaceId="editInterfaceId" :visible="editInterfaceId!==''" @close="editInterfaceId=''"></InterfaceEditModal>
<InterfaceViewModal :interfaceId="viewedInterfaceId" :visible="viewedInterfaceId!==''" @close="viewedInterfaceId=''"></InterfaceViewModal>
<!-- Headline and interface selector -->
<div class="page-header row">
@ -41,7 +52,7 @@ onMounted(async () => {
</button>
<select v-model="interfaces.selected" :disabled="interfaces.Count===0" class="form-select" @change="peers.LoadPeers()">
<option v-if="interfaces.Count===0" value="nothing">{{ $t('interfaces.notAvailable') }}</option>
<option v-for="iface in interfaces.All" :key="iface.Identifier" :value="iface.Identifier">{{iface.Identifier}}</option>
<option v-for="iface in interfaces.All" :key="iface.Identifier" :value="iface.Identifier">{{ calculateInterfaceName(iface.Identifier,iface.DisplayName) }}</option>
</select>
</div>
</div>
@ -68,7 +79,7 @@ onMounted(async () => {
{{ $t('interfaces.statusBox.h1') }} <strong>{{interfaces.GetSelected.Identifier}}</strong> ({{interfaces.GetSelected.Mode}} {{ $t('interfaces.statusBox.mode') }})
</div>
<div class="col-12 col-lg-4 text-lg-end">
<a class="btn-link" href="#" title="Show interface configuration"><i class="fas fa-eye"></i></a>
<a class="btn-link" href="#" title="Show interface configuration" @click.prevent="viewedInterfaceId=interfaces.GetSelected.Identifier"><i class="fas fa-eye"></i></a>
<a class="ms-5 btn-link" href="#" title="Download interface configuration"><i class="fas fa-download"></i></a>
<a class="ms-5 btn-link" href="#" title="Write interface configuration file"><i class="fas fa-save"></i></a>
<a class="ms-5 btn-link" href="#" title="Edit interface settings" @click.prevent="editInterfaceId=interfaces.GetSelected.Identifier"><i class="fas fa-cog"></i></a>
@ -154,11 +165,11 @@ onMounted(async () => {
<tbody>
<tr>
<td>{{ $t('interfaces.statusBox.ip') }}:</td>
<td>{{interfaces.GetSelected.AddressStr}}</td>
<td><span class="badge bg-light me-1" v-for="addr in interfaces.GetSelected.Addresses" :key="addr">{{addr}}</span></td>
</tr>
<tr>
<td>{{ $t('interfaces.statusBox.dnsServers') }}:</td>
<td>{{interfaces.GetSelected.DnsStr}}</td>
<td><span class="badge bg-light me-1" v-for="addr in interfaces.GetSelected.Dns" :key="addr">{{addr}}</span></td>
</tr>
<tr>
<td>{{ $t('interfaces.statusBox.mtu') }}:</td>
@ -200,15 +211,15 @@ onMounted(async () => {
<tbody>
<tr>
<td>{{ $t('interfaces.statusBox.ip') }}:</td>
<td>{{interfaces.GetSelected.Addresses}}</td>
<td><span class="badge bg-light me-1" v-for="addr in interfaces.GetSelected.Addresses" :key="addr">{{addr}}</span></td>
</tr>
<tr>
<td>{{ $t('interfaces.statusBox.allowedIP') }}:</td>
<td>{{interfaces.GetSelected.PeerDefAllowedIPsStr}}</td>
<td><span class="badge bg-light me-1" v-for="addr in interfaces.GetSelected.PeerDefAllowedIPs" :key="addr">{{addr}}</span></td>
</tr>
<tr>
<td>{{ $t('interfaces.statusBox.dnsServers') }}:</td>
<td>{{interfaces.GetSelected.PeerDefDnsStr}}</td>
<td><span class="badge bg-light me-1" v-for="addr in interfaces.GetSelected.PeerDefDns" :key="addr">{{addr}}</span></td>
</tr>
<tr>
<td>{{ $t('interfaces.statusBox.mtu') }}:</td>

View File

@ -228,18 +228,38 @@ func (r *wgRepo) updateLowLevelInterface(pi *domain.PhysicalInterface) error {
}
}
for i, addr := range pi.Addresses {
var err error
if i == 0 {
err = r.nl.AddrReplace(link, addr.NetlinkAddr())
} else {
err = r.nl.AddrAdd(link, addr.NetlinkAddr())
}
for _, addr := range pi.Addresses {
err := r.nl.AddrReplace(link, addr.NetlinkAddr())
if err != nil {
return fmt.Errorf("failed to set ip %s: %w", addr.String(), err)
}
}
// Remove unwanted IP addresses
rawAddresses, err := r.nl.AddrList(link)
if err != nil {
return fmt.Errorf("failed to fetch interface ips: %w", err)
}
for _, rawAddr := range rawAddresses {
netlinkAddr := domain.CidrFromNetlinkAddr(rawAddr)
remove := true
for _, addr := range pi.Addresses {
if addr == netlinkAddr {
remove = false
break
}
}
if !remove {
continue
}
err := r.nl.AddrDel(link, &rawAddr)
if err != nil {
return fmt.Errorf("failed to remove deprecated ip %s: %w", netlinkAddr.String(), err)
}
}
// Update link state
if pi.DeviceUp {
if err := r.nl.LinkSetUp(link); err != nil {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ag" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill="#25ff01" d="M109 47.6h464.8v464.9H109z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-120 -52.4) scale(1.1014)">
<path fill="#fff" d="M0 47.6h693V512H0z"/>
<path d="M1.5 48.2h690.9v196.2H1.5z"/>
<path fill="#0061ff" d="M128.3 232.1h458.5v103.4H128.3z"/>
<path fill="#e20000" d="M692.5 49.2v463.3H347L692.5 49.2zm-691.3 0v463.3h345.7L1.2 49.2z"/>
<path fill="#ffd600" d="m508.8 232.2-69.3-17.6 59-44.4-72.5 10.3 37.3-63-64.1 37.2 11.3-73.5-43.4 58-17.6-67.3-19.6 69.3-43.4-59 12.4 75.6-64.1-39.3 37.2 63-70.3-11.3 57.9 43.4-72.4 18.6h321.6z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 757 B

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ag" viewBox="0 0 640 480">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M-79.7 0H603v512H-79.7z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(74.7) scale(.9375)">
<path fill="#fff" d="M-120 0h763.3v511.5H-120z"/>
<path d="M-118.3.6h760.9v216.1h-761z"/>
<path fill="#0061ff" d="M21.3 203.2h505V317h-505z"/>
<path fill="#e20000" d="M642.8 1.8V512H262L642.8 1.7zm-761.5 0V512H262L-118.7 1.7z"/>
<path fill="#ffd600" d="M440.4 203.3 364 184l64.9-49-79.7 11.4 41-69.5-70.7 41L332.3 37l-47.9 63.8-19.3-74-21.7 76.3-47.8-65 13.7 83.2L138.5 78l41 69.5-77.4-12.5 63.8 47.8L86 203.3h354.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 740 B

View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ag" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill="#25ff01" d="M109 47.6h464.8v464.9H109z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-120 -52.4) scale(1.1014)">
<path fill="#fff" d="M0 47.6h693V512H0z"/>
<path d="M108.95 47.58h464.87V233.7H108.95V47.58Z"/>
<path d="M128.3 232.1h435.8v103.5H128.3V232.1Z" fill="#0072c6"/>
<path d="M692.5 49.2v463.3H347L692.5 49.2zm-691.3 0v463.3h345.7L1.2 49.2z" fill="#ce1126"/>
<path d="m508.8 232.2-69.3-17.6 59-44.4-72.5 10.3 37.3-63-64.1 37.2 11.3-73.5-43.4 58-17.6-67.3-19.6 69.3-43.4-59 12.4 75.6-64.1-39.3 37.2 63-70.3-11.3 57.9 43.4-72.4 18.6h321.6z" fill="#fcd116"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 777 B

View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-ag" viewBox="0 0 640 480">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M-79.7 0H603v512H-79.7z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(74.7) scale(.9375)">
<path fill="#fff" d="M-79.68 0h682.67v512H-79.68V0Z"/>
<path d="M-79.59 0h682.58v204.8H-79.68L-79.59 0Z"/>
<path d="M21.3 203.2h480v112h-480v-112Z" fill="#0072c6"/>
<path d="M602.99.1V512H261.6L602.99 0v.1ZM-79.68.1V512h341.29L-79.68 0v.1Z" fill="#ce1126"/>
<path d="M440.4 203.3 364 184l64.9-49-79.7 11.4 41-69.5-70.7 41L332.3 37l-47.9 63.8-19.3-74-21.7 76.3-47.8-65 13.7 83.2L138.5 78l41 69.5-77.4-12.5 63.8 47.8L86 203.3h354.3z" fill="#fcd116"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 769 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bl" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#00267f" d="M0 0h213.3v480H0z"/>
<path fill="#f31830" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cefta" viewBox="0 0 640 480">
<path fill="#039" d="M0 0h640v480H0z"/>
<circle cx="320" cy="249.8" r="30.4" fill="none" stroke="#fc0" stroke-width="27.5"/>
<circle cx="320" cy="249.8" r="88.3" fill="none" stroke="#fc0" stroke-width="27.5"/>
<path fill="#039" d="m404.7 165.1 84.7 84.7-84.7 84.7-84.7-84.7z"/>
<path fill="#fc0" d="M175.7 236.1h59.2v27.5h-59.2zM434.8 236.1h88.3v27.5h-88.3zM363 187.4l38.8-38.8 19.4 19.5-38.7 38.7zM306.3 48.6h27.5v107.1h-27.5z"/>
<circle cx="225.1" cy="159.6" r="13.7" fill="#fc0"/>
<circle cx="144.3" cy="249.8" r="13.7" fill="#fc0"/>
<circle cx="320" cy="381.4" r="13.7" fill="#fc0"/>
<circle cx="320" cy="425.5" r="13.7" fill="#fc0"/>
<circle cx="408.3" cy="249.8" r="13.7" fill="#fc0"/>
<path fill="#fc0" d="m208.3 341.5 19.5-19.4 19.4 19.4-19.4 19.5zM413 362.5l19.5-19.5 19.5 19.5-19.5 19.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 915 B

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-cefta" viewBox="0 0 512 512">
<path fill="#039" d="M0 0h512v512H0z"/>
<circle cx="256" cy="266.5" r="32.5" fill="none" stroke="#fc0" stroke-width="29.3"/>
<circle cx="256" cy="266.5" r="94.2" fill="none" stroke="#fc0" stroke-width="29.3"/>
<path fill="#039" d="m346.3 176.1 90.3 90.3-90.3 90.3-90.3-90.3z"/>
<path fill="#fc0" d="M102.1 251.8h63.2v29.3h-63.2zM378.5 251.8h94.2v29.3h-94.2zM301.9 199.9l41.3-41.3 20.7 20.7-41.3 41.3zM241.3 51.8h29.3V166h-29.3z"/>
<circle cx="154.8" cy="170.3" r="14.7" fill="#fc0"/>
<circle cx="68.6" cy="266.5" r="14.7" fill="#fc0"/>
<circle cx="256" cy="406.8" r="14.7" fill="#fc0"/>
<circle cx="256" cy="453.9" r="14.7" fill="#fc0"/>
<circle cx="350.2" cy="266.5" r="14.7" fill="#fc0"/>
<path fill="#fc0" d="m136.9 364.3 20.7-20.7 20.7 20.7-20.7 20.7zM355.4 386.6 376 366l20.7 20.7-20.7 20.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 914 B

View File

@ -5,9 +5,9 @@
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)">
<path fill="#0050f0" d="M-32 0h768v512H-32z"/>
<path fill="#002a8f" d="M-32 0h768v512H-32z"/>
<path fill="#fff" d="M-32 102.4h768v102.4H-32zm0 204.8h768v102.4H-32z"/>
<path fill="#ed0000" d="m-32 0 440.7 255.7L-32 511V0z"/>
<path fill="#cb1515" d="m-32 0 440.7 255.7L-32 511V0z"/>
<path fill="#fff" d="M161.8 325.5 114.3 290l-47.2 35.8 17.6-58.1-47.2-36 58.3-.4 18.1-58 18.5 57.8 58.3.1-46.9 36.3 18 58z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 570 B

After

Width:  |  Height:  |  Size: 570 B

View File

@ -5,9 +5,9 @@
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(30) scale(.94)">
<path fill="#0050f0" d="M-32 0h768v512H-32z"/>
<path fill="#002a8f" d="M-32 0h768v512H-32z"/>
<path fill="#fff" d="M-32 102.4h768v102.4H-32zm0 204.8h768v102.4H-32z"/>
<path fill="#ed0000" d="m-32 0 440.7 255.7L-32 511V0z"/>
<path fill="#cb1515" d="m-32 0 440.7 255.7L-32 511V0z"/>
<path fill="#fff" d="M161.8 325.5 114.3 290l-47.2 35.8 17.6-58.1-47.2-36 58.3-.4 18.1-58 18.5 57.8 58.3.1-46.9 36.3 18 58z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 613 B

After

Width:  |  Height:  |  Size: 613 B

View File

@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dg" viewBox="0 0 512 512">
<rect fill="#fff" width="512" height="512"/>
<path fill="#000063" fill-rule="evenodd" d="M512 444c-5.7 7-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2 0-19.7 24.7-28.9 24.7V502c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-9.8 25.9-16.8zm0-86.6c-5.7 7.1-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.2 0-19.7 24.7-28.9 24.7v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-9.8 25.9-16.9zm0-86.6c-5.7 7.2-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2 0-19.7 24.8-28.9 24.8v44.5c9.2 0 13.7-24.6 29-24.6 22.8 0 30.5 34.6 60.9 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.3 0 20.2-9.9 25.9-16.9zm0-86.5c-5.7 7-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.2 0-19.7 24.7-28.9 24.7v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-10 25.9-17zm0-86.6c-5.7 7-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2.1-19.8 25-28.9 25V156c9.2 0 13.7-24.7 29-24.7 22.8 0 30.4 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.5 34.6 61 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.2 0 20.2-9.8 25.9-16.9V98Zm0-86.5c-5.7 7-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.2 34.7C158.4 34.7 151 0 128 0c-15.3 0-22.8 34.7-38.1 34.7C59.4 34.7 51.8 0 28.9 0 13.8 0 9.2 24.8 0 24.8v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.4 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.5 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.2 0 20.2-9.9 25.9-17z"/>
<path fill="#a24300" fill-rule="evenodd" stroke="#fff" stroke-width="1.9" d="M377.3 169 374 470.2c0 15.9 14.3 15.9 15.8 0l-3.1-301z"/>
<path fill="#006d00" fill-rule="evenodd" stroke="#fff" stroke-width="1.7" d="m410.1 281-10-11-2.4 11.1-4.4-16-4 8-.7-17-4 8.1-.8-17-4 8-2.4-20-4 8-2.3-20-4 8-2.4-20-1.1-10 2-4 5.2 2 8.4 7.9 16.7 15.9-10.4-4 16.8 16-10.4-4 16.8 16-10.4-4 15.1 13-10.4-4 15.2 12.9-10.4-4 11.5 14-12-7 2.8 13.1z"/>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-dg" viewBox="0 0 640 480">
<rect fill="#fff" width="640" height="480"/>
<path fill="#000063" fill-rule="evenodd" d="M640 416.2c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.7c11.4 0 17.1-23 36.3-23 28.5 0 38 32.4 76 32.4 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.2c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.8c11.4 0 17.1-23.1 36.3-23.1 28.5 0 38 32.5 76 32.5 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.1c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.8c11.4 0 17.1-23.2 36.3-23.2 28.5 0 38 32.5 76 32.5 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.1c-7.2 6.6-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.7c11.4 0 17.1-23 36.3-23 28.5 0 38 32.4 76 32.4 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.3 32.4-15.9zm0-81.3c-7.2 6.7-13.3 22.1-32.4 22.1-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 .1-24.8 23.3-36.2 23.3v41.8c11.4 0 17.1-23.1 36.2-23.1 28.5 0 38.1 32.5 76.2 32.5 19 0 28.5-32.5 47.6-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.4-32.5 28.7 0 38.2 32.5 76.3 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.3 32.4-15.9v-48Zm0-81c-7.2 6.6-13.3 22-32.4 22C569.5 32.5 560 0 531.4 0c-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5C198 32.5 188.6 0 160 0c-19 0-28.6 32.5-47.6 32.5C74.2 32.5 64.7 0 36.2 0 17.2 0 11.4 23.2 0 23.2v41.9C11.4 65 17.1 42 36.2 42c28.5 0 38.1 32.4 76.2 32.4 19 0 28.5-32.4 47.6-32.4 28.6 0 38.1 32.4 76.3 32.4 19 0 28.4-32.4 47.4-32.4 28.7 0 38.2 32.4 76.3 32.4 19 0 28.6-32.4 47.6-32.4 28.6 0 38.1 32.4 76.2 32.4 19 0 28.6-32.4 47.6-32.4 28.6 0 38.2 32.4 76.2 32.4 19 0 25.2-9.2 32.4-15.8z"/>
<path fill="#a24300" fill-rule="evenodd" stroke="#fff" stroke-width="2.1" d="m474.8 131.7-3.5 329c0 17.3 15.7 17.3 17.4 0l-3.5-329Z"/>
<path fill="#006d00" fill-rule="evenodd" stroke="#fff" stroke-width="1.8" d="m510.7 254-11-11.9-2.6 12.1-4.7-17.5-4.5 8.8-.8-18.6-4.4 8.8-.8-18.6-4.4 8.8L475 204l-4.4 8.8L468 191l-4.5 8.8-2.5-21.9-1.3-11 2.2-4.3 5.8 2.1 9.1 8.7 18.3 17.4-11.3-4.3 18.3 17.4-11.4-4.3 18.3 17.3-11.4-4.2 16.6 14-11.3-4.2 16.5 14-11.3-4.2 12.6 15.2-13.1-7.6 3 14.3z"/>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 106 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 380 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 377 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-es-pv" viewBox="0 0 512 512">
<path fill="#d52b1e" d="m0 0h512v512h-512z" />
<path fill="#009b48" d="m0 0h42.5l106.7 106.7c58.7 58.7 106.8 106.7 106.8 106.7 0 0 48.1-48 213.5-213.4h42.5v42.5l-106.7 106.7c-58.7 58.7-106.7 106.8-106.7 106.8 0 0 48 48.1 213.4 213.5v42.5h-42.5l-106.7-106.7c-58.7-58.7-106.8-106.7-106.8-106.7 0 0-48.1 48-213.5 213.4h-42.5v-42.5l106.7-106.7c58.7-58.7 106.7-106.8 106.7-106.8 0 0-48-48.1-213.4-213.5v-21.2z" />
<path fill="#fff" d="m221.9 0h68.2v221.9h221.9v68.2h-221.9v221.9h-68.2v-221.9h-221.9v-68.2h221.9v-111z" />
</svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-es-pv" viewBox="0 0 640 480">
<path fill="#D52B1E" d="m0 0h640v480h-640z" />
<path fill="#009B48" d="m0 0h53.1l133.4 100.1c73.4 55 133.4 100 133.5 100 0.1 0 60.1-45 266.9-200.1h53.1v39.9l-133.4 100c-73.4 55-133.4 100.1-133.4 100.1 0 0 60 45.1 266.8 200.2v39.8h-53.1l-133.4-100c-73.4-55.1-133.4-100.1-133.5-100.1-0.1 0-60.1 45-266.9 200.1h-53.1v-39.8l133.4-100.1c73.4-55 133.4-100.1 133.4-100.1 0 0-60-45.1-266.8-200.1v-20z" />
<path fill="#FFF" d="m288.1 0h63.8v208.1h288.1v63.8h-288.1v208.1h-63.8v-208.1h-288.1v-63.8h288.1v-104z" />
</svg>

After

Width:  |  Height:  |  Size: 602 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 512 512">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -2,5 +2,5 @@
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="red" d="M272 0h96v480h-96z"/>
<path fill="red" d="M0 192h640v96H0z"/>
<path fill="red" fill-rule="evenodd" d="M146.8 373.1c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.1 4zm368-288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.1c-16.9-1-31.2-3.9-31.2-3.9s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.1c16.9 1 31.2 4 31.2 4s-1-10-1-14.9 1-14.8 1-14.8-14.3 3-31.2 4zm-368 0c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.1 4zm368 288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.2 4z" style="mix-blend-mode:multiply"/>
<path fill="red" fill-rule="evenodd" d="M146.8 373.1c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.1 4zm368-288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.1c-16.9-1-31.2-3.9-31.2-3.9s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.1c16.9 1 31.2 4 31.2 4s-1-10-1-14.9 1-14.8 1-14.8-14.3 3-31.2 4zm-368 0c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.1 4zm368 288c1-16.8 4-31.1 4-31.1s-9.8 1-14.8 1c-4.9 0-14.8-1-14.8-1s3 14.3 4 31.2c-16.9-1-31.2-4-31.2-4s1 7.4 1 14.8-1 14.8-1 14.8 14.3-3 31.2-4c-1 16.9-4 31.2-4 31.2s7.4-1 14.8-1 14.8 1 14.8 1-3-14.3-4-31.2c16.9 1 31.2 4 31.2 4s-1-9.8-1-14.8c0-4.9 1-14.8 1-14.8s-14.3 3-31.2 4z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -2,5 +2,5 @@
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="red" d="M205 0h102v512H205z"/>
<path fill="red" d="M0 205h512v102H0z"/>
<path fill="red" fill-rule="evenodd" d="M114.1 397.9c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.3 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9-1 15.9-1 15.9 15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1c8 0 15.9 1 15.9 1s-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.3 1-15.9 1-15.9s-15.3 3.2-33.4 4.3zm307-307c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.4 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9c0 8-1 15.9-1 15.9s15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1 15.9 1 15.9 1-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.2 1-15.9 1-15.9s-15.4 3.2-33.4 4.3zm-307 0c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.4 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9c0 8-1 15.9-1 15.9s15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1c8 0 15.9 1 15.9 1s-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.2 1-15.9 1-15.9s-15.3 3.2-33.4 4.3zm307 307c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.3 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9-1 15.9-1 15.9 15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1 15.9 1 15.9 1-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.3 1-15.9 1-15.9s-15.4 3.2-33.4 4.3z" style="mix-blend-mode:multiply"/>
<path fill="red" fill-rule="evenodd" d="M114.1 397.9c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.3 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9-1 15.9-1 15.9 15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1c8 0 15.9 1 15.9 1s-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.3 1-15.9 1-15.9s-15.3 3.2-33.4 4.3zm307-307c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.4 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9c0 8-1 15.9-1 15.9s15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1 15.9 1 15.9 1-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.2 1-15.9 1-15.9s-15.4 3.2-33.4 4.3zm-307 0c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.4 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9c0 8-1 15.9-1 15.9s15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1c8 0 15.9 1 15.9 1s-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.2 1-15.9 1-15.9s-15.3 3.2-33.4 4.3zm307 307c1.1-18 4.3-33.4 4.3-33.4s-10.6 1-15.9 1c-5.3 0-15.9-1-15.9-1s3.2 15.3 4.3 33.4c-18-1.1-33.4-4.3-33.4-4.3s1 8 1 15.9-1 15.9-1 15.9 15.3-3.2 33.4-4.3c-1.1 18-4.3 33.4-4.3 33.4s8-1 15.9-1 15.9 1 15.9 1-3.2-15.3-4.3-33.4c18 1.1 33.4 4.3 33.4 4.3s-1-10.6-1-15.9c0-5.3 1-15.9 1-15.9s-15.4 3.2-33.4 4.3z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 512 512">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 230 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gf" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gf" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gp" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gp" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,30 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-hk" viewBox="0 0 640 480">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M-89 0h682.6v512H-89z"/>
</clipPath>
</defs>
<g clip-path="url(#a)" transform="translate(83.5) scale(.94)">
<path fill="#ba0000" fill-rule="evenodd" d="M618 512h-731.4V0H618z"/>
<path fill="#fff" fill-rule="evenodd" d="M241.9 247.8s-51.6-22.2-44.2-79.8c7.1-27.7 19.8-46.6 42.7-56.9 10.8-3.3 21.8-4.8 33-5.7-3 2.8-5.4 5.6-6.7 9-2.4 6.4-.6 12.4 2.7 18.5 4.1 7 6.6 14.2 7.4 23.6a36.6 36.6 0 0 1-14.6 33.7c-6.6 5.1-14.4 6.9-20.8 12.7-5 4.8-8 9.7-9 18.1-.2 16.1 4.1 18.4 9.5 26.8z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="2.1" d="M232 164.5v-.3"/>
<path fill="none" stroke="#ba0000" stroke-width="2.1" d="M235.3 241.8c-20-17.7-18.3-62.4-3-77.3"/>
<path fill="#ba0000" fill-rule="evenodd" d="m244.6 154.5 3.3 5.5-6-2.5-4.7 5 .8-6.5-6-2.5 6.5-1.5.8-6.4 3.3 5.5 6.6-1.5"/>
<path fill="#fff" fill-rule="evenodd" d="M246.3 244s6-55.9 63.3-65.7c28.6-1.2 50.4 5.3 67 24.3 6.3 9.3 10.9 19.4 15 29.8-3.5-2-6.8-3.5-10.6-3.7-6.7-.5-12 3-16.8 7.9a53.2 53.2 0 0 1-20.4 14 36.6 36.6 0 0 1-36.5-4c-6.8-4.9-10.8-11.8-18.2-16.2a28.2 28.2 0 0 0-20-3.4c-15.5 4.6-16.3 9.4-22.8 17z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="2.1" d="M323 210.2h.3"/>
<path fill="none" stroke="#ba0000" stroke-width="2.1" d="M250 236c11.2-24.4 54.4-35.8 73.1-25.6"/>
<path fill="#ba0000" fill-rule="evenodd" d="M336.3 219.3 332 224l.6-6.5-6-3 6.3-1 .6-6.7 3.4 6 6.4-1.2-4.3 4.7 3.3 6"/>
<path fill="#fff" fill-rule="evenodd" d="M250.1 248s55-12 82.4 39.3c10.3 26.7 11 49.4-1.7 71.1-6.8 9-15 16.5-23.5 23.8.8-4 1.1-7.6.1-11.2-1.6-6.6-6.6-10.5-12.8-13.5a53.1 53.1 0 0 1-19.8-15 36.6 36.6 0 0 1-7.7-35.8c2.4-8 7.7-14 9.5-22.4a28 28 0 0 0-3.1-20c-9.3-13.2-14.1-12.5-23.4-16.3z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="2.1" d="m306.5 310.1.2.2"/>
<path fill="none" stroke="#ba0000" stroke-width="2.1" d="M259 249c26.6 2.9 51.1 40.2 47.4 61.3"/>
<path fill="#ba0000" fill-rule="evenodd" d="m302.1 325.6-5.9-2.6 6.5-1.5.8-6.7 3.1 5.7 6.5-1.5-4.5 5 3 5.7-5.8-2.6-4.5 5.1"/>
<path fill="#fff" fill-rule="evenodd" d="M248.9 253.7s26.9 49.4-14.5 90c-22.8 17.4-44.4 24.5-68.8 18.4-10.5-4-20-9.7-29.5-15.9 4-.3 7.7-1 10.9-3 5.8-3.4 8.1-9.3 9.3-16a53 53 0 0 1 8.8-23.3 36.6 36.6 0 0 1 32.2-17.5c8.4.1 15.6 3.6 24.2 3 6.9-.9 12.3-2.8 18.4-8.8 10-12.5 8-17 9-27z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="2.1" d="m205.1 325.3-.1.2"/>
<path fill="none" stroke="#ba0000" stroke-width="2.1" d="M250.3 262.4c4.9 26.4-24.1 60.5-45.4 62.7"/>
<path fill="#ba0000" fill-rule="evenodd" d="m189 325.4.9-6.4 3.3 5.7 6.6-1-4.6 4.6 3.3 5.7-6.1-2.9-4.6 4.6.8-6.4-6.1-2.9"/>
<path fill="#fff" fill-rule="evenodd" d="M242.8 252.6S205.2 294.4 153 269c-24-15.7-37.8-33.8-40.1-58.8.3-11.3 2.4-22.1 5.1-33 1.7 3.6 3.6 6.8 6.5 9.2 5.1 4.3 11.5 4.5 18.3 3.4a52 52 0 0 1 24.7.6 36.6 36.6 0 0 1 27.3 24.6c2.7 7.9 1.8 15.9 5.3 23.8 3 6.2 6.6 10.6 14.3 14.4 15.2 5.3 18.7 1.9 28.4-.5z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="2.1" d="m160.7 235.2-.2-.1"/>
<path fill="none" stroke="#ba0000" stroke-width="2.1" d="M235 256.9c-23.2 13.3-65-2.7-74.2-22"/>
<path fill="#ba0000" fill-rule="evenodd" d="m155.3 220 6.3-1.3-4.3 5 3.1 5.9-5.8-2.8-4.3 5 .7-6.8-5.9-2.8 6.3-1.3.7-6.8"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,8 @@
<svg id="flag-icons-hk" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 640 480">
<path fill="#EC1B2E" d="M0 0h640v480H0"/>
<path id="a" fill="#fff" d="M346.3 103.1C267 98 230.6 201.9 305.6 240.3c-26-22.4-20.6-55.3-10.1-72.4l1.9 1.1c-13.8 23.5-11.2 52.7 11.1 71-12.7-12.3-9.5-39 12.1-48.9s23.6-39.3 16.4-49.1q-14.7-25.6 9.3-38.9zM307.9 164l-4.7 7.4-1.8-8.6-8.6-2.3 7.8-4.3-.6-8.9 6.5 6.1 8.3-3.3-3.7 8.1 5.6 6.8z"/>
<use xlink:href="#a" transform="rotate(72 312.5 243.5)"/>
<use xlink:href="#a" transform="rotate(144 312.5 243.5)"/>
<use xlink:href="#a" transform="rotate(216 312.5 243.5)"/>
<use xlink:href="#a" transform="rotate(288 312.5 243.5)"/>
</svg>

After

Width:  |  Height:  |  Size: 707 B

View File

@ -0,0 +1,8 @@
<svg id="flag-icons-hk" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512">
<path fill="#EC1B2E" d="M0 0h512v512H0"/>
<path id="a" fill="#fff" d="M282.3 119.2C203 114 166.6 218 241.6 256.4 215.6 234 221 201 231.5 184l1.9 1c-13.8 23.6-11.2 52.8 11 71-12.6-12.2-9.4-39 12.2-48.8s23.6-39.3 16.4-49.1q-14.7-25.6 9.3-39zM243.9 180l-4.7 7.4-1.8-8.6-8.6-2.3 7.8-4.3-.6-9 6.5 6.2 8.3-3.3-3.7 8 5.6 6.9z"/>
<use xlink:href="#a" transform="rotate(72 248.5 259.5)"/>
<use xlink:href="#a" transform="rotate(144 248.5 259.5)"/>
<use xlink:href="#a" transform="rotate(216 248.5 259.5)"/>
<use xlink:href="#a" transform="rotate(288 248.5 259.5)"/>
</svg>

After

Width:  |  Height:  |  Size: 695 B

View File

@ -1,30 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-hk" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M164.8 0H909v744H165z"/>
</clipPath>
</defs>
<g clip-path="url(#a)" transform="matrix(.7 0 0 .7 -113.4 0)">
<path fill="#ba0000" fill-rule="evenodd" d="M1063 744.1H0V0h1063z"/>
<path fill="#fff" fill-rule="evenodd" d="M516.4 360.1s-75-32.3-64.3-116c10.4-40.3 28.8-67.7 62.2-82.6a223 223 0 0 1 48-8.4c-4.4 4-8 8.1-9.8 13.2-3.6 9.2-1 18 3.8 26.8a78 78 0 0 1 10.8 34.4 53.2 53.2 0 0 1-21.2 49c-9.6 7.3-21 9.9-30.2 18.3a41.1 41.1 0 0 0-13.2 26.4c-.3 23.4 6.1 26.7 13.9 39z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="3.1" d="M502.1 239v-.3"/>
<path fill="none" stroke="#ba0000" stroke-width="3.1" d="M506.9 351.4c-29.2-25.8-26.7-90.7-4.4-112.4"/>
<path fill="#ba0000" fill-rule="evenodd" d="m501.9 223 9.6-2.1 1.1-9.4 4.8 8 9.6-2.1-6.6 7.1 4.8 8-9-3.6-6.6 7.1 1.2-9.3"/>
<path fill="#fff" fill-rule="evenodd" d="M522.8 354.6s8.9-81.2 92-95.4c41.6-1.9 73.2 7.7 97.3 35.2a223.4 223.4 0 0 1 22 43.4c-5.1-3-10-5.2-15.5-5.5-9.8-.7-17.4 4.4-24.4 11.5-8 8.8-17 15.3-29.8 20.4a53.3 53.3 0 0 1-53-5.9c-9.9-7-15.6-17.1-26.4-23.5a41 41 0 0 0-29.1-4.9c-22.5 6.7-23.7 13.7-33.2 24.7z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="3.1" d="m634.4 305.5.3-.1"/>
<path fill="none" stroke="#ba0000" stroke-width="3.1" d="M528.3 343c16.1-35.5 79-52 106.2-37.2"/>
<path fill="#ba0000" fill-rule="evenodd" d="m649.6 300.6 4.8 8.6 9.3-1.7-6.2 7 4.9 8.5-8.8-4.3-6.3 7 .9-9.6-8.8-4.3 9.3-1.6"/>
<path fill="#fff" fill-rule="evenodd" d="M528.4 360.5s79.8-17.4 119.7 57c15 38.8 16 71.8-2.5 103.4-10 13-21.7 24-34.2 34.6 1.2-5.8 1.7-11.2.3-16.4-2.4-9.5-9.7-15.1-18.7-19.5a77.2 77.2 0 0 1-28.7-21.7 53.3 53.3 0 0 1-11.3-52.2c3.5-11.6 11.3-20.3 13.9-32.5a41 41 0 0 0-4.6-29.2c-13.4-19.1-20.5-18-34-23.5z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="3.1" d="m610.4 450.7.2.3"/>
<path fill="none" stroke="#ba0000" stroke-width="3.1" d="M541.1 362c38.8 4 74.5 58.4 69 88.9"/>
<path fill="#ba0000" fill-rule="evenodd" d="m619.8 463.6-6.5 7.3 4.5 8.3-8.6-3.8-6.5 7.4 1.3-9.7-8.6-3.7 9.3-2.2 1.3-9.7 4.5 8.3"/>
<path fill="#fff" fill-rule="evenodd" d="M526.6 368.7s39 71.7-21.1 131c-33.1 25.2-64.5 35.4-100 26.5-15.3-5.8-29.1-14-42.8-23 5.8-.5 11.2-1.5 15.8-4.4 8.4-5 11.8-13.5 13.5-23.4a77.2 77.2 0 0 1 12.7-33.7 53.2 53.2 0 0 1 47-25.4c12 .1 22.6 5.1 35 4.2a41 41 0 0 0 26.8-12.6c14.6-18.3 11.6-24.8 13-39.2z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="3.1" d="m463 472.7-.2.3"/>
<path fill="none" stroke="#ba0000" stroke-width="3.1" d="M528.7 381.4c7 38.3-35.1 87.8-66 91.1"/>
<path fill="#ba0000" fill-rule="evenodd" d="m453.3 485.4-8.9-4.2-6.7 6.7 1.2-9.3-8.9-4.2 9.7-1.5 1.1-9.3 4.8 8.4 9.6-1.5-6.7 6.6"/>
<path fill="#fff" fill-rule="evenodd" d="M517.7 367.1s-54.7 60.7-130.5 23.6c-34.8-22.8-54.9-49-58.3-85.4.4-16.3 3.6-32.1 7.5-48 2.5 5.3 5.1 10 9.4 13.4 7.5 6.3 16.7 6.7 26.5 5a77.2 77.2 0 0 1 36 .8 53.3 53.3 0 0 1 39.6 35.8c4 11.5 2.7 23 7.7 34.5a41 41 0 0 0 20.8 21c22 7.7 27.2 2.8 41.3-.7z"/>
<path fill="#ba0000" fill-rule="evenodd" stroke="#000" stroke-width="3.1" d="M398.4 341.7h-.3"/>
<path fill="none" stroke="#ba0000" stroke-width="3.1" d="M506.4 373.4c-33.8 19.3-94.5-4-107.8-32"/>
<path fill="#ba0000" fill-rule="evenodd" d="m383.2 336.8 1-9.8-8.4-4 9.1-2 1-9.8 4.7 8.6 9-2-6.2 7.3 4.6 8.6-8.5-4.1"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-io" viewBox="0 0 640 480">
<rect fill="#fff" width="640" height="480"/>
<path fill="#000063" fill-rule="evenodd" d="M640 416.2c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.7c11.4 0 17.1-23 36.3-23 28.5 0 38 32.4 76 32.4 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.2c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.8c11.4 0 17.1-23.1 36.3-23.1 28.5 0 38 32.5 76 32.5 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.1c-7.2 6.7-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.8c11.4 0 17.1-23.2 36.3-23.2 28.5 0 38 32.5 76 32.5 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.2 32.4-15.8zm0-81.1c-7.2 6.6-13.3 22-32.4 22-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 0-24.8 23.2-36.2 23.2v41.7c11.4 0 17.1-23 36.3-23 28.5 0 38 32.4 76 32.4 19.1 0 28.6-32.5 47.7-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.5-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.5-32.5 47.5-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.3 32.4-15.9zm0-81.3c-7.2 6.7-13.3 22.1-32.4 22.1-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.6 32.5-47.6 32.5-38.2 0-47.7-32.5-76.2-32.5-19 .1-24.8 23.3-36.2 23.3v41.8c11.4 0 17.1-23.1 36.2-23.1 28.5 0 38.1 32.5 76.2 32.5 19 0 28.5-32.5 47.6-32.5 28.6 0 38.1 32.5 76.3 32.5 19 0 28.4-32.5 47.4-32.5 28.7 0 38.2 32.5 76.3 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.1 32.5 76.2 32.5 19 0 28.6-32.5 47.6-32.5 28.6 0 38.2 32.5 76.2 32.5 19 0 25.2-9.3 32.4-15.9v-48Zm0-81c-7.2 6.6-13.3 22-32.4 22C569.5 32.5 560 0 531.4 0c-19 0-28.5 32.5-47.6 32.5-38.1 0-47.6-32.5-76.2-32.5-19 0-28.5 32.5-47.5 32.5-38.2 0-47.7-32.5-76.3-32.5-19 0-28.6 32.5-47.6 32.5C198 32.5 188.6 0 160 0c-19 0-28.6 32.5-47.6 32.5C74.2 32.5 64.7 0 36.2 0 17.2 0 11.4 23.2 0 23.2v41.9C11.4 65 17.1 42 36.2 42c28.5 0 38.1 32.4 76.2 32.4 19 0 28.5-32.4 47.6-32.4 28.6 0 38.1 32.4 76.3 32.4 19 0 28.4-32.4 47.4-32.4 28.7 0 38.2 32.4 76.3 32.4 19 0 28.6-32.4 47.6-32.4 28.6 0 38.1 32.4 76.2 32.4 19 0 28.6-32.4 47.6-32.4 28.6 0 38.2 32.4 76.2 32.4 19 0 25.2-9.2 32.4-15.8z"/>
<path fill="#a24300" fill-rule="evenodd" stroke="#fff" stroke-width="2.1" d="m474.8 131.7-3.5 329c0 17.3 15.7 17.3 17.4 0l-3.5-329Z"/>
<path fill="#006d00" fill-rule="evenodd" stroke="#fff" stroke-width="1.8" d="m510.7 254-11-11.9-2.6 12.1-4.7-17.5-4.5 8.8-.8-18.6-4.4 8.8-.8-18.6-4.4 8.8L475 204l-4.4 8.8L468 191l-4.5 8.8-2.5-21.9-1.3-11 2.2-4.3 5.8 2.1 9.1 8.7 18.3 17.4-11.3-4.3 18.3 17.4-11.4-4.3 18.3 17.3-11.4-4.2 16.6 14-11.3-4.2 16.5 14-11.3-4.2 12.6 15.2-13.1-7.6 3 14.3z"/>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-io" viewBox="0 0 512 512">
<rect fill="#fff" width="512" height="512"/>
<path fill="#000063" fill-rule="evenodd" d="M512 444c-5.7 7-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2 0-19.7 24.7-28.9 24.7V502c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-9.8 25.9-16.8zm0-86.6c-5.7 7.1-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.2 0-19.7 24.7-28.9 24.7v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-9.8 25.9-16.9zm0-86.6c-5.7 7.2-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2 0-19.7 24.8-28.9 24.8v44.5c9.2 0 13.7-24.6 29-24.6 22.8 0 30.5 34.6 60.9 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.3 0 20.2-9.9 25.9-16.9zm0-86.5c-5.7 7-10.6 23.4-25.9 23.4-30.5 0-38.1-34.6-61-34.6-15.2 0-22.8 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38 34.6-30.6 0-38.2-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.3 0-22.9 34.6-38.1 34.6-30.5 0-38.1-34.6-61-34.6-15.2 0-19.7 24.7-28.9 24.7v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.5 34.7 60.9 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.3 0 20.2-10 25.9-17zm0-86.6c-5.7 7-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.3 0-22.9 34.7-38.1 34.7-30.5 0-38.1-34.7-61-34.7-15.2.1-19.8 25-28.9 25V156c9.2 0 13.7-24.7 29-24.7 22.8 0 30.4 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.5 34.6 61 34.6 15.3 0 22.9-34.6 38.1-34.6 22.9 0 30.5 34.6 61 34.6 15.2 0 22.8-34.6 38-34.6 22.9 0 30.6 34.6 61 34.6 15.2 0 20.2-9.8 25.9-16.9V98Zm0-86.5c-5.7 7-10.6 23.5-25.9 23.5-30.5 0-38.1-34.7-61-34.7-15.2 0-22.8 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38 34.7-30.6 0-38.2-34.7-61-34.7-15.3 0-22.9 34.7-38.2 34.7C158.4 34.7 151 0 128 0c-15.3 0-22.8 34.7-38.1 34.7C59.4 34.7 51.8 0 28.9 0 13.8 0 9.2 24.8 0 24.8v44.6c9.2 0 13.7-24.7 29-24.7 22.8 0 30.4 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.5 34.7 61 34.7 15.3 0 22.9-34.7 38.1-34.7 22.9 0 30.5 34.7 61 34.7 15.2 0 22.8-34.7 38-34.7 22.9 0 30.6 34.7 61 34.7 15.2 0 20.2-9.9 25.9-17z"/>
<path fill="#a24300" fill-rule="evenodd" stroke="#fff" stroke-width="1.9" d="M377.3 169 374 470.2c0 15.9 14.3 15.9 15.8 0l-3.1-301z"/>
<path fill="#006d00" fill-rule="evenodd" stroke="#fff" stroke-width="1.7" d="m410.1 281-10-11-2.4 11.1-4.4-16-4 8-.7-17-4 8.1-.8-17-4 8-2.4-20-4 8-2.3-20-4 8-2.4-20-1.1-10 2-4 5.2 2 8.4 7.9 16.7 15.9-10.4-4 16.8 16-10.4-4 16.8 16-10.4-4 15.1 13-10.4-4 15.2 12.9-10.4-4 11.5 14-12-7 2.8 13.1z"/>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,36 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-kz" viewBox="0 0 640 480">
<path fill="#00abc2" d="M0 0h640v480H0z"/>
<g fill="#ffec2d">
<g transform="matrix(.48 0 0 .48 345.8 201.6)">
<circle r="134.6"/>
<g id="c">
<g id="b">
<path id="a" d="M0-152.9c8-.1 11-5.1 11-11.1 0-8-11-46.1-11-46.1S-11-172-11-164c0 6 3 11.1 11 11.1z"/>
<use xlink:href="#a" width="100%" height="100%" transform="rotate(90)"/>
<use xlink:href="#a" width="100%" height="100%" transform="scale(-1)"/>
<use xlink:href="#a" width="100%" height="100%" transform="rotate(-90)"/>
</g>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(22.5)"/>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(45)"/>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(67.5)"/>
</g>
<use xlink:href="#c" width="100%" height="100%" transform="rotate(11.3)"/>
</g>
<g transform="translate(-172.8) scale(.48)">
<path d="M1075.8 655c-3.5 6.3-5.6 13.6-10 19.3-13.6-12.3-33.2-12-50.4-12.7-14.2-.8-29.6-2.1-40.6-12.2-11.5-9.5-21-21.7-33.8-29.4a83.2 83.2 0 0 1-33.1-15.3c-20.2-16.5-31.8-41-51.6-58-3.7-3.6-8.2-6.5-12.4-9.6-4 1-2.2 9.6-7.1 5.2-2.7-2-9.4-2.1-10 .6 6 8 12.1 17 13 27.2-4.2.4-11.5-.9-13.5.6a84.3 84.3 0 0 0 20.4 21.3c-3.8.6-11.3.3-12.8 1.8a59 59 0 0 0 26.8 14.7c2 2.8-3.1 8.2 1.3 10.6 2.5 1 10.9 2.8 5.1 5.7-4 2.6-2.5 8.9 2.6 8.7 3.2 1.7 10.4 2 11 5-2.9 2.8-11.7 6.2-4.2 9a52 52 0 0 0 23.1 6.7c-4 3.4-9 5.3-13.1 8.5 18.5 10.9 39 18 59.4 25 8 2.6 16.3 5.1 24.7 6.7-24.4-1.4-48-8.6-70.2-18.5-11.5-5-23-9.9-34.8-14.2 5.1-2.7 11.1-3.4 16.5-5.7-11.2-2.2-23.3-3-33-9 1.4-2.8 7-2.9 10.2-4.3 6-1.4 9.6-3 1.3-3.6-8.4-2.3-18-1.3-25.5-6.3.5-3 8.3-2 11.4-3.3 4-.7 8.4-1.3 11.6-4-13-5.3-30-1.5-40.2-13-2.3-4.4 7.3-.9 10-1.6 7 0 14.5 2.2 21.2-.6-19-8.3-39.3-16-53.7-31.4-1.6-2.5-6.4-9.3-2.5-10.1 11.2 1.5 19.3 13.7 31.4 11.8 1.6-2.1-7-5.6-9.2-8.7a229.4 229.4 0 0 1-46.8-51c-.8-6.7 9.5-7.7 12.2-2.6 13.4 13 25.5 28 42.2 36.8 6 2.9-3.4-3.4-4.6-5.7a298.7 298.7 0 0 1-40.9-57.9c-2-3.8-5.1-10.7.7-12.7 5.7-2.9 11.5 1 14.4 6 11.3 14.3 19.7 31.3 33.8 43.2-12-23.3-24.9-48-25.2-74.8.3-5.2.6-13 7.7-12.9 6-.9 5 6.7 7 10.3 5.8 19.8 8.3 41.2 20 58.6-2.5-14.6-6.4-29.7-3.8-44.6.6-5 6-6.4 9.7-3.4 2.9 7 3.5 15.9 6.1 23.5a237 237 0 0 0 93 127.2 244.7 244.7 0 0 0 123.3 42.3c4 .4 8 .5 11.9.7m136.4 91.1c-7.2 4.4-12.8-3.4-18.8-5.7-4.4 2.4-4.8 10.2-8.8 14-4.8 5.5-10.8-1.6-10.3-7-5.8 4.9-8.7 16-18 14.4-4.5-3.6-7.8-11.2-11.2-2.5-2.7 4.2-10 10.2-13.9 3.8-1.2-5.6-4-12.2-7-3.3-2.2 6.4-9 11-15.4 8.2-3.6-2.9 2.8-13.7-1.7-13-6.8 4.6-10.8 15.7-20.3 14.8-3.7-4 2.3-11.1-1.8-15.7-4.7 6.1-10 15.1-18.3 15.7-4-3.2.2-12.5-2.4-13.8-8.4 5-17.4 14.1-28 11.3 4.1-16 21.5-21.5 36-22.7 25.1-3.1 51.5 2.6 75.7-6.5 3.9-2.4 13.3-5.7 10-11.2-3-4.4 7.7-2.7 8.7-7.8-.6-6.4 5-5.5 10.4-6 24.4-1.1 48.5 4 72.8 4.9 1.8 11.8-11.3 20.1-22 16.5-5 .8-12.5-11.6-11-2.6-1 4.8-.4 11-4.7 14.2m-207.4-24.2c5.6 5.1 9.6-1 14.9-3.3a197 197 0 0 0 48.3-27.3c9.2-7.6 17.2-17.5 29.6-20 24.2-7.3 49.9-6.4 74.1-13.2 18.5-25.2 49.8-34.3 76.1-48.8 5.9-1.8 8.2-6.7 10-12 10-15.9 23.7-29.9 39.9-39.5a37.2 37.2 0 0 1 25.4-4.6 42.4 42.4 0 0 1-13.7 26.5c5.9-.1 11-3.8 16.8-3.6 2 10.6-9.4 16.1-15.5 22.7 3.4.8 16.4 1.8 9.3 5.2-9 6.2-19.3 10.5-27.6 17.8 7.7 1.4 8.6 3 .8 5.8-4.3 2.8-12.4 3.8-13.2 9.4 5.8 3.6-2.6 7-5.9 8.2-6.2 1.5-12.8 4.2-4.5 9-3.1 4.7-9.9 5.7-15.4 5.2 1.7 5.4 4.1 11.4-2.8 13.8a107.7 107.7 0 0 1-53.6 22.4c24.5 1.8 49.8-2.7 70.7-16 2.8-3.3 17.3-6.9 9.2-9.6-3.8-1.6-12-3.4-12.6-6.3 11.4-7 25.7-4.5 37.9-8.6.3-4-9.3-2.9-12.9-3.8-8.5-.7-8-2.9.2-3.7 10.4-2.8 22.2-3.3 31-10-7.1-3.4-16.1-.5-23.7-3.2 12.9-5.6 28.1-6.2 39.7-14.7 5.3-5.9-6.8-4-10.3-3.9-7.1 1.3-10.4-2.2-2.3-5.1 13.9-10.3 31.4-16.9 41.2-31.7 2.3-3.3 5.4-13.3-2-9.8-9.6 3.3-18.1 14.1-29.2 10.8 21.8-16.9 42.4-36 57.3-59.3.8-6.8-9.8-7.5-12.5-2.2-14 13.4-26.6 29.3-44.5 37.8a280.6 280.6 0 0 0 43.6-56.4c2.7-6 9.8-13.3 6-20-6.3-5.2-14.1-.4-17.3 5.7-10.9 14.2-19.1 30.7-33 42.3 12.1-23.3 24.8-48.2 25-75 0-5.6-1-13.8-8.6-12.7-6 1-4.5 10-7 14.5-5.4 18.4-8 38.3-19 54.3 2.5-14.9 6.8-30.5 3.5-45.5-1.6-6.8-12.5-3.9-11 2.8-13 65.9-57.3 123.5-115 156.8-26.5 15-56 24.6-86.2 29-8 1.7-16.8.7-24.5 3.5-18.8 14.3-30.1 38.4-53.8 45.9-10.7 5.3-24.5 6.4-32.1 16.2a8.6 8.6 0 0 0-.8 4.2m51.7-10.3c-3.6.2-7.1.6-10.6 1.7-4.7.7-9.2 2.3-13.8 3l-1.9.4-3.1.3a10.9 10.9 0 0 1 0 5.1 6 6 0 0 1-1.4 2c-.6.8-1.3 1.4-2.2 1.8a7 7 0 0 1-2.6.7c-.9 0-1.8 0-2.7-.4-.9-.3-1.7-.8-2.5-1.5l-2.8.5h-2.6l-2.8-1a16.1 16.1 0 0 1-2.6-1.3c-3.4 2-7.2 3.9-9.3 7.4a11 11 0 0 0-1.6 5.3c-.2 2.4.4 4.8 1.4 7 .4.6.7-2.3 1.8-2.7 1.9-1.6 4.3-2.7 6.7-3.3 2-1 1.7 0 .9 1.6-.2.9-1.3 4 .2 2.4a65 65 0 0 1 21.6-4.1c10.6-1.1 21.2-1.4 31.8-1.5l30 .6c4.8.2 9.6 1.2 14.3.4 1.1-.3 2.9-.3 3.6-1-2.2-1.2-4.7-1.3-7-1.6h-19.1c-5.3-.5-10.8-.6-15.8-2.6-1.4-.5-2.6-1.8-3.9-.4a24 24 0 0 1-5.9 1.3c-3.5.2-7-.5-10.2-1.8 2.3-3.2 5.1-6 7.7-9l-6.2-1.3c3.7-2.5 7-5.4 10.6-8z"/>
<circle cx="1020" cy="720.9" r="2.4"/>
<circle cx="1019.8" cy="720.5" r="1" stroke="#ffec2d" stroke-width=".4"/>
</g>
<g transform="scale(.48)">
<g id="f">
<g id="e">
<path d="M120 73s-9.6-8.2-12.9-4.1c-5.2 6.5 16.2 39 16.2 50.4 0 18.8-12.6 23.9-28 26.5-10.4 1.8-27.3-.7-27.3-.7 3.2-4.3 5.3-5.6 10.6-5.9-6-3-12-9.8-12-20.3 0-16.1 6.6-22.8 6.6-41C73.2 68 65 55 65 55c14.6 1.5 21.8 15 17.7 25.8a7 7 0 0 0 6.3-1.9c1 3-.6 6.5-2.9 9.5 1.8 1 3.2.4 6-.2-.2 3-2 6.4-6.6 9.5 13.2-3.4 21.2 5.7 21.2 15.3 0 7.3-5 12.5-10 12.5-1.6 0-4-.7-5.3-1.7-1 2-.4 4.7.5 6.7-3.6-1-6-3.2-4.3-7.7-2.8-.2-5-1.2-6.5-3 1.5-2 3.8-3 6.5-3-2-4.2.3-6.5 3.6-8.4 0 0-2.1 8.4 3.2 8.4 2.4 0 4.6-.7 4.6-4.3 0-3.1-2.7-7.4-9-7.1-6.2.3-11.3 4.3-11.3 14.3 0 9.2 7.5 13.8 17.3 14 8.8.4 15.5-4.4 15.5-13.5C111.5 108 94 80.4 94 69.6c0-8.1 7.2-12.7 14.4-12.7 9.2 0 17 9.2 17 9.2l-5.4 6.8z"/>
<path id="d" d="M122 292.1c0 20.3-18.2 30.7-32.5 30.7-19.2 0-29.5-11.5-29.5-26.6 0-8.5 1.6-13.9 5.5-22l44.2-91.7a27 27 0 0 0 2-12.2c0-8.2-8-14.9-16.3-15-7.6-.3-16 7-16 15.3 0 10.1 5.3 14.6 10.7 14.6 6.6 0 9.2-2.7 9.2-7.4 0-3.2-1.5-4.6-3.8-4.6-5.7 0-4 7.6-4 7.6a5.2 5.2 0 0 1-3.9-7 10.2 10.2 0 0 1-5.5-3.3c1.5-1.5 3.3-2.6 5.5-3-1.3-4.4.5-6.5 4.3-7.5a7.6 7.6 0 0 0-.5 4.8c6-1.8 15.3 1 15.3 11.4s-7.2 19.1-20.7 17c3.2 1.5 4.8 4.6 5.2 8.1-2.5-1-5.2-1-5.2-1 1.6 2.7 3.8 5 3.7 10.6-2.5-1.2-4.9-3.3-8-2 5 10-1.2 23.6-17 26.8 5.8-6.8 8.6-14 8.6-21.3 0-23.5-6.5-27.4-6.5-43.8a24 24 0 0 1 10.5-19.2v.3A14 14 0 0 1 68 145a62 62 0 0 1 34 .3 25 25 0 0 1 18 12 36 36 0 0 1 0 28.9c-6.3 13-35.7 75.6-44.9 95.2-2 4.2-3.1 8.6-3.1 13.4 0 12 11 16.2 17.2 16.2 7.5 0 15.2-5.7 15.2-12.8 0-4.5-2.5-7.3-6-7.3-8.5 0-8 7.2-6.3 11.8-5.3-2.4-8.3-6.6-7.5-11a14 14 0 0 1-8.4-4.8c2-2.6 4.6-4.6 8.4-4.7-1.7-6.9 3-9.8 7.5-11.4-1.4 5-2.4 10.9 6.3 10.9 6.3 0 11.2 1 14.1 5.2l.7-27c.4-8.1-10.8-8-18-5.5 2.7-9.3 8.2-14.4 21-13.1a10 10 0 0 1-6.4-9.8c0-7.6 6.2-16 10.2-18.5l2 79z"/>
<use xlink:href="#d" width="100%" height="100%" transform="matrix(1 0 0 -1 0 645)"/>
</g>
<use xlink:href="#e" width="100%" height="100%" transform="matrix(-1 0 0 1 240 0)"/>
</g>
<use xlink:href="#f" width="100%" height="100%" transform="matrix(1 0 0 -1 0 1000)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,23 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-kz" viewBox="0 0 640 480">
<g fill-rule="evenodd">
<path fill="#00abc2" d="M0 0h640v480H0z"/>
<g fill="#ffec2d">
<path d="M60.2 467c3.3 3.2 2.2 8.5 11.3 7.8 13.8 0 14.2-8.4 14.2-14.3S65 446.4 64 437.7c-1-8.7 4.8-11 9.6-11 4.7 0 8 2.7 8 5.1S79.4 435 76 435s1.5-1.7-1.4-3-4.8 2-4.8 4c0 2.2 7.2 2.8 12 1.3 1 4.7 1.4 5-5.3 13 4.8-3.1 5.2-3.8 10.5-2-5.3-4.6-1.3-13.8-1.2-16.1s-1-5.1-3-6.5c-3.9-3.5-12.2-3.7-17.2-1.4-7.3 3.2-7.7 12.8-5.8 16L80 460.7c1.4 2.4 2 9.2-6.6 9.5-9 .7-12.2-11.6-13.8-15.7-2.1 4.5-4.5 16.8-13.6 16.1-8.6-.3-10.2-7-8.8-9.5l20.7-21c2-3.2 1.6-12.8-5.7-16-5-2.3-13.3-2-17.1 1.4-2.2 1.4-3.4 4.1-3.2 6.5s4.1 11.5-1.1 16c5.2-1.7 5.7-1 10.5 2-6.7-7.9-6.2-8.2-5.3-13 4.8 1.6 12 1 12-1.1s-2-5.6-4.9-4.2c-2.8 1.4 2 3.1-1.4 3.1-3.3 0-5.7-.7-5.7-3s3.3-5.3 8.1-5.3 10.5 2.4 9.5 11.1-22 18.1-22 24c0 6 1.4 13.1 15.2 13.1 9 .7 10.1-4.6 13.4-7.8z"/>
<path d="M59.1 343.3c3.3-3.2 6-12.6 15-12 13.8 0 19 7.7 19 13.6 0 5.9-28 54-29 62.7-1 8.7 4.8 11.1 9.5 11.1 4.8 0 8.1-2.7 8.1-5.2s-2.4-3-5.7-3 1.4 1.7-1.4 3-4.8-2-4.8-4.1c0-2.1 7.2-2.8 12-1.2.9-4.7 1.3-5-5.3-13 4.8 3 5.2 3.8 10.5 2-5.3 4.6-1.4 13.7-1.2 16s-1 5.2-3.1 6.6c-3.8 3.5-12.2 3.6-17.2 1.4-7.2-3.3-7.6-12.8-5.7-16L87 346.6c1.5-2.4-2.3-10.4-10.9-10.7-9-.7-12.1 8.8-13.7 12.9l12.3-1s.5 2 0 3.2a110 110 0 0 0-12.3 1.6l-.5 6.2h6l-.4 2.8s-5.1-.4-5.6 0c-.5.3-1 6.2-1 6.2s-1 .4-2 .4-2-.4-2-.4-.4-5.9-.9-6.2c-.5-.4-5.6 0-5.6 0l-.5-2.8H56l-.5-6.2s-6-1.2-12.3-1.6c-.4-1.2 0-3.1 0-3.1l12.3.9c-1.6-4.1-4.7-13.6-13.7-13-8.6.4-12.4 8.4-11 10.8L58 405.2c1.9 3.1 1.5 12.7-5.7 16-5 2.2-13.4 2-17.2-1.4-2.1-1.4-3.3-4.2-3.1-6.5s4-11.6-1.2-16c5.3 1.7 5.8 1 10.5-2.1-6.6 8-6.2 8.3-5.2 13 4.7-1.6 11.9-1 11.9 1.2 0 2-2 5.5-4.8 4.1-2.8-1.4 2-3-1.4-3-3.3 0-5.7.6-5.7 3s3.3 5.2 8 5.2 10.5-2.4 9.6-11c-1-8.7-29-57-29-62.8 0-6 5.2-13.5 19-13.5 9-.7 12.3 8.7 15.5 11.9z"/>
<path d="M59.1 319.4c3.3 3.2 6 12.6 15 12 13.8 0 19-7.7 19-13.6 0-5.9-28-54-29-62.7-1-8.7 4.8-11.1 9.5-11.1 4.8 0 8.1 2.7 8.1 5.2s-2.4 3-5.7 3 1.4-1.6-1.4-3-4.8 2-4.8 4.1c0 2.1 7.2 2.8 12 1.2.9 4.7 1.3 5-5.3 13 4.8-3 5.2-3.8 10.5-2-5.3-4.6-1.4-13.7-1.2-16s-1-5.2-3.1-6.6c-3.8-3.4-12.2-3.6-17.2-1.4-7.2 3.3-7.6 12.8-5.7 16L87 316c1.5 2.4-2.3 10.4-10.9 10.7-9 .7-12.1-8.8-13.7-12.9l12.3 1s.5-2 0-3.2a110 110 0 0 1-12.3-1.6l-.5-6.2h6l-.4-2.8s-5.1.4-5.6 0c-.5-.3-1-6.2-1-6.2s-1-.4-2-.4-2 .4-2 .4-.4 5.9-.9 6.2c-.5.4-5.6 0-5.6 0l-.5 2.8H56l-.5 6.2s-6 1.2-12.3 1.6c-.4 1.2 0 3.1 0 3.1l12.3-.9c-1.6 4.1-4.7 13.6-13.7 13-8.6-.4-12.4-8.4-11-10.8L58 257.5c1.9-3.2 1.5-12.7-5.7-16-5-2.2-13.4-2-17.2 1.4-2.1 1.4-3.3 4.2-3.1 6.5s4 11.5-1.2 16c5.3-1.7 5.8-1 10.5 2.1-6.6-8-6.2-8.3-5.2-13 4.7 1.6 11.9 1 11.9-1.2 0-2-2-5.5-4.8-4.1-2.8 1.4 2 3-1.4 3-3.3 0-5.7-.6-5.7-3s3.3-5.2 8-5.2 10.5 2.4 9.6 11c-1 8.7-29 57-29 62.8 0 6 5.2 13.5 19 13.5 9 .7 12.3-8.7 15.5-11.9z"/>
<path d="M59.1 160.6c3.3-3.2 6-12.6 15-12 13.8 0 19 7.7 19 13.6 0 5.9-28 54-29 62.8-1 8.6 4.8 11 9.5 11 4.8 0 8.1-2.7 8.1-5.1s-2.4-3.2-5.7-3.2 1.4 1.8-1.4 3.2-4.8-2.1-4.8-4.2c0-2 7.2-2.8 12-1.2.9-4.7 1.3-5-5.3-13 4.8 3.1 5.2 3.8 10.5 2-5.3 4.6-1.4 13.8-1.2 16s-1 5.2-3.1 6.6c-3.8 3.5-12.2 3.6-17.2 1.4-7.2-3.3-7.6-12.8-5.7-16L87 164c1.5-2.4-2.3-10.4-10.9-10.7-9-.7-12.1 8.8-13.7 12.9l12.3-1s.5 2 0 3.2c-6.4.4-12.3 1.6-12.3 1.6l-.5 6.2h6l-.4 2.8s-5.1-.3-5.6 0-1 6.3-1 6.3-1 .3-2 .3-2-.3-2-.3-.4-6-.9-6.3c-.5-.3-5.6 0-5.6 0l-.5-2.8H56l-.5-6.2s-6-1.2-12.3-1.6c-.4-1.2 0-3.1 0-3.1l12.3.9c-1.6-4.1-4.7-13.6-13.7-13-8.6.4-12.4 8.4-11 10.8L58 222.5c1.9 3.2 1.5 12.7-5.7 16-5 2.2-13.4 2-17.2-1.4-2.1-1.4-3.3-4.2-3.1-6.5s4-11.5-1.2-16c5.3 1.7 5.8 1 10.5-2.1-6.6 8-6.2 8.3-5.2 13 4.7-1.6 11.9-.9 11.9 1.2 0 2-2 5.5-4.8 4.1-2.8-1.3 2-3-1.4-3-3.3 0-5.7.6-5.7 3s3.3 5.2 8 5.2 10.5-2.4 9.6-11c-1-8.7-29-56.9-29-62.8 0-5.9 5.2-13.5 19-13.5 9-.7 12.3 8.7 15.5 12z"/>
<path d="M59.1 136.7c3.3 3.2 6 12.7 15 12 13.8 0 19-7.7 19-13.6 0-5.9-28-54-29-62.7-1-8.7 4.8-11.1 9.5-11.1 4.8 0 8.1 2.8 8.1 5.2s-2.4 3.1-5.7 3.1 1.4-1.7-1.4-3.1-4.8 2-4.8 4.1c0 2.1 7.2 2.8 12 1.2.9 4.7 1.3 5-5.3 13 4.8-3 5.2-3.8 10.5-2-5.3-4.5-1.4-13.7-1.2-16s-1-5.2-3.1-6.6c-3.8-3.4-12.2-3.6-17.2-1.3-7.2 3.2-7.6 12.8-5.7 15.9L87 133.4c1.5 2.4-2.3 10.4-10.9 10.8-9 .6-12.1-8.8-13.7-13l12.3 1s.5-2 0-3.2a111.5 111.5 0 0 1-12.3-1.5l-.5-6.3h6l-.4-2.8s-5.1.4-5.6 0c-.5-.3-1-6.2-1-6.2s-1-.4-2-.4-2 .4-2 .4-.4 5.9-.9 6.2c-.5.4-5.6 0-5.6 0l-.5 2.8H56l-.5 6.3s-6 1.1-12.3 1.5c-.4 1.3 0 3.2 0 3.2l12.3-1c-1.6 4.2-4.7 13.6-13.7 13-8.6-.4-12.4-8.4-11-10.8L58 74.8c1.9-3.1 1.5-12.7-5.7-16-5-2.2-13.4-2-17.2 1.4-2.1 1.4-3.3 4.2-3.1 6.5s4 11.6-1.2 16c5.3-1.7 5.8-1 10.5 2.1-6.6-8-6.2-8.3-5.2-13 4.8 1.6 11.9 1 11.9-1.2 0-2-2-5.5-4.8-4.1-2.8 1.4 2 3.1-1.4 3.1-3.3 0-5.7-.7-5.7-3.1s3.3-5.2 8-5.2 10.6 2.4 9.6 11c-1 8.7-29 57-29 62.8 0 6 5.2 13.6 19 13.6 9 .7 12.3-8.8 15.5-12z"/>
<path d="M60.2 13c3.3-3.2 2.2-8.5 11.3-7.8 13.8 0 14.2 8.4 14.2 14.3S65 33.6 64 42.3c-1 8.7 4.8 11 9.6 11 4.7 0 8-2.7 8-5.1S79.4 45 76 45s1.5 1.7-1.4 3-4.8-2-4.8-4c0-2.2 7.2-2.9 12-1.3 1-4.7 1.4-5-5.3-13 4.8 3.1 5.2 3.8 10.5 2-5.3 4.6-1.3 13.8-1.2 16.1s-1 5.1-3 6.5c-4 3.7-12.3 3.7-17.3 1.5-7.3-3.2-7.7-12.8-5.8-16L80 19.3c1.4-2.4 2-9.2-6.6-9.5-9-.7-12.2 11.6-13.8 15.7C57.5 21 55.1 8.6 46 9.3c-8.6.3-10.2 7-8.8 9.5l20.7 21c2 3.2 1.6 12.8-5.7 16-5 2.3-13.3 2.1-17.1-1.4-2.2-1.4-3.4-4.1-3.2-6.5s4.1-11.5-1.1-16c5.2 1.7 5.7 1 10.4-2-6.6 7.9-6.1 8.2-5.2 13 4.8-1.6 12-1 12 1.1s-2 5.6-4.9 4.2c-2.8-1.4 2-3.1-1.4-3.1-3.3 0-5.7.7-5.7 3s3.3 5.3 8.1 5.3 10.5-2.4 9.5-11.1-22-18.1-22-24c0-6 1.4-13.1 15.2-13.1 9-.7 10.1 4.6 13.4 7.8z"/>
</g>
<g fill="#ffec2d" transform="translate(-194.7 8.3) scale(1.0673)">
<rect width="170.2" height="161.3" x="425.9" y="104.5" rx="85.1" ry="80.7"/>
<path d="M507 56.4c-.8 0-4.6 26.8-6 32.8-1.4 13.5 18 13 14.8-.5L507 56.3zm6.8 259.8c.7 0 6.5-26.5 8.4-32.4 2.3-13.3-17.1-14-15-.4l6.6 32.8zM378.2 184.6c0 .7 27.9 6.3 34.1 8.1 14 2.3 15-16 .6-14l-34.7 6zm271.7 3.2c0-.7-28.2-5.3-34.5-6.9-14.1-1.7-14.2 16.6 0 14.1l34.5-7.2zM406.8 99.6c-.5.5 17.9 21.3 21.6 26.4 9.6 10 22.3-4 9.6-10.8l-31.2-15.5zm211.1 171c.5-.5-19.7-19.7-23.9-24.4-10.5-9.2-21.8 5.7-8.6 11.5l32.5 13zm-169-200c-.6.3 8 26.1 9.4 32.2 4.8 12.7 22.2 4.4 13.2-6.5L449 70.6zM572 303c.7-.3-6-26.6-6.9-32.7-3.9-13-21.8-6-13.7 5.6l20.7 27zm30.3-214.4c-.6-.5-22.8 16.6-28.2 20-10.7 9 3.8 21.2 11.2 9.3l17-29.3zm-183 193.7c.5.5 24-15 29.6-18.1 11.3-8.2-2.2-21.4-10.5-10l-19 28.1zm-35-144.1c-.3.6 24 14.7 29.3 18.4 12.5 6.5 19.8-10.5 5.5-13.2l-34.8-5.2zM638 236.6c.3-.6-23-16.3-28-20.3-12-7.4-20.5 9.1-6.4 12.7l34.4 7.6zM557.4 63.7c-.7-.2-14.6 23.4-18.3 28.5a7.8 7.8 0 0 0 14 4.7l4.3-33.2zM463.5 308c.7.3 16.3-22.4 20.3-27.3 7.3-11.6-10.4-19-13.7-5.6l-6.6 32.9zM386 238.7c.3.6 28-6 34.5-7 13.6-3.8 6-20.6-6-12.8L386 238.7zM638.1 136c-.2-.6-28.3 4.1-34.8 4.7-14 2.9-7.5 20.2 5 13.2l29.8-17.9z"/>
<path d="M534.6 58.1c-.7-.1-10.1 25.4-12.9 31-4.1 13 15 16.2 14.7 2.4L534.7 58zM486.1 314c.7.2 12-24.7 15.2-30.2 5-12.6-13.8-17-14.5-3.3L486 314zm-9.7-253.4c-.7.2 1.9 27.2 1.9 33.4 1.9 13.3 20.6 8.7 14.4-3.7l-16.3-29.7zm68 251.9c.7-.1 0-27.2.5-33.4-.9-13.5-20-10.1-14.6 2.7l14 30.7zM428.2 83c-.6.4 12.7 24.3 15.2 30 7.2 11.7 22.7.7 11.8-8.6l-27-21.4zM593 290.9c.6-.4-11-25.2-13-31-6.3-12.1-22.5-2.1-12.4 7.8l25.4 23.2zM393 116.6c-.4.6 21.1 18.4 25.6 23 11.1 8.4 21.4-7.2 7.8-12.1L393 116.6zm234.2 139.7c.4-.6-19.7-19.8-23.9-24.6-10.4-9.1-21.8 5.8-8.6 11.6l32.5 13zm-249.6-97.8c-.2.7 26.3 10.8 32.1 13.7 13.4 4.5 17.7-13.4 3.1-13.8l-35.2.1zM645 216.3c.3-.6-25.4-12.4-31-15.7-13-5.4-18.7 12.2-4.2 13.6l35.2 2.1zM376.7 210c.1.6 28.7.2 35.2.7 14.2-.7 10.8-18.8-2.8-13.9L376.7 210zm270.2-45c0-.7-28.6-2.2-35-3.1-14.3-.2-12.2 18.1 1.7 14l33.3-11zm-245.7 98.4c.4.6 26-11.6 32-13.9 12.4-6.5 1-21.4-8.9-11.3l-23.1 25.2zm222.3-152.3c-.4-.6-26.7 9.9-33 11.8-12.9 5.7-2.6 21.3 8 11.9l25-23.7zM442.8 298.8c.6.3 18.9-20.5 23.5-24.9 8.7-10.7-8-20-12.9-7l-10.6 31.9zM582.5 75c-.5-.4-20.3 19.1-25.2 23.2-9.4 10.1 6.6 20.5 12.4 7.9L582.4 75z"/>
<g transform="matrix(2.1824 0 0 2.0629 -405 -272.6)">
<path d="M360.1 247.9c.7 2.5.8 16.5 14.9 30 14 13.4 38 16.4 38 16.4s.1 1.9-1.6 2c-1.7.2-9.9-1.5-14-2.8-4-1.2-7.6-3.4-8-3.3-.5.2-1.3 1.6-2.5 1.4s-7-6.2-9.6-7.8a80.6 80.6 0 0 1-13.7-15.3c-2.8-4.5-3.5-7.5-4.4-7.5s-4.2 2.2-4.2 2.2-3-4.5-5.6-11.7c-2.7-7.2-2.4-11.4-1.8-11.7.7-.3.7 5.3 2.7 10.4 2 5.2 4.8 6.8 4.8 6.8s-1.8-2.7-3.2-9.4-2-13.2-1-15.2 1.9-2.6 2-2.5c.2.2-1.7 3.1-.4 10.8s4.8 14.2 5.6 13.9c.8-.3-.5-1.9-1-6.4s.5-7.3 1.6-7.7c.5-.4 1.3 5 1.4 7.4zm-9.8 12.8c-2.7-2.5-6.9-11.2-7.8-10.8-1 .5 6.8 13 7 14 .2 1.2 1.9 4.6.6 4.1s-10.6-10.3-9.5-8.4 8.1 10.5 7.7 11-5.8-4.8-6-4.1c-.1.6 5.3 5.8 5.2 6.4s-3.5-3.3-3.5-2.5 3.5 4.7 3.5 5.3-3-2.8-2-1c.9 2 3.5 3.7 3.4 4.3s-2.2-.8-2.2-.5c0 .3 3.9 1.7 4.8 2.8 1 1.1 7.4 8.5 12.2 12.2s18.6 10.2 19.6 10.2c.9 0 2.3-2 2-2.8-.3-.8-13.8-5.4-17.5-8.8-3.8-3.4-13-11.6-13.8-12-.7-.5-2.8-.3-2.8-.8s2.7.3 2.5 0c-.1-.3-3.7-1.9-3.6-2.2.2-.3 2.5.6 2.5.3s-4.2-2.6-4-3.1c.1-.5 3.1 1.4 3.1 1 0-.2-4-3-3.9-3.5.1-.5 3.1 2.2 3 1.6s-2.4-4-2.4-4.4c0-.5 3.6 3.4 4 2.6.2-.7-1.3-7.2-1.2-7.3s2.7 1.4 3.1.5c.5-1-1.8-2.3-4-4.1zm46.1 49.2c-1.9.3-2.8-.4-1.7-2 1.5 0 5.5-1.3 6.9-1.9s2.9-1.4 4.1-2.5c1.2-1.3 2 .7 1.3 1.8-.5.7-2.8 2-4.5 2.7-2.5.8-4.7 2-6.1 1.9zm12.5-5.1c-1.3-1.4-.2-2.4 1.7-3.5 2.8-1.5 2-3.6 5.6-5.3 1.6-1 24-10 31.3-14.8s27.8-20.3 33.3-31c5.4-10.6 2.8-11.4 3.6-11.8.7-.5 1.5 1.5 1.4 3.9-.2 2.3-2 9.3-1.4 10s8.2-5.5 11.4-13 5.6-15.3 7.1-15.3c1.6 0-2.6 12.8-5.3 17.8-2.6 5-5.7 7.5-5 8.6.8 1 8.6-5.5 11.3-10.3 2.6-4.9 5.1-9.2 5.6-8.3a34 34 0 0 1-6.7 16.1c-4.2 4.8-9.2 8.3-8.4 9 .7.8 6.4 1.6 12.3-2.4 6-4.1 6.6-10 7.3-9.7.8.3-.7 8.4-6.4 13.4s-13.2 5.5-13 6.6c.4 1 16.3-4.6 16-3.3-.3 1.2-20.6 9.2-20.8 10 0 .6 3.5.8 9-.5 5.4-1.2 10.6-5.5 11.3-4.5.2 1.4-3.9 4.8-10.1 6.4-6.3 1.6-9.4 3.7-9.6 4.2-.1.5 11.2-1.4 11.2-.8s-14.8 3.5-14.9 4.3c-.2.7 14-2.9 13.8-2-.4.7-19.3 6.3-19.1 6.6.1.4 15.8-3.4 15.5-2.8-.4.7-26.4 8-26.6 8.5-.2.4 23-5.2 22.8-4.7s-12 3.4-12 3.7c0 .3 9.5-1.5 9.3-1-.1.4-24 6.5-24.5 7.4-.5 1 12.4-2.5 12.2-.7s-27.7 11-27.8 9.3c-.2-1.7 16.7-6 16.6-6.5-.2-.5-9.7 1-9.9.1-.1-1 6.3-3 5.8-3.4-.5-.5-5.3 1.4-4.9.3.5-1.1 9.6-5.3 9.4-5.6-.1-.3-3.3 1-3 0 .4-1.1 19.7-6.7 19.4-7.4-.3-.6-8.9 1.4-9.7 1.6-.3-.6 12-5.2 11.8-6-.4-.7-6.6 2.7-7 1.8-.2-1 10.9-5.3 10.2-6s-5.7 1.8-6.4 1.1 10.5-8.4 8.8-8.6c-1.7-.1-3.8 2.4-4 .8.2-2 8.7-5.3 6.8-6.9-3-.9-13.1.7-17.3 3.2s-18.2 16.4-21.6 18.6c-3.4 2.1-15 7-17.2 8-3.4 1.2-4 3-7.5 4.8-6.3 1.7-6.2 3.6-9.2 4.7-1.1.3-12.4 5.7-12.5 5.3zm-15.8 7c-1.9 1-3.6 3.4-2.5 4.4.6 1.2 2.5-2.7 4-2.5l8 .4c4.3.3 6.4-.9 8.8-.7s7.7-1.3 10.2-1.3 3 .3 3.2-.8c.3-1-7.8-.3-11.4-.4-3.6-.2-8.1.7-10.8.7-2.5-.1-6.8-.9-9.5.2z"/>
<rect width="3.4" height="3" x="401.7" y="309.1" rx="1.7" ry="1.5"/>
<path d="M445 307.7c1.7-.3 6.3 1.3 9.5 2 5.8 2.3 16.6 1.2 16.6 2.3s-.7 2.4-3.2 2.6-8.8-1-8.6-1 5 2.3 3.6 2.9-5.5-1.3-6.2-.8 3.8 1.4 3 1.7c-.6.3-3.7-.4-4.7-.3-1 .2.8 1.3-.4 1.7-1.2.5-3.2-.6-4-.3-.9.3 1.8 2 .6 2.2-1.2.2-4-.8-5.6-1-1.6 0 1.5 1.6.5 1.8-1 .1-3.8-1.3-4.5-1.3s0 2-1 2-2.2-1.7-2.8-1.7 0 2-1 2-1.4-2.1-2.2-2c-1 .2 0 2.7-1.4 2.5-1.3-.1-1.5-2.6-2.6-2.5-1 .2.2 2.5-.8 2.5s-1.2-2.3-2.2-2.5c-1-.1-.6 2.2-1.2 2.2s-1.2-2.2-1.6-2.2c-.3 0 0 2.2-1.2 2s-1.2-2.4-1.5-2.3c-.4.2-.4 1.8-1.2 1.8s-.9-1.6-1.2-1.4c-.4.1-1.6 2.1-2.4 1.8-.9-.3.2-1.9-.2-1.9s-1.4 1.1-2 1 0-1.4-.2-1.4-1.7.8-2.4.8-2.6 1-3.1.1c-.5-1 1.3-1 1.7-1.9.3-.9-1-3.6.4-4.5 1.3-1 5.6 1.3 12-.3 11.6-3.1 20.6-6.7 21.5-6.6z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,36 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="flag-icons-kz" viewBox="0 0 512 512">
<path fill="#00abc2" d="M0 0h512v512H0z"/>
<g fill="#ffec2d">
<g transform="matrix(.512 0 0 .512 276.7 215)">
<circle r="134.6"/>
<g id="c">
<g id="b">
<path id="a" d="M0-152.9c8-.1 11-5.1 11-11.1 0-8-11-46.1-11-46.1S-11-172-11-164c0 6 3 11.1 11 11.1z"/>
<use xlink:href="#a" width="100%" height="100%" transform="rotate(90)"/>
<use xlink:href="#a" width="100%" height="100%" transform="scale(-1)"/>
<use xlink:href="#a" width="100%" height="100%" transform="rotate(-90)"/>
</g>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(22.5)"/>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(45)"/>
<use xlink:href="#b" width="100%" height="100%" transform="rotate(67.5)"/>
</g>
<use xlink:href="#c" width="100%" height="100%" transform="rotate(11.3)"/>
</g>
<g transform="translate(-276.5) scale(.512)">
<path d="M1075.8 655c-3.5 6.3-5.6 13.6-10 19.3-13.6-12.3-33.2-12-50.4-12.7-14.2-.8-29.6-2.1-40.6-12.2-11.5-9.5-21-21.7-33.8-29.4a83.2 83.2 0 0 1-33.1-15.3c-20.2-16.5-31.8-41-51.6-58-3.7-3.6-8.2-6.5-12.4-9.6-4 1-2.2 9.6-7.1 5.2-2.7-2-9.4-2.1-10 .6 6 8 12.1 17 13 27.2-4.2.4-11.5-.9-13.5.6a84.3 84.3 0 0 0 20.4 21.3c-3.8.6-11.3.3-12.8 1.8a59 59 0 0 0 26.8 14.7c2 2.8-3.1 8.2 1.3 10.6 2.5 1 10.9 2.8 5.1 5.7-4 2.6-2.5 8.9 2.6 8.7 3.2 1.7 10.4 2 11 5-2.9 2.8-11.7 6.2-4.2 9a52 52 0 0 0 23.1 6.7c-4 3.4-9 5.3-13.1 8.5 18.5 10.9 39 18 59.4 25 8 2.6 16.3 5.1 24.7 6.7-24.4-1.4-48-8.6-70.2-18.5-11.5-5-23-9.9-34.8-14.2 5.1-2.7 11.1-3.4 16.5-5.7-11.2-2.2-23.3-3-33-9 1.4-2.8 7-2.9 10.2-4.3 6-1.4 9.6-3 1.3-3.6-8.4-2.3-18-1.3-25.5-6.3.5-3 8.3-2 11.4-3.3 4-.7 8.4-1.3 11.6-4-13-5.3-30-1.5-40.2-13-2.3-4.4 7.3-.9 10-1.6 7 0 14.5 2.2 21.2-.6-19-8.3-39.3-16-53.7-31.4-1.6-2.5-6.4-9.3-2.5-10.1 11.2 1.5 19.3 13.7 31.4 11.8 1.6-2.1-7-5.6-9.2-8.7a229.4 229.4 0 0 1-46.8-51c-.8-6.7 9.5-7.7 12.2-2.6 13.4 13 25.5 28 42.2 36.8 6 2.9-3.4-3.4-4.6-5.7a298.7 298.7 0 0 1-40.9-57.9c-2-3.8-5.1-10.7.7-12.7 5.7-2.9 11.5 1 14.4 6 11.3 14.3 19.7 31.3 33.8 43.2-12-23.3-24.9-48-25.2-74.8.3-5.2.6-13 7.7-12.9 6-.9 5 6.7 7 10.3 5.8 19.8 8.3 41.2 20 58.6-2.5-14.6-6.4-29.7-3.8-44.6.6-5 6-6.4 9.7-3.4 2.9 7 3.5 15.9 6.1 23.5a237 237 0 0 0 93 127.2 244.7 244.7 0 0 0 123.3 42.3c4 .4 8 .5 11.9.7m136.4 91.1c-7.2 4.4-12.8-3.4-18.8-5.7-4.4 2.4-4.8 10.2-8.8 14-4.8 5.5-10.8-1.6-10.3-7-5.8 4.9-8.7 16-18 14.4-4.5-3.6-7.8-11.2-11.2-2.5-2.7 4.2-10 10.2-13.9 3.8-1.2-5.6-4-12.2-7-3.3-2.2 6.4-9 11-15.4 8.2-3.6-2.9 2.8-13.7-1.7-13-6.8 4.6-10.8 15.7-20.3 14.8-3.7-4 2.3-11.1-1.8-15.7-4.7 6.1-10 15.1-18.3 15.7-4-3.2.2-12.5-2.4-13.8-8.4 5-17.4 14.1-28 11.3 4.1-16 21.5-21.5 36-22.7 25.1-3.1 51.5 2.6 75.7-6.5 3.9-2.4 13.3-5.7 10-11.2-3-4.4 7.7-2.7 8.7-7.8-.6-6.4 5-5.5 10.4-6 24.4-1.1 48.5 4 72.8 4.9 1.8 11.8-11.3 20.1-22 16.5-5 .8-12.5-11.6-11-2.6-1 4.8-.4 11-4.7 14.2m-207.4-24.2c5.6 5.1 9.6-1 14.9-3.3a197 197 0 0 0 48.3-27.3c9.2-7.6 17.2-17.5 29.6-20 24.2-7.3 49.9-6.4 74.1-13.2 18.5-25.2 49.8-34.3 76.1-48.8 5.9-1.8 8.2-6.7 10-12 10-15.9 23.7-29.9 39.9-39.5a37.2 37.2 0 0 1 25.4-4.6 42.4 42.4 0 0 1-13.7 26.5c5.9-.1 11-3.8 16.8-3.6 2 10.6-9.4 16.1-15.5 22.7 3.4.8 16.4 1.8 9.3 5.2-9 6.2-19.3 10.5-27.6 17.8 7.7 1.4 8.6 3 .8 5.8-4.3 2.8-12.4 3.8-13.2 9.4 5.8 3.6-2.6 7-5.9 8.2-6.2 1.5-12.8 4.2-4.5 9-3.1 4.7-9.9 5.7-15.4 5.2 1.7 5.4 4.1 11.4-2.8 13.8a107.7 107.7 0 0 1-53.6 22.4c24.5 1.8 49.8-2.7 70.7-16 2.8-3.3 17.3-6.9 9.2-9.6-3.8-1.6-12-3.4-12.6-6.3 11.4-7 25.7-4.5 37.9-8.6.3-4-9.3-2.9-12.9-3.8-8.5-.7-8-2.9.2-3.7 10.4-2.8 22.2-3.3 31-10-7.1-3.4-16.1-.5-23.7-3.2 12.9-5.6 28.1-6.2 39.7-14.7 5.3-5.9-6.8-4-10.3-3.9-7.1 1.3-10.4-2.2-2.3-5.1 13.9-10.3 31.4-16.9 41.2-31.7 2.3-3.3 5.4-13.3-2-9.8-9.6 3.3-18.1 14.1-29.2 10.8 21.8-16.9 42.4-36 57.3-59.3.8-6.8-9.8-7.5-12.5-2.2-14 13.4-26.6 29.3-44.5 37.8a280.6 280.6 0 0 0 43.6-56.4c2.7-6 9.8-13.3 6-20-6.3-5.2-14.1-.4-17.3 5.7-10.9 14.2-19.1 30.7-33 42.3 12.1-23.3 24.8-48.2 25-75 0-5.6-1-13.8-8.6-12.7-6 1-4.5 10-7 14.5-5.4 18.4-8 38.3-19 54.3 2.5-14.9 6.8-30.5 3.5-45.5-1.6-6.8-12.5-3.9-11 2.8-13 65.9-57.3 123.5-115 156.8-26.5 15-56 24.6-86.2 29-8 1.7-16.8.7-24.5 3.5-18.8 14.3-30.1 38.4-53.8 45.9-10.7 5.3-24.5 6.4-32.1 16.2a8.6 8.6 0 0 0-.8 4.2m51.7-10.3c-3.6.2-7.1.6-10.6 1.7-4.7.7-9.2 2.3-13.8 3l-1.9.4-3.1.3a10.9 10.9 0 0 1 0 5.1 6 6 0 0 1-1.4 2c-.6.8-1.3 1.4-2.2 1.8a7 7 0 0 1-2.6.7c-.9 0-1.8 0-2.7-.4-.9-.3-1.7-.8-2.5-1.5l-2.8.5h-2.6l-2.8-1a16.1 16.1 0 0 1-2.6-1.3c-3.4 2-7.2 3.9-9.3 7.4a11 11 0 0 0-1.6 5.3c-.2 2.4.4 4.8 1.4 7 .4.6.7-2.3 1.8-2.7 1.9-1.6 4.3-2.7 6.7-3.3 2-1 1.7 0 .9 1.6-.2.9-1.3 4 .2 2.4a65 65 0 0 1 21.6-4.1c10.6-1.1 21.2-1.4 31.8-1.5l30 .6c4.8.2 9.6 1.2 14.3.4 1.1-.3 2.9-.3 3.6-1-2.2-1.2-4.7-1.3-7-1.6h-19.1c-5.3-.5-10.8-.6-15.8-2.6-1.4-.5-2.6-1.8-3.9-.4a24 24 0 0 1-5.9 1.3c-3.5.2-7-.5-10.2-1.8 2.3-3.2 5.1-6 7.7-9l-6.2-1.3c3.7-2.5 7-5.4 10.6-8z"/>
<circle cx="1020" cy="720.9" r="2.4"/>
<circle cx="1019.8" cy="720.5" r="1" stroke="#ffec2d" stroke-width=".4"/>
</g>
<g transform="scale(.512)">
<g id="f">
<g id="e">
<path d="M120 73s-9.6-8.2-12.9-4.1c-5.2 6.5 16.2 39 16.2 50.4 0 18.8-12.6 23.9-28 26.5-10.4 1.8-27.3-.7-27.3-.7 3.2-4.3 5.3-5.6 10.6-5.9-6-3-12-9.8-12-20.3 0-16.1 6.6-22.8 6.6-41C73.2 68 65 55 65 55c14.6 1.5 21.8 15 17.7 25.8a7 7 0 0 0 6.3-1.9c1 3-.6 6.5-2.9 9.5 1.8 1 3.2.4 6-.2-.2 3-2 6.4-6.6 9.5 13.2-3.4 21.2 5.7 21.2 15.3 0 7.3-5 12.5-10 12.5-1.6 0-4-.7-5.3-1.7-1 2-.4 4.7.5 6.7-3.6-1-6-3.2-4.3-7.7-2.8-.2-5-1.2-6.5-3 1.5-2 3.8-3 6.5-3-2-4.2.3-6.5 3.6-8.4 0 0-2.1 8.4 3.2 8.4 2.4 0 4.6-.7 4.6-4.3 0-3.1-2.7-7.4-9-7.1-6.2.3-11.3 4.3-11.3 14.3 0 9.2 7.5 13.8 17.3 14 8.8.4 15.5-4.4 15.5-13.5C111.5 108 94 80.4 94 69.6c0-8.1 7.2-12.7 14.4-12.7 9.2 0 17 9.2 17 9.2l-5.4 6.8z"/>
<path id="d" d="M122 292.1c0 20.3-18.2 30.7-32.5 30.7-19.2 0-29.5-11.5-29.5-26.6 0-8.5 1.6-13.9 5.5-22l44.2-91.7a27 27 0 0 0 2-12.2c0-8.2-8-14.9-16.3-15-7.6-.3-16 7-16 15.3 0 10.1 5.3 14.6 10.7 14.6 6.6 0 9.2-2.7 9.2-7.4 0-3.2-1.5-4.6-3.8-4.6-5.7 0-4 7.6-4 7.6a5.2 5.2 0 0 1-3.9-7 10.2 10.2 0 0 1-5.5-3.3c1.5-1.5 3.3-2.6 5.5-3-1.3-4.4.5-6.5 4.3-7.5a7.6 7.6 0 0 0-.5 4.8c6-1.8 15.3 1 15.3 11.4s-7.2 19.1-20.7 17c3.2 1.5 4.8 4.6 5.2 8.1-2.5-1-5.2-1-5.2-1 1.6 2.7 3.8 5 3.7 10.6-2.5-1.2-4.9-3.3-8-2 5 10-1.2 23.6-17 26.8 5.8-6.8 8.6-14 8.6-21.3 0-23.5-6.5-27.4-6.5-43.8a24 24 0 0 1 10.5-19.2v.3A14 14 0 0 1 68 145a62 62 0 0 1 34 .3 25 25 0 0 1 18 12 36 36 0 0 1 0 28.9c-6.3 13-35.7 75.6-44.9 95.2-2 4.2-3.1 8.6-3.1 13.4 0 12 11 16.2 17.2 16.2 7.5 0 15.2-5.7 15.2-12.8 0-4.5-2.5-7.3-6-7.3-8.5 0-8 7.2-6.3 11.8-5.3-2.4-8.3-6.6-7.5-11a14 14 0 0 1-8.4-4.8c2-2.6 4.6-4.6 8.4-4.7-1.7-6.9 3-9.8 7.5-11.4-1.4 5-2.4 10.9 6.3 10.9 6.3 0 11.2 1 14.1 5.2l.7-27c.4-8.1-10.8-8-18-5.5 2.7-9.3 8.2-14.4 21-13.1a10 10 0 0 1-6.4-9.8c0-7.6 6.2-16 10.2-18.5l2 79z"/>
<use xlink:href="#d" width="100%" height="100%" transform="matrix(1 0 0 -1 0 645)"/>
</g>
<use xlink:href="#e" width="100%" height="100%" transform="matrix(-1 0 0 1 240 0)"/>
</g>
<use xlink:href="#f" width="100%" height="100%" transform="matrix(1 0 0 -1 0 1000)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,23 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-kz" viewBox="0 0 512 512">
<g fill-rule="evenodd">
<path fill="#00abc2" d="M0 0h512v512H0z"/>
<g fill="#ffec2d">
<path d="M43 498c3.5 3.3 2.3 9 12 8.3 14.7 0 15.1-9 15.1-15.3 0-6.3-22-15-23-24.3s5.1-11.8 10.2-11.8c5 0 8.6 3 8.6 5.5s-2.5 3.3-6 3.3 1.5-1.8-1.6-3.3-5 2.2-5 4.5c0 2.2 7.6 2.9 12.6 1.3 1 5 1.6 5.3-5.6 13.8 5.1-3.3 5.6-4 11.2-2.2-5.6-4.8-1.4-14.6-1.2-17.1s-1-5.5-3.3-7c-4.1-3.6-13-3.8-18.3-1.4-7.8 3.4-8.2 13.6-6.1 17l21.5 22c1.5 2.6 2 9.8-7.1 10.2-9.7.7-13-12.4-14.7-16.8-2.3 4.8-4.8 18-14.5 17.2-9.1-.3-10.9-7.5-9.4-10.1l22.1-22.5c2-3.4 1.7-13.6-6-17-5.4-2.4-14.3-2.2-18.4 1.5-2.2 1.4-3.5 4.4-3.3 6.9s4.4 12.3-1.2 17c5.6-1.8 6-1 11.1 2.3-7-8.5-6.6-8.9-5.5-13.9 5 1.7 12.7 1 12.7-1.2 0-2.3-2-6-5.1-4.5-3 1.5 2 3.3-1.5 3.3-3.6 0-6.1-.7-6.1-3.3s3.5-5.5 8.6-5.5 11.2 2.6 10.1 11.8c-1 9.2-23.5 19.3-23.5 25.6 0 6.3 1.6 14 16.3 14 9.7.7 10.8-5 14.3-8.4z"/>
<path d="M41.8 366c3.5-3.4 6.3-13.5 16-12.7 14.7 0 20.3 8.1 20.3 14.4 0 6.3-30 57.7-31 67-1 9.2 5.1 11.8 10.2 11.8 5 0 8.6-3 8.6-5.6s-2.5-3.3-6-3.3 1.4 1.8-1.6 3.3-5-2.2-5-4.4c0-2.3 7.5-3 12.6-1.3 1-5 1.5-5.4-5.6-13.9 5.1 3.3 5.6 4 11.2 2.2-5.6 4.8-1.4 14.6-1.2 17.1s-1 5.5-3.4 7c-4 3.7-13 3.8-18.2 1.4-7.8-3.4-8.2-13.6-6.1-17l28.9-62.5c1.5-2.6-2.5-11-11.7-11.4-9.6-.8-13 9.3-14.6 13.7l13.1-1s.5 2 0 3.4c-6.8.4-13.1 1.7-13.1 1.7l-.5 6.6h6.5l-.6 3s-5.4-.4-6 0c-.5.4-1 6.7-1 6.7s-1 .3-2 .3c-1.2 0-2.2-.3-2.2-.3s-.5-6.3-1-6.7c-.5-.4-6 0-6 0l-.5-3h6.5l-.5-6.6s-6.4-1.3-13.2-1.7c-.5-1.3 0-3.3 0-3.3l13.2 1c-1.7-4.5-5-14.6-14.7-13.8-9.1.3-13.2 8.8-11.7 11.4l29 62.5c2 3.4 1.6 13.6-6.1 17-5.3 2.4-14.2 2.3-18.3-1.4-2.3-1.5-3.5-4.5-3.3-7s4.3-12.3-1.3-17c5.6 1.8 6.1 1 11.2-2.3-7 8.5-6.6 8.9-5.6 13.9 5.1-1.7 12.7-1 12.7 1.3 0 2.2-2 5.9-5 4.4-3.1-1.5 2-3.3-1.6-3.3-3.5 0-6 .7-6 3.3s3.5 5.6 8.6 5.6 11.1-2.6 10.1-11.9c-1-9.2-31-60.6-31-67 0-6.2 5.6-14.3 20.3-14.3 9.7-.8 13.1 9.3 16.6 12.7z"/>
<path d="M41.8 340.5c3.5 3.4 6.3 13.5 16 12.7 14.7 0 20.3-8.1 20.3-14.4 0-6.3-30-57.7-31-67-1-9.2 5.1-11.8 10.2-11.8 5 0 8.6 3 8.6 5.6s-2.5 3.3-6 3.3 1.5-1.8-1.6-3.3-5 2.2-5 4.4c0 2.3 7.5 3 12.6 1.3 1 5 1.5 5.4-5.6 13.9 5.1-3.3 5.6-4 11.2-2.2-5.6-4.8-1.4-14.6-1.2-17.1s-1-5.5-3.4-7c-4-3.7-13-3.8-18.2-1.4-7.8 3.4-8.2 13.6-6.1 17L71.5 337c1.5 2.6-2.5 11-11.7 11.4-9.6.8-13-9.3-14.6-13.7l13.1 1s.5-2 0-3.4c-6.8-.5-13.1-1.7-13.1-1.7l-.5-6.6H51l-.5-3s-5.4.4-6 0c-.4-.4-1-6.7-1-6.7s-1-.3-2-.3c-1.2 0-2.2.3-2.2.3s-.5 6.3-1 6.7c-.5.4-6 0-6 0l-.5 3h6.5l-.5 6.6s-6.4 1.2-13.2 1.7c-.5 1.3 0 3.3 0 3.3l13.2-1c-1.7 4.5-5 14.6-14.7 13.8-9.1-.3-13.2-8.8-11.6-11.4l28.9-62.5c2-3.4 1.6-13.6-6.1-17-5.3-2.4-14.2-2.3-18.3 1.4-2.3 1.5-3.5 4.5-3.3 7s4.3 12.3-1.3 17c5.6-1.8 6.1-1 11.2 2.3-7.1-8.5-6.6-8.9-5.6-13.9 5.1 1.7 12.7 1 12.7-1.3s-2-5.9-5-4.4 2 3.3-1.6 3.3c-3.5 0-6-.7-6-3.3s3.5-5.5 8.6-5.5 11.1 2.5 10.1 11.8c-1 9.2-31 60.6-31 67 0 6.2 5.6 14.3 20.3 14.3 9.7.8 13.1-9.3 16.6-12.7z"/>
<path d="M41.8 171.2c3.5-3.4 6.3-13.5 16-12.8 14.7 0 20.3 8.2 20.3 14.5 0 6.2-30 57.6-31 66.9-1 9.2 5.1 11.8 10.2 11.8 5 0 8.6-3 8.6-5.5s-2.5-3.4-6-3.4 1.4 1.9-1.6 3.4-5-2.2-5-4.5c0-2.2 7.5-3 12.6-1.3 1-5 1.5-5.3-5.6-13.8 5.1 3.3 5.6 4 11.2 2.2-5.6 4.8-1.4 14.6-1.2 17s-1 5.5-3.4 7c-4 3.7-13 3.9-18.2 1.5-7.8-3.5-8.2-13.7-6.1-17l28.9-62.5c1.5-2.6-2.5-11.1-11.7-11.5-9.6-.7-13 9.4-14.6 13.8l13.1-1s.5 2 0 3.4c-6.8.4-13.1 1.6-13.1 1.6l-.5 6.7h6.5l-.6 3s-5.4-.4-6 0c-.5.3-1 6.6-1 6.6s-1 .4-2 .4c-1.2 0-2.2-.4-2.2-.4s-.5-6.3-1-6.6c-.5-.4-6 0-6 0l-.5-3h6.5l-.5-6.7s-6.4-1.2-13.2-1.6c-.5-1.3 0-3.4 0-3.4l13.2 1c-1.7-4.4-5-14.5-14.7-13.8-9.1.4-13.2 8.9-11.7 11.5l29 62.5c2 3.3 1.6 13.5-6.1 17-5.3 2.4-14.2 2.2-18.3-1.5-2.3-1.4-3.5-4.4-3.3-7s4.3-12.2-1.3-17c5.6 1.8 6.1 1.1 11.2-2.2-7 8.5-6.6 8.9-5.6 13.8 5.1-1.6 12.7-.9 12.7 1.3s-2 6-5 4.5c-3.1-1.5 2-3.4-1.6-3.4-3.5 0-6 .8-6 3.4s3.5 5.5 8.6 5.5 11.1-2.6 10.1-11.8c-1-9.3-31-60.7-31-67 0-6.2 5.6-14.4 20.3-14.4 9.7-.7 13.1 9.4 16.6 12.8z"/>
<path d="M41.8 145.7c3.5 3.4 6.3 13.4 16 12.7 14.7 0 20.3-8.1 20.3-14.4 0-6.3-30-57.7-31-67-1-9.2 5.1-11.8 10.2-11.8 5 0 8.6 3 8.6 5.5s-2.5 3.4-6 3.4 1.5-1.9-1.6-3.4-5 2.3-5 4.5 7.5 3 12.6 1.3c1 5 1.5 5.3-5.6 13.8 5.1-3.3 5.6-4 11.2-2.2-5.6-4.8-1.4-14.6-1.2-17s-1-5.5-3.4-7c-4-3.7-13-3.9-18.2-1.5-7.8 3.5-8.2 13.7-6.1 17l28.9 62.5c1.5 2.6-2.5 11.1-11.7 11.5-9.6.7-13-9.4-14.6-13.8l13.1 1s.5-2 0-3.4a117 117 0 0 1-13.1-1.6l-.5-6.7H51l-.5-3s-5.4.4-6 0c-.4-.3-1-6.6-1-6.6s-1-.4-2-.4c-1.2 0-2.2.4-2.2.4s-.5 6.3-1 6.7c-.5.3-6 0-6 0l-.5 3h6.5l-.5 6.6s-6.4 1.2-13.2 1.6a7 7 0 0 0 0 3.4l13.2-1c-1.7 4.4-5 14.5-14.7 13.8-9.1-.4-13.2-8.9-11.6-11.5l28.9-62.5c2-3.3 1.6-13.5-6.1-17-5.3-2.4-14.2-2.2-18.3 1.5-2.3 1.5-3.5 4.4-3.3 7s4.3 12.2-1.3 17c5.6-1.8 6.1-1 11.2 2.2-7.1-8.5-6.6-8.8-5.6-13.8 5.1 1.6 12.7 1 12.7-1.3s-2-6-5-4.5 2 3.4-1.6 3.4c-3.5 0-6-.8-6-3.4s3.5-5.5 8.6-5.5S36.9 67.8 35.9 77c-1 9.3-31 60.7-31 67 0 6.3 5.6 14.4 20.3 14.4 9.7.7 13.1-9.3 16.6-12.7z"/>
<path d="M43 13.7c3.5-3.4 2.3-9 12-8.4 14.7 0 15.1 9 15.1 15.3 0 6.3-22 15.1-23 24.3-1 9.3 5.1 11.9 10.2 11.9 5 0 8.6-3 8.6-5.6S63.4 48 60 48s1.5 1.9-1.6 3.3-5-2.2-5-4.4 7.6-3 12.6-1.3c1-5 1.6-5.4-5.6-13.9 5 3.3 5.6 4 11.1 2.3-5.6 4.8-1.4 14.6-1.2 17s-1 5.5-3.3 7c-4.1 3.7-13 3.9-18.3 1.5-7.8-3.5-8.2-13.7-6.1-17l21.5-22c1.5-2.7 2-9.9-7.1-10.3-9.7-.7-13 12.5-14.7 16.8C40 22.2 37.5 9 27.8 9.7c-9.1.4-10.9 7.6-9.4 10.2l22.1 22.5c2 3.3 1.7 13.5-6 17-5.4 2.4-14.3 2.2-18.4-1.5-2.2-1.5-3.5-4.4-3.3-7s4.4-12.2-1.2-17c5.6 1.8 6 1 11.1-2.3-7 8.5-6.6 9-5.5 13.9 5-1.7 12.7-1 12.7 1.3 0 2.2-2 6-5.1 4.4-3-1.4 2-3.3-1.5-3.3-3.6 0-6.1.8-6.1 3.3s3.5 5.6 8.6 5.6S37 54.2 35.9 44.9c-1-9.2-23.5-19.3-23.5-25.6 0-6.3 1.6-14 16.3-14 9.7-.7 10.8 5 14.3 8.4z"/>
</g>
<g fill="#ffec2d" transform="translate(-220 40)">
<rect width="170.2" height="161.3" x="425.9" y="104.5" rx="85.1" ry="80.7"/>
<path d="M507 56.4c-.8 0-4.6 26.8-6 32.8-1.4 13.5 18 13 14.8-.5L507 56.3zm6.8 259.8c.7 0 6.5-26.5 8.4-32.4 2.3-13.3-17.1-14-15-.4l6.6 32.8zM378.2 184.6c0 .7 27.9 6.3 34.1 8.1 14 2.3 15-16 .6-14l-34.7 6zm271.7 3.2c0-.7-28.2-5.3-34.5-6.9-14.1-1.7-14.2 16.6 0 14.1l34.5-7.2zM406.8 99.6c-.5.5 17.9 21.3 21.6 26.4 9.6 10 22.3-4 9.6-10.8l-31.2-15.5zm211.1 171c.5-.5-19.7-19.7-23.9-24.4-10.5-9.2-21.8 5.7-8.6 11.5l32.5 13zm-169-200c-.6.3 8 26.1 9.4 32.2 4.8 12.7 22.2 4.4 13.2-6.5L449 70.6zM572 303c.7-.3-6-26.6-6.9-32.7-3.9-13-21.8-6-13.7 5.6l20.7 27zm30.3-214.4c-.6-.5-22.8 16.6-28.2 20-10.7 9 3.8 21.2 11.2 9.3l17-29.3zm-183 193.7c.5.5 24-15 29.6-18.1 11.3-8.2-2.2-21.4-10.5-10l-19 28.1zm-35-144.1c-.3.6 24 14.7 29.3 18.4 12.5 6.5 19.8-10.5 5.5-13.2l-34.8-5.2zM638 236.6c.3-.6-23-16.3-28-20.3-12-7.4-20.5 9.1-6.4 12.7l34.4 7.6zM557.4 63.7c-.7-.2-14.6 23.4-18.3 28.5a7.8 7.8 0 0 0 14 4.7l4.3-33.2zM463.5 308c.7.3 16.3-22.4 20.3-27.3 7.3-11.6-10.4-19-13.7-5.6l-6.6 32.9zM386 238.7c.3.6 28-6 34.5-7 13.6-3.8 6-20.6-6-12.8L386 238.7zM638.1 136c-.2-.6-28.3 4.1-34.8 4.7-14 2.9-7.5 20.2 5 13.2l29.8-17.9z"/>
<path d="M534.6 58.1c-.7-.1-10.1 25.4-12.9 31-4.1 13 15 16.2 14.7 2.4L534.7 58zM486.1 314c.7.2 12-24.7 15.2-30.2 5-12.6-13.8-17-14.5-3.3L486 314zm-9.7-253.4c-.7.2 1.9 27.2 1.9 33.4 1.9 13.3 20.6 8.7 14.4-3.7l-16.3-29.7zm68 251.9c.7-.1 0-27.2.5-33.4-.9-13.5-20-10.1-14.6 2.7l14 30.7zM428.2 83c-.6.4 12.7 24.3 15.2 30 7.2 11.7 22.7.7 11.8-8.6l-27-21.4zM593 290.9c.6-.4-11-25.2-13-31-6.3-12.1-22.5-2.1-12.4 7.8l25.4 23.2zM393 116.6c-.4.6 21.1 18.4 25.6 23 11.1 8.4 21.4-7.2 7.8-12.1L393 116.6zm234.2 139.7c.4-.6-19.7-19.8-23.9-24.6-10.4-9.1-21.8 5.8-8.6 11.6l32.5 13zm-249.6-97.8c-.2.7 26.3 10.8 32.1 13.7 13.4 4.5 17.7-13.4 3.1-13.8l-35.2.1zM645 216.3c.3-.6-25.4-12.4-31-15.7-13-5.4-18.7 12.2-4.2 13.6l35.2 2.1zM376.7 210c.1.6 28.7.2 35.2.7 14.2-.7 10.8-18.8-2.8-13.9L376.7 210zm270.2-45c0-.7-28.6-2.2-35-3.1-14.3-.2-12.2 18.1 1.7 14l33.3-11zm-245.7 98.4c.4.6 26-11.6 32-13.9 12.4-6.5 1-21.4-8.9-11.3l-23.1 25.2zm222.3-152.3c-.4-.6-26.7 9.9-33 11.8-12.9 5.7-2.6 21.3 8 11.9l25-23.7zM442.8 298.8c.6.3 18.9-20.5 23.5-24.9 8.7-10.7-8-20-12.9-7l-10.6 31.9zM582.5 75c-.5-.4-20.3 19.1-25.2 23.2-9.4 10.1 6.6 20.5 12.4 7.9L582.4 75z"/>
<g transform="matrix(2.1824 0 0 2.0629 -405 -272.6)">
<path d="M360.1 247.9c.7 2.5.8 16.5 14.9 30 14 13.4 38 16.4 38 16.4s.1 1.9-1.6 2c-1.7.2-9.9-1.5-14-2.8-4-1.2-7.6-3.4-8-3.3-.5.2-1.3 1.6-2.5 1.4s-7-6.2-9.6-7.8a80.6 80.6 0 0 1-13.7-15.3c-2.8-4.5-3.5-7.5-4.4-7.5s-4.2 2.2-4.2 2.2-3-4.5-5.6-11.7c-2.7-7.2-2.4-11.4-1.8-11.7.7-.3.7 5.3 2.7 10.4 2 5.2 4.8 6.8 4.8 6.8s-1.8-2.7-3.2-9.4-2-13.2-1-15.2 1.9-2.6 2-2.5c.2.2-1.7 3.1-.4 10.8s4.8 14.2 5.6 13.9c.8-.3-.5-1.9-1-6.4s.5-7.3 1.6-7.7c.5-.4 1.3 5 1.4 7.4zm-9.8 12.8c-2.7-2.5-6.9-11.2-7.8-10.8-1 .5 6.8 13 7 14 .2 1.2 1.9 4.6.6 4.1s-10.6-10.3-9.5-8.4 8.1 10.5 7.7 11-5.8-4.8-6-4.1c-.1.6 5.3 5.8 5.2 6.4s-3.5-3.3-3.5-2.5 3.5 4.7 3.5 5.3-3-2.8-2-1c.9 2 3.5 3.7 3.4 4.3s-2.2-.8-2.2-.5c0 .3 3.9 1.7 4.8 2.8 1 1.1 7.4 8.5 12.2 12.2s18.6 10.2 19.6 10.2c.9 0 2.3-2 2-2.8-.3-.8-13.8-5.4-17.5-8.8-3.8-3.4-13-11.6-13.8-12-.7-.5-2.8-.3-2.8-.8s2.7.3 2.5 0c-.1-.3-3.7-1.9-3.6-2.2.2-.3 2.5.6 2.5.3s-4.2-2.6-4-3.1c.1-.5 3.1 1.4 3.1 1 0-.2-4-3-3.9-3.5.1-.5 3.1 2.2 3 1.6s-2.4-4-2.4-4.4c0-.5 3.6 3.4 4 2.6.2-.7-1.3-7.2-1.2-7.3s2.7 1.4 3.1.5c.5-1-1.8-2.3-4-4.1zm46.1 49.2c-1.9.3-2.8-.4-1.7-2 1.5 0 5.5-1.3 6.9-1.9s2.9-1.4 4.1-2.5c1.2-1.3 2 .7 1.3 1.8-.5.7-2.8 2-4.5 2.7-2.5.8-4.7 2-6.1 1.9zm12.5-5.1c-1.3-1.4-.2-2.4 1.7-3.5 2.8-1.5 2-3.6 5.6-5.3 1.6-1 24-10 31.3-14.8s27.8-20.3 33.3-31c5.4-10.6 2.8-11.4 3.6-11.8.7-.5 1.5 1.5 1.4 3.9-.2 2.3-2 9.3-1.4 10s8.2-5.5 11.4-13 5.6-15.3 7.1-15.3c1.6 0-2.6 12.8-5.3 17.8-2.6 5-5.7 7.5-5 8.6.8 1 8.6-5.5 11.3-10.3 2.6-4.9 5.1-9.2 5.6-8.3a34 34 0 0 1-6.7 16.1c-4.2 4.8-9.2 8.3-8.4 9 .7.8 6.4 1.6 12.3-2.4 6-4.1 6.6-10 7.3-9.7.8.3-.7 8.4-6.4 13.4s-13.2 5.5-13 6.6c.4 1 16.3-4.6 16-3.3-.3 1.2-20.6 9.2-20.8 10 0 .6 3.5.8 9-.5 5.4-1.2 10.6-5.5 11.3-4.5.2 1.4-3.9 4.8-10.1 6.4-6.3 1.6-9.4 3.7-9.6 4.2-.1.5 11.2-1.4 11.2-.8s-14.8 3.5-14.9 4.3c-.2.7 14-2.9 13.8-2-.4.7-19.3 6.3-19.1 6.6.1.4 15.8-3.4 15.5-2.8-.4.7-26.4 8-26.6 8.5-.2.4 23-5.2 22.8-4.7s-12 3.4-12 3.7c0 .3 9.5-1.5 9.3-1-.1.4-24 6.5-24.5 7.4-.5 1 12.4-2.5 12.2-.7s-27.7 11-27.8 9.3c-.2-1.7 16.7-6 16.6-6.5-.2-.5-9.7 1-9.9.1-.1-1 6.3-3 5.8-3.4-.5-.5-5.3 1.4-4.9.3.5-1.1 9.6-5.3 9.4-5.6-.1-.3-3.3 1-3 0 .4-1.1 19.7-6.7 19.4-7.4-.3-.6-8.9 1.4-9.7 1.6-.3-.6 12-5.2 11.8-6-.4-.7-6.6 2.7-7 1.8-.2-1 10.9-5.3 10.2-6s-5.7 1.8-6.4 1.1 10.5-8.4 8.8-8.6c-1.7-.1-3.8 2.4-4 .8.2-2 8.7-5.3 6.8-6.9-3-.9-13.1.7-17.3 3.2s-18.2 16.4-21.6 18.6c-3.4 2.1-15 7-17.2 8-3.4 1.2-4 3-7.5 4.8-6.3 1.7-6.2 3.6-9.2 4.7-1.1.3-12.4 5.7-12.5 5.3zm-15.8 7c-1.9 1-3.6 3.4-2.5 4.4.6 1.2 2.5-2.7 4-2.5l8 .4c4.3.3 6.4-.9 8.8-.7s7.7-1.3 10.2-1.3 3 .3 3.2-.8c.3-1-7.8-.3-11.4-.4-3.6-.2-8.1.7-10.8.7-2.5-.1-6.8-.9-9.5.2z"/>
<rect width="3.4" height="3" x="401.7" y="309.1" rx="1.7" ry="1.5"/>
<path d="M445 307.7c1.7-.3 6.3 1.3 9.5 2 5.8 2.3 16.6 1.2 16.6 2.3s-.7 2.4-3.2 2.6-8.8-1-8.6-1 5 2.3 3.6 2.9-5.5-1.3-6.2-.8 3.8 1.4 3 1.7c-.6.3-3.7-.4-4.7-.3-1 .2.8 1.3-.4 1.7-1.2.5-3.2-.6-4-.3-.9.3 1.8 2 .6 2.2-1.2.2-4-.8-5.6-1-1.6 0 1.5 1.6.5 1.8-1 .1-3.8-1.3-4.5-1.3s0 2-1 2-2.2-1.7-2.8-1.7 0 2-1 2-1.4-2.1-2.2-2c-1 .2 0 2.7-1.4 2.5-1.3-.1-1.5-2.6-2.6-2.5-1 .2.2 2.5-.8 2.5s-1.2-2.3-2.2-2.5c-1-.1-.6 2.2-1.2 2.2s-1.2-2.2-1.6-2.2c-.3 0 0 2.2-1.2 2s-1.2-2.4-1.5-2.3c-.4.2-.4 1.8-1.2 1.8s-.9-1.6-1.2-1.4c-.4.1-1.6 2.1-2.4 1.8-.9-.3.2-1.9-.2-1.9s-1.4 1.1-2 1 0-1.4-.2-1.4-1.7.8-2.4.8-2.6 1-3.1.1c-.5-1 1.3-1 1.7-1.9.3-.9-1-3.6.4-4.5 1.3-1 5.6 1.3 12-.3 11.6-3.1 20.6-6.7 21.5-6.6z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-mf" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-mf" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-mq" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#00267f" d="M0 0h213.3v480H0z"/>
<path fill="#f31830" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-mq" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#00267f" d="M0 0h170.7v512H0z"/>
<path fill="#f31830" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -0,0 +1,26 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-my" viewBox="0 0 640 480">
<g clip-path="url(#a)">
<path fill="#C00" d="M0 0h640v480H0V0Z"/>
<path fill="#C00" d="M0 0h640v34.3H0z"/>
<path fill="#fff" d="M0 34.3h640v34.3H0z"/>
<path fill="#C00" d="M0 68.6h640v34.3H0z"/>
<path fill="#fff" d="M0 102.9h640V137H0z"/>
<path fill="#C00" d="M0 137.1h640v34.3H0z"/>
<path fill="#fff" d="M0 171.4h640v34.3H0z"/>
<path fill="#C00" d="M0 205.7h640V240H0z"/>
<path fill="#fff" d="M0 240h640v34.3H0z"/>
<path fill="#C00" d="M0 274.3h640v34.3H0z"/>
<path fill="#fff" d="M0 308.6h640v34.3H0z"/>
<path fill="#C00" d="M0 342.9h640V377H0z"/>
<path fill="#fff" d="M0 377.1h640v34.3H0z"/>
<path fill="#C00" d="M0 411.4h640v34.3H0z"/>
<path fill="#fff" d="M0 445.7h640V480H0z"/>
<path fill="#006" d="M0 .5h320v274.3H0V.5Z"/>
<path fill="#FC0" d="m207.5 73.8 6 40.7 23-34-12.4 39.2 35.5-20.8-28.1 30 41-3.2-38.3 14.8 38.3 14.8-41-3.2 28.1 30-35.5-20.8 12.3 39.3-23-34.1-6 40.7-5.9-40.7-23 34 12.4-39.2-35.5 20.8 28-30-41 3.2 38.4-14.8-38.3-14.8 41 3.2-28.1-30 35.5 20.8-12.4-39.3 23 34.1 6-40.7Zm-33.3 1.7a71.1 71.1 0 0 0-100 65 71.1 71.1 0 0 0 100 65 80 80 0 0 1-83.2 6.2 80 80 0 0 1-43.4-71.2 80 80 0 0 1 126.6-65Z"/>
</g>
<defs>
<clipPath id="a">
<path fill="#fff" d="M0 0h640v480H0z"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-my" viewBox="0 0 512 512">
<path fill="#c00" d="M0 0h512v512H0z"/>
<path fill="#fff" d="M.4 42.5h511.2v41H.4zM.4 126.5h511.2v41H.4zM.4 210.6h511.2v41H.4z"/>
<path fill="#006" d="M0 0h256v298.7H0Z"/>
<path fill="#fc0" d="m172.5 86.8 5.6 38.2 21.6-32-11.6 36.8 33.3-19.4-26.4 28.1 38.5-3-36 13.8 36 14-38.5-3.1 26.4 28L188 169l11.6 36.7-21.6-31.9-5.6 38.1-5.6-38-21.5 31.8 11.5-36.7-33.2 19.4 26.3-28.1-38.4 3 36-13.9-36-13.9 38.4 3.1-26.3-28.1 33.2 19.4L145.4 93l21.5 32zm-31.2 1.6a66.7 66.7 0 1 0 0 121.9 75 75 0 1 1 0-121.9z"/>
<path fill="#fff" d="M.4 294.6h511.2v41H.4zM.4 378.1h511.2v41H.4zM0 471h511.2v41H0z"/>
</svg>

Before

Width:  |  Height:  |  Size: 688 B

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-my" viewBox="0 0 512 512">
<path fill="#C00" d="M0 0h512v36.6H0z"/>
<path fill="#fff" d="M0 36.6h512V73H0z"/>
<path fill="#C00" d="M0 73.1h512v36.6H0z"/>
<path fill="#fff" d="M0 109.7h512v36.6H0z"/>
<path fill="#C00" d="M0 146.3h512v36.6H0z"/>
<path fill="#fff" d="M0 182.9h512v36.5H0z"/>
<path fill="#C00" d="M0 219.4h512V256H0z"/>
<path fill="#fff" d="M0 256h512v36.6H0z"/>
<path fill="#C00" d="M0 292.6h512V329H0z"/>
<path fill="#fff" d="M0 329.1h512v36.6H0z"/>
<path fill="#C00" d="M0 365.7h512v36.6H0z"/>
<path fill="#fff" d="M0 402.3h512v36.6H0z"/>
<path fill="#C00" d="M0 438.9h512v36.5H0z"/>
<path fill="#fff" d="M0 475.4h512V512H0z"/>
<path fill="#006" d="M0 0h256v292.6H0V0Z"/>
<path fill="#FC0" d="m166 93 4.8 32.5 18.4-27.2-10 31.3 28.5-16.6-22.5 24 32.8-2.6-30.7 11.9L218 158l-32.8-2.5 22.5 24-28.4-16.7 9.8 31.5-18.4-27.3-4.8 32.5-4.7-32.5-18.4 27.2 9.9-31.4-28.4 16.7 22.4-24-32.8 2.5 30.7-11.8-30.6-11.9 32.8 2.6-22.5-24 28.4 16.6-10-31.4 18.5 27.3 4.8-32.6Zm-26.7 1.3a56.9 56.9 0 0 0-73 24.9 56.9 56.9 0 0 0 45.5 83.8 56.9 56.9 0 0 0 27.5-4.7 64 64 0 1 1 0-104Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-my" viewBox="0 0 640 480">
<path fill="#c00" d="M0 0h640v480H0z"/>
<path fill="#fff" d="M.5 39.9h639v38.4H.5zM.5 118.6h639V157H.5zM.5 197.4h639v38.4H.5z"/>
<path fill="#006" d="M0 .5h320v280H0Z"/>
<path fill="#fc0" d="m207.5 73.8 6 40.7 23-34-12.4 39.2 35.5-20.8-28.1 30 41-3.2-38.3 14.8 38.3 14.8-41-3.2 28.1 30-35.5-20.8 12.3 39.3-23-34.1-6 40.7-5.9-40.7-23 34 12.4-39.2-35.5 20.8 28-30-41 3.2 38.4-14.8-38.3-14.8 41 3.2-28.1-30 35.5 20.8-12.4-39.3 23 34.1zm-33.3 1.7a71.1 71.1 0 1 0 0 130 80 80 0 1 1 0-130z"/>
<path fill="#fff" d="M.5 276.2h639v38.4H.5zM.5 354.4h639v38.4H.5zM0 441.6h639V480H0z"/>
</svg>

Before

Width:  |  Height:  |  Size: 674 B

View File

@ -8,7 +8,6 @@
</clipPath>
</defs>
<g clip-path="url(#a)">
<path fill="#fff" d="M0 0h512v512H0z" style="width:0"/>
<g clip-path="url(#b)" transform="translate(0 16)">
<g fill-rule="evenodd">
<path fill="#ce0000" stroke="#000063" stroke-width="13" d="M6.5 489.5h378.8L137.4 238.1l257.3.3L6.6-9.5v499z"/>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -4,7 +4,6 @@
<path fill-opacity=".7" d="M0-16h512v512H0z"/>
</clipPath>
</defs>
<path fill="#fff" d="M0 0h640v480H0z"/>
<g clip-path="url(#a)" transform="translate(0 15) scale(.9375)">
<g fill-rule="evenodd">
<path fill="#ce0000" stroke="#000063" stroke-width="13.8" d="M6.5 489.5h378.8L137.4 238.1l257.3.3L6.6-9.5v499z"/>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1011 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-pm" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-pm" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-re" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#00267f" d="M0 0h213.3v480H0z"/>
<path fill="#f31830" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -5,7 +5,7 @@
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(80) scale(.9375)">
<path fill="#199d00" d="M-128 0h768v512h-768z"/>
<path fill="#165d31" d="M-128 0h768v512h-768z"/>
<path fill="#fff" d="M65.5 145.1c-.8 12-2 33 8.3 35.2 12.3 1.2 5.5-20.8 10-24.8.8-2 2.3-2 2.4.5v18.7c0 6 4 7.8 7 9 3.2-.2 5.4 0 6.6 3l1.6 32.3s7.4 2.2 7.8-18.1c.3-12-2.4-21.9-.8-24.2 0-2.3 3-2.4 5-1.3 3.2 2.2 4.6 5 9.6 4 7.6-2.2 12.2-5.9 12.3-11.7a47 47 0 0 0-3.5-16.6c.4-1-1.4-3.7-1-4.7 1.3 2.2 3.4 2 3.8 0-1.3-4.2-3.3-8.3-6.5-10-2.7-2.4-6.7-2-8 3-.8 5.7 2 12.4 6.1 18 .9 2.1 2.1 5.7 1.6 8.9-2.2 1.3-4.4.7-6.3-1.2 0 0-6-4.5-6-5.6 1.6-10.2.3-11.4-.6-14.3-.6-3.9-2.5-5.2-4-7.8-1.5-1.6-3.5-1.6-4.5 0-2.7 4.6-1.4 14.5.5 19 1.4 4.1 3.5 6.7 2.5 6.7-.8 2.3-2.5 1.7-3.8-1a66.6 66.6 0 0 1-2.1-17.4c-.5-4.6-1.1-14.4-4.2-17-1.8-2.4-4.5-1.2-5.5 1a82.4 82.4 0 0 0 .3 13.4c2 7.4 2.7 14 3.7 21.5.3 10.1-5.8 4.4-5.5-.7a45 45 0 0 0-.3-19.4c-1-2.6-2.1-3.2-4.6-2.8-1.9 0-6.8 5.3-8.2 14.3 0 0-1.2 4.6-1.7 8.7-.7 4.6-3.7 8-5.9-.6-1.8-6.3-3-21.6-6-18z"/>
<path fill="#fff" d="m99 194.2-32 15.4c.3-7.3 15.1-20.4 25.3-20.5 6.5.1 4.9 2.5 6.6 5.1z"/>
<path fill="#fff" d="M93.3 204.2c-16.8 43.5 39.5 49.6 45.8 1.8.6-2 3-3.9 3.4-.7-1.3 43.3-43.6 46.2-50.8 32.6a41.9 41.9 0 0 1-2.5-14.6c-1-8.5-5.5-5.2-6.2 3.2-.7 4.7-.5 6-.5 10.5 2.2 34.2 56.7 19.5 65.6-8.7 4.7-15.6-.8-27.1 1.7-27.1 5.4 5.8 13 .8 14.7-1.2.7-1 2.5-1.7 3.7-.4 4.2 3 11.6 1.6 13.2-3.7.9-5.3 1.6-10.7 1.8-16.2-3.5 1-6 1.7-6.3 3.2l-.7 4.6c-.3 1.5-3.2 1.5-3.4-.4-1.3-6-6.7-6.7-10 2.5-2.1 1.8-6.1 2.2-6.5-.5.5-6.2-2-7-7-4.1l-4.8-36.2c2 0 4 1.5 5.9-.9-2-6.5-6.5-19.7-9-20.7-1.1-1.4-2.1-.5-3.7-.1-2.6.8-5 3-4.2 7.4 3 18.8 5 33.1 8.1 52 .5 2.1-1.3 5-3.7 4.7-4-2.7-5-8.2-12-8-5 0-10.6 5.5-11.3 10.7-.9 4.2-1.2 8.7 0 12.3 3.5 4.2 7.7 3.8 11.4 2.9 3-1.3 5.5-4.3 6.6-3.6.7.9.1 10.9-14.3 18.5-8.7 4-15.7 4.8-19.4-2.3-2.3-4.5.2-21.4-5.6-17.5z"/>
@ -13,14 +13,14 @@
<path fill="#fff" d="M299.6 251.5c-1.2 1.3 2.8 6.8 8 6.8 8.6-1 16.2-5.8 23.2-18.6a33 33 0 0 0 5.3-14.2 317 317 0 0 0-5.8-72.4c-.3-2 0-4.4.2-5 .6-.7 2.5 0 3.5-1.7 1.5-1.5-4-14-7-18.7-1-2.2-1.5-3.6-3.3.2a27 27 0 0 0-3 13.6c4.1 28.5 5.4 53.4 8 81.9.3 2.8-.1 6.8-2 8.4a80.2 80.2 0 0 1-27.1 19.7zm116.5-.1c-6.2 3.6-6.2 7.7-1.2 7.8 8.6-1 18.8-1.7 25.8-12.3a41 41 0 0 0 4.2-16 303 303 0 0 0-4.7-71.4c-.2-2-1.1-6.7-.8-7.3.6-1.4 3.4.1 4.4-1.5 1.4-1.5-7.3-12.7-10.4-17.5-1-2.2-1.4-3.6-3.3.2a22.3 22.3 0 0 0-1.8 13.6c4.6 31 8 54.2 8.7 81.6-.4 2.6-.5 4-1.7 7.3-2.7 3.4-5.7 7.8-8.5 9.9-2.8 2-8.8 4-10.7 5.6z"/>
<path fill="#fff" d="M420.7 223.7c0-7.3.1-13.5-.1-19a34 34 0 0 0-3-13.5c-1.8-4.1-.7-7.4-1.6-11.8-.8-4.4-.6-11-1.8-16.1-.4-2-1.4-8.5-1.1-9.2.5-1.4 2.4 0 3.4-1.6 1.4-1.5-5-18-8.2-22.7-1.1-2.1-3.3-1.4-5.8 2-2.5 2.3-1.6 7.4-.6 12.3 6.1 32.3 10.8 61.6 9.8 92.3-.4 2.6 9-7.8 9-12.7zm-45.7-40c-3.9-.2-12-7.7-14.4-12a8 8 0 0 1 .4-6.5c1.5-1 3.7-2 5.4-1 0 0 1.7 2.4 1.4 2.7 2 1 3 .5 3.2-.4.1-1.5-.6-2.4-.6-4 .9-4.6 6-5.3 8-2.4 1.4 1.8 2 5.5 2.1 8 0 1.3-2-.2-3.3 0-1.1.4-1.4 1.8-1.5 3-.2 3.3-.6 8.6-.7 12.5zm-71.8 48c1-9.8-.4-27.3-.5-33.1A477 477 0 0 0 299 154c-1.2-8.4 3.4.9 2.8-4-1.5-8.3-6.1-14-11.6-21.5-1.7-2.5-1.7-3-4.4.6-3 6.7-.4 11.4.4 16.7 3.9 17.2 6.2 33 7.3 48.7a393.4 393.4 0 0 1 .4 49c3 .1 7.6-4.7 9.3-11.8z"/>
<path fill="#fff" d="M434 216c-6.9-11.6-17.2-24-20-28.7a658 658 0 0 0-29.2-37.8c-8.5-9 4-1.5-1.6-8.5-4.7-5.1-6-6.8-10.1-9.9-2-1.3-3.2-3.8-4 .5a83 83 0 0 0-.2 11.2c0 1.7 1.8 5 3.4 7 20.7 25.5 43.4 51.5 61.6 84.2 2.6-1.3 1.7-16 0-18z"/>
<path fill="#1ba400" d="M122.6 194.7c-.5.9-1.6 2-1.2 3.1.7 1 1.4 1.3 2.6 1.3 1.1 0 2.7.3 3-.3.6-.7 1-2 .6-3.3-1.2-3-4.4-1.8-5-.8z"/>
<path fill="#165d31" d="M122.6 194.7c-.5.9-1.6 2-1.2 3.1.7 1 1.4 1.3 2.6 1.3 1.1 0 2.7.3 3-.3.6-.7 1-2 .6-3.3-1.2-3-4.4-1.8-5-.8z"/>
<path fill="#fff" d="M354.2 362.5c9.2.4 15.2.5 23.3 1.4l9.6-1c10.6-1 11 15.1 11 15.1 0 9.5-3.7 10-8.4 11-2.7.4-4-1.6-5.5-3.6a14 14 0 0 1-7 .4c-3.9-.2-7.7-.2-11.5-.5-4-.3-6.2.5-10.3.1-.8 1.3-2 3.1-4.4 2.6-2-.3-4.5-6-3.8-10.5 1.5-3.2 1-2.1 1-3.5-37.6-1-75.5-2.7-112.3-2.2-28.8.1-57.2 1.3-85.7 2.5-15.2-.2-26.8-2.6-34.8-14.3.8 0 38.8 2.1 49.9 1.4 20.5-.2 39.3-1.9 60.2-2.5 41.2.7 82.1.7 123.3 3.6-4-2.7-4-9 2-10.6.5-.4.8 3.1 1.7 3 4.9-.3 2.7 6.3 1.7 7.6zM188.6 135.3c-6.2 17.8 3.6 37.4 10.4 35.5 5 2 8-7.4 10-17.6 1.5-2.9 2.5-3.2 3.2-1.7-.2 13.6 1 16.7 4.5 20.8 7.8 6 14.3.8 14.8.3l6-6.1c1.4-1.5 3.2-1.5 5.1-.3 1.9 1.7 1.6 4.6 5.6 6.6 3.4 1.4 10.5.4 12.2-2.5 2.2-3.9 2.8-5.2 3.8-6.6 1.6-2.1 4.3-1.2 4.3-.5-.3 1.2-1.9 2.3-.8 4.5 2 1.4 2.4.5 3.5.2 4-2 7-10.6 7-10.6.1-3.2-1.7-3-2.9-2.2l-3.1 2.1c-2 .3-5.7 1.6-7.6-1.3-1.9-3.4-1.9-8.3-3.3-11.8 0-.2-2.6-5.5-.2-5.8 1.2.2 3.7.9 4.1-1.2 1.2-2.1-2.6-8-5.3-11-2.3-2.5-5.5-2.8-8.6-.2-2.2 2-1.9 4.2-2.3 6.3a9.8 9.8 0 0 0 2 8.7c2.2 4.2 6.1 9.7 4.8 17.5 0 0-2.3 3.6-6.3 3.1-1.7-.3-4.4-1-5.8-11.8-1.1-8 .2-19.4-3.2-24.7-1.3-3.3-2.2-6.4-5.2-.9-.8 2.2-4.3 5.5-1.8 12.2a36 36 0 0 1 2 19c-1.5 2.2-1.8 2.9-3.7 5-2.6 3-5.5 2.2-7.7 1.1-2-1.3-3.6-2-4.6-6.5.2-7 .6-18.5-.7-20.9-1.9-3.8-5-2.4-6.3-1.2a47.7 47.7 0 0 0-11.5 23.5c-1.8 5.8-3.7 4.1-5 1.8-3.2-3-3.5-26.7-7.4-22.8z"/>
<path fill="#fff" d="M207.4 174.1c2.9-2 1.6-3.4 5.8.8a72 72 0 0 1 9.2 31.3c-.2 2.6 1.6 4.2 2.5 3.6.4-6 15.1-14.4 28.6-15.6 2-.5 1-4.4 1.3-6.4-.8-7.5 4.2-14.3 11.2-14.8 9.6 1.4 12.8 6.5 13 14.2-1.1 15-16.7 17.5-25.4 18.7-1.3.5-1.9 1.1 0 1.8l36.6.2 1.9 1c.2 1-.6.2-2 2.6a29.5 29.5 0 0 0-3.7 11.5c-10.9 3.6-22.2 5-33.6 6.5-4 2-6 4.7-5.2 7.7 1.4 3.3 10.2 6.7 10.2 6.8 1.7 1 3.6 3.5-.5 8.6-17.8-.8-31.7-8.4-36.5-19.1-1.4-1.1-3 0-4 1.4-7 9-13.8 17-25.7 21.4-7 1.8-14.3-1.1-17.7-5.7-2.3-2.7-2.2-5.6-3-6.2-3.9 1.7-36.9 15.7-32.7 9.1 8-8.5 22-14.9 34.2-23.3.9-2.9 2.5-12.5 7.3-15.6.3 0-.7 5.6-.6 8 0 2-.2 2.7.2 2.2.9-.5 15.7-12.2 17-15.8 1.4-2 .3-7.2.3-7.4-2.8-7.2-6.7-7.8-8.1-11.4-1.3-4.7-.7-10.1 2-11.7 2.4-2.1 5.2-1.9 7.9.5 3 2.7 5.6 8 6.4 11.9-.5 1.5-4-1-5-.3a16 16 0 0 1 3.7 7.8c2 8.2 1.4 11.4-.6 16.7-6.6 13.9-15 18-22.4 23.2-.2 0-.3 3.5 2.4 5.4 1 1 4.9 1.5 9.4 0a54.5 54.5 0 0 0 22.3-23.3 51 51 0 0 0-2.4-22.2c-2.9-6.7-6.3-16.2-6.3-16.4-.1-4.2.2-5.6 2-7.7zm-95.8-38.6c4.2 2 12.2 1.1 11.8-5.7l-.2-3.1c-.8-2-3.2-1.5-3.7.5-.2.7.3 1.8-.3 2.1-.4.4-1.7.2-1.7-1.7 0-.6-.4-1.2-.7-1.6-.2-.2-.4-.2-.9-.2-.6 0-.6.1-.9.6-.1.5-.3 1-.3 1.6 0 .7-.4.9-.8 1-.6 0-.5 0-1-.2-.2-.3-.5-.4-.5-1l-.3-1.6c-.2-.3-.6-.5-1-.6-2.3 0-2.5 2.7-2.3 3.7-.2.2-.3 4.9 2.8 6.2z"/>
<path fill="#fff" d="M235.1 187.7c4.2 2 14.3.9 11.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.6-.2.6.3 1.7-.4 2-.3.4-1.7.2-1.6-1.6 0-.6-.4-1.3-.7-1.7-.3-.1-.4-.2-1-.2-.5 0-.5.2-.8.7-.2.5-.3 1-.3 1.6-.1.6-.4.8-.9 1-.5 0-.4 0-.8-.3-.3-.3-.6-.4-.6-.9l-.3-1.6c-.2-.3-.6-.5-1-.6-2.3 0-2.5 2.6-2.4 3.6-.1.2-.2 5 3 6.2zm72-21.6c4.2 2 12.1 1.1 11.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.5-.2.7.3 1.8-.4 2.2-.3.3-1.7.1-1.6-1.8 0-.6-.4-1.2-.7-1.6-.3-.2-.4-.2-1-.2-.5 0-.5.2-.8.7l-.3 1.5c-.1.7-.4 1-.9 1s-.4 0-.8-.2c-.3-.3-.6-.4-.6-.9s-.1-1.3-.3-1.7c-.2-.3-.6-.4-1-.5-2.3 0-2.5 2.6-2.4 3.6-.1.2-.2 4.9 3 6.2zm37.3 54.3c-7.3 8.3-4.1 22-2.4 25 2.4 4.8 4.3 7.9 9 10.3 4.3 3.1 7.7 1.2 9.5-1 4.3-4.5 4.4-16 6.4-18.2 1.4-4.2 5-3.5 6.7-1.6a16.5 16.5 0 0 0 6.2 5.3c4 3.5 8.8 4.2 13.6 1 3.2-1.9 5.3-4.2 7.2-8.9 2-5.6 1-31.6.5-47l-4.2-21.5c0-.2-.5-10.2-1-12.5 0-1-.3-1.3.7-1.2 1.1 1 1.2 1 2 1.3 1 .2 2-1.7 1.3-3.3l-10-18.6c-.8-.8-1.9-1.6-3.2.2a7.3 7.3 0 0 0-2.4 5.5c.3 4.4 1 8.9 1.3 13.3l4 22.6c1.3 16 1.6 29.2 2.9 45.3-.2 6.8-2.3 12.7-4.3 13.6 0 0-3 1.7-5-.2-1.5-.6-7.4-9.9-7.4-9.9-3-2.7-5-2-7.1 0-6 5.8-8.6 16.4-12.7 23.8-1 1.7-4 3-7.2-.1-8.2-11.3-3.4-27.3-4.4-23.2zM309 126.7c3.8 1.5 6.4 9.2 5.6 13-.8 4.5-2.8 9.5-4.2 8.9-1.6-.6 1-4.6-.5-8.8-.8-2.8-6-7.8-5.4-9.2-1-3.1 2.2-4.5 4.5-4z"/>
<path fill="#fff" d="M356.6 225c.7-9.2-.6-14.8-.8-20.2s-6.1-46.6-7.3-50.6c-1.5-7.8 5.7-1 4.9-5.6-2.5-5.6-8.6-13.9-10.5-18.8-1.2-2-.7-4-3.3-.5a42.3 42.3 0 0 0-2.3 19.2c6.2 32.3 12.5 59.1 11.5 89.8 3 0 6.3-6.7 7.8-13.3zm64.4-85.3c3.5 1.7 5.5 11.3 5.1 14-.7 5-2.5 10.4-3.8 9.7-1.5-.6.3-7.4-.4-9.5-.8-3-5.5-8.4-5-10-1-3.4 2-4.8 4.1-4.2zm-255.7 67.9c3.3 1.3 5.3 8.3 5 10.3-.8 3.7-2.5 7.7-3.8 7.1-1.3-.4.3-5.4-.3-7-.3-3.7-4.9-5.7-4.8-7.3-.8-3 2-3.5 4-3.1z"/>
<path fill="#1b9d00" d="M244.9 218.2c4.2.2 6.3 3.6 2.4 5-4 1.3-7.7 2.4-7.8 8 1.5 8-2 5.2-4 4.2-2.4-1.8-9.2-6-10.2-15-.1-2.1 1.6-4 4.3-4 4 1.1 10 1.2 15.3 1.8z"/>
<path fill="#165d31" d="M244.9 218.2c4.2.2 6.3 3.6 2.4 5-4 1.3-7.7 2.4-7.8 8 1.5 8-2 5.2-4 4.2-2.4-1.8-9.2-6-10.2-15-.1-2.1 1.6-4 4.3-4 4 1.1 10 1.2 15.3 1.8z"/>
<path fill="#fff" d="M77.4 124.4c4.8 1.4 5.1 8.6 4.8 10.7-.7 3.8-2.4 7.9-3.6 7.4-1.4-.5 0-5.7-.7-7.3-.7-2.2-4.8-6.4-4.4-7.6-.9-2.5 2-3.7 3.9-3.2zm95.9 33.6c-3.8 2-5.2 8-2.9 11.6 2.2 3 5.6 1.9 6 1.9 3.7.4 5.9-6.9 5.9-6.9s.1-2-4.2 1.9c-1.9.3-2-.4-2.5-1.4a9 9 0 0 1 .5-5.7c.7-1.8-.7-2.6-2.8-1.4zm28-36.4c-2 1.3-5.7 5.2-5.8 9.6-.1 2.5-.6 2.5 1 4 1.3 1.8 2.4 1.7 4.8.4a5.1 5.1 0 0 0 2.3-3.4c.6-2.8-3 1.4-3.4-1.8-.8-3 1.5-4.2 3.7-7 0-2 0-3.3-2.7-1.8zm22.4 4a59.5 59.5 0 0 0-1.6 11.1c-.6 2.8 3 4 4.5.4 2.4-6.5 2.4-9.3 2.6-12-.7-4.3-3.6-4.2-5.5.5zm142 72.3c.4-.5 20-14.4 20-14.4 2-.7 1.5 7.2.6 7.1a77.8 77.8 0 0 1-20.7 14.3c-1 .7-1.9-5.3 0-7zm17.7-.2c3.5 1.7 4.9 11.8 4.5 14.5 0 5.4-3.3 9.6-4.7 9-1.4-.7.2-6.7-.5-8.8-.8-3-3.7-8.5-3.2-10.1-1-3.4 1.8-5.2 4-4.6zm-116 43.4a26 26 0 0 1 5.6-4.9c2-1 3.8.8 3.7.7.3 2-1.2 3.7-.7 6.3.4 1 .7 2.2 2.6 1.8 3.1-2.5 6-2.7 9-2.8 2.5.1 2.6 4.2 1 4.2-5.7 1.2-8.2 2.8-12.3 4.3-2 1.2-3.6-.3-3.6-.4s-1.1-1.1-.4-3.7c.2-2-.6-3.2-2.4-3-1.2.8-2.4 1.2-3-.3-.3-1-.4-1.6.5-2.2zm136.6 5.4c.8 1 1.4 2-.1 3.8l-3.7 3.2c-.6 1-1 2.8 1 3.3 3.6 1 12-4.5 12-4.6 1.4-1 1-3 .8-3-.8-.9-2.6-.3-3.8-.5-.6 0-2.5-.2-1.6-2a11.4 11.4 0 0 0 1.6-2.9c.5-1.2 0-2-2-2.7-2.1-.4-3-.2-5.3 0-1.2.2-1.6.8-1.9 2.3.1 2.3 1.5 2.2 3 3z"/>
<path fill="#259f00" d="M268.1 189.7c-.5 1-2.3 1-4 0s-2.7-2.6-2.1-3.5 2.3-.9 4 0 2.6 2.6 2.1 3.5zm-89-53.6c-1 .3-2.4-.6-3-2s-.3-2.6.7-2.9 2.3.7 3 2 .3 2.7-.8 3z"/>
<path fill="#209000" d="M355.2 375c9.4.4 18.2 0 27.5.5 1.7 1.5.5 5-.6 4.8l-7.8-.3c-.1-3-7.7-2.5-7.5.1-4.1.5-7.8-.1-12-.3-1.2-1.5-1-4.2.4-4.8z"/>
<path fill="#165d31" d="M268.1 189.7c-.5 1-2.3 1-4 0s-2.7-2.6-2.1-3.5 2.3-.9 4 0 2.6 2.6 2.1 3.5zm-89-53.6c-1 .3-2.4-.6-3-2s-.3-2.6.7-2.9 2.3.7 3 2 .3 2.7-.8 3z"/>
<path fill="#165d31" d="M355.2 375c9.4.4 18.2 0 27.5.5 1.7 1.5.5 5-.6 4.8l-7.8-.3c-.1-3-7.7-2.5-7.5.1-4.1.5-7.8-.1-12-.3-1.2-1.5-1-4.2.4-4.8z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -5,7 +5,7 @@
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-128) scale(1.0321)">
<path fill="#199d00" d="M0 0h744v496H0z"/>
<path fill="#165d31" d="M0 0h744v496H0z"/>
<path fill="#fff" d="M187.5 140.6c-.8 11.6-1.9 32 8 34.1 11.9 1.1 5.3-20.2 9.6-24 .9-2 2.4-2 2.5.5v18c-.1 6 3.7 7.6 6.7 8.9 3.2-.3 5.2-.2 6.5 2.8l1.4 31.3s7.3 2 7.6-17.6c.4-11.5-2.3-21.2-.7-23.4 0-2.2 2.8-2.3 4.8-1.3 3.1 2.2 4.5 5 9.3 3.8 7.4-2 11.8-5.6 12-11.2a51 51 0 0 0-3.4-16.1c.3-1-1.5-3.5-1.1-4.5 1.3 2 3.3 1.9 3.8 0-1.3-4.2-3.2-8.1-6.4-9.8-2.6-2.3-6.4-1.8-7.8 3a26 26 0 0 0 6 17.3 17 17 0 0 1 1.5 8.7c-2.1 1.3-4.2.7-6-1.1 0 0-5.9-4.5-5.9-5.4 1.6-10 .4-11.1-.5-13.9-.6-3.8-2.4-5-3.9-7.6-1.5-1.6-3.4-1.6-4.4 0-2.6 4.5-1.4 14.1.5 18.4 1.4 4 3.4 6.5 2.4 6.5-.8 2.2-2.4 1.7-3.6-.9a61.2 61.2 0 0 1-2.1-16.9c-.5-4.5-1-14-4-16.4-1.8-2.4-4.5-1.2-5.4 1a80 80 0 0 0 .3 13c2 7 2.6 13.4 3.6 20.7.3 9.8-5.7 4.3-5.4-.6 1.4-6.3 1-16.3-.2-18.8-1-2.5-2.1-3.1-4.4-2.7-2-.2-6.7 5-8 13.8 0 0-1.2 4.5-1.7 8.4-.7 4.5-3.6 7.7-5.7-.6-1.8-6-2.9-20.9-5.9-17.4z"/>
<path fill="#fff" d="m219.9 188.2-31 14.9c.3-7 14.7-19.8 24.5-20 6.4.2 4.8 2.5 6.5 5z"/>
<path fill="#fff" d="M214.5 197.9c-16.4 42.1 38.2 48 44.3 1.7.6-1.9 3-3.8 3.3-.7-1.3 42-42.2 44.8-49.2 31.6-1.7-3-2.2-10-2.4-14.2-1-8.2-5.4-5-6 3.2-.7 4.5-.6 5.8-.6 10.2 2.2 33 55 18.8 63.6-8.5 4.5-15.1-.8-26.3 1.7-26.3 5.2 5.7 12.6.8 14.2-1.2.7-1 2.4-1.6 3.6-.3 4 3 11.3 1.5 12.8-3.6.8-5.1 1.5-10.3 1.7-15.7-3.3 1-5.8 1.7-6 3l-.7 4.6c-.3 1.4-3.2 1.5-3.3-.4-1.3-5.7-6.5-6.5-9.7 2.4-2.1 1.8-6 2-6.4-.5.5-6-1.9-6.8-6.7-4l-4.7-35c2 0 3.9 1.4 5.7-.9-2-6.3-6.3-19-8.6-20-1.2-1.4-2.1-.5-3.6-.2-2.6.8-5 3-4.2 7.3l8 50.2c.4 2.1-1.4 5-3.7 4.7-3.9-2.7-4.9-8-11.5-7.8-4.9 0-10.4 5.3-11 10.4-.9 4-1.2 8.4 0 11.9 3.3 4 7.4 3.7 11 2.7 2.9-1.2 5.3-4.1 6.4-3.4.7.9.1 10.5-13.9 18-8.4 3.8-15.2 4.6-18.8-2.3-2.2-4.3.2-20.7-5.3-17z"/>
@ -13,14 +13,14 @@
<path fill="#fff" d="M414.3 243.7c-1.1 1.3 2.7 6.6 7.7 6.6 8.4-1 15.7-5.7 22.5-18 1.8-3 5-9 5.1-13.9.7-28-1.4-49.8-5.6-70-.2-2 0-4.4.3-5 .5-.6 2.3 0 3.3-1.5 1.4-1.5-3.8-13.6-6.7-18.2-1.1-2.1-1.5-3.5-3.2.2-1.9 3-3 8.3-3 13.2 4 27.6 5.3 51.8 7.9 79.3.2 2.7-.2 6.6-2 8.1a77.8 77.8 0 0 1-26.3 19.2zm112.8-.1c-6 3.4-6 7.4-1.1 7.6 8.3-1 18.2-1.7 25-12 1.8-2.9 4-10.7 4.1-15.4.6-28-.4-49-4.6-69.2-.2-2-1.1-6.5-.8-7.1.6-1.4 3.3.1 4.3-1.5 1.4-1.4-7-12.3-10-17-1.1-2-1.5-3.4-3.2.3-1.9 3-2.5 8.4-1.8 13.1 4.5 30 7.8 52.5 8.4 79-.3 2.6-.4 4-1.6 7.1-2.6 3.4-5.5 7.6-8.3 9.6-2.7 2-8.5 4-10.4 5.5z"/>
<path fill="#fff" d="M531.6 216.7v-18.3a33 33 0 0 0-3-13.2c-1.8-4-.7-7.1-1.5-11.4-.8-4.2-.6-10.6-1.8-15.6-.4-2-1.4-8.2-1-8.8.4-1.4 2.3 0 3.2-1.6 1.4-1.5-4.8-17.5-7.9-22-1.1-2-3.1-1.4-5.7 2-2.3 2.1-1.4 7.1-.5 11.8 6 31.3 10.4 59.7 9.5 89.4-.3 2.6 8.8-7.5 8.7-12.3zm-44.3-38.8c-3.7 0-11.6-7.4-14-11.6a7.8 7.8 0 0 1 .5-6.2c1.4-1 3.6-2 5.2-1 0 0 1.6 2.4 1.3 2.7 2 1 3 .4 3.2-.5.1-1.4-.7-2.3-.7-4 1-4.3 6-5 7.8-2.2 1.4 1.7 1.9 5.3 2.1 7.8 0 1.2-2-.3-3.2 0-1.1.4-1.4 1.7-1.5 2.9-.2 3.2-.6 8.3-.7 12zm-69.6 46.6c1-9.6-.3-26.5-.4-32.1-.4-13.3-2.6-39-3.6-43.2-1.2-8.1 3.3.9 2.7-3.8-1.5-8-6-13.6-11.2-21-1.7-2.3-1.6-2.8-4.3.6-2.8 6.6-.3 11.1.4 16.2 3.8 16.7 6 32 7 47.2a381.2 381.2 0 0 1 .4 47.5c2.9.2 7.5-4.6 9-11.4z"/>
<path fill="#fff" d="M544.5 209.2c-6.7-11.1-16.7-23.2-19.4-27.7a639.2 639.2 0 0 0-28.2-36.7c-8.3-8.7 3.8-1.4-1.6-8.1-4.6-5-6-6.6-9.8-9.6-2-1.3-3.2-3.7-3.8.4-.3 3.6-.5 7.8-.3 10.9 0 1.7 1.8 4.8 3.3 6.7 20 24.7 42 50 59.7 81.7 2.5-1.4 1.7-15.6 0-17.6z"/>
<path fill="#1ba400" d="M242.8 188.6c-.5.9-1.6 2-1.2 3 .8 1 1.4 1.3 2.6 1.4 1 0 2.6.2 2.9-.4a3.2 3.2 0 0 0 .5-3.2c-1-2.8-4.2-1.8-4.8-.8z"/>
<path fill="#165d31" d="M242.8 188.6c-.5.9-1.6 2-1.2 3 .8 1 1.4 1.3 2.6 1.4 1 0 2.6.2 2.9-.4a3.2 3.2 0 0 0 .5-3.2c-1-2.8-4.2-1.8-4.8-.8z"/>
<path fill="#fff" d="M467.2 351.3c8.9.3 14.7.4 22.6 1.3l9.2-1c10.3-1 10.8 14.7 10.8 14.7-.1 9.2-3.7 9.6-8.2 10.6-2.6.4-4-1.5-5.3-3.5-1.7.7-4 .8-6.9.4-3.7-.2-7.4-.2-11-.5-4-.3-6.1.5-10 .1-.9 1.3-2 3-4.3 2.5-2-.2-4.4-5.9-3.7-10.1 1.4-3.1 1-2.1.9-3.5-36.4-.9-73-2.5-108.7-2-28 0-55.5 1.2-83 2.4-14.7-.2-26-2.6-33.7-14 .7 0 37.5 2.2 48.2 1.5 20-.3 38.1-1.9 58.4-2.5 40 .7 79.5.7 119.5 3.5-3.8-2.6-4-8.8 2-10.3.4-.3.7 3 1.6 3 4.6-.3 2.6 6 1.6 7.4zM306.8 131c-6 17.3 3.4 36.2 10 34.4 4.8 2 7.8-7.1 9.8-17 1.3-2.8 2.3-3.1 3-1.7-.2 13.2 1 16.1 4.4 20.1a11 11 0 0 0 14.3.3l5.9-6c1.3-1.3 3-1.4 4.9-.2 1.8 1.7 1.5 4.5 5.4 6.5 3.2 1.3 10.2.3 11.8-2.5 2.1-3.7 2.7-5 3.7-6.4 1.5-2 4.1-1.2 4.1-.5-.2 1.1-1.7 2.3-.7 4.3 1.8 1.4 2.3.5 3.4.2 3.8-1.8 6.7-10.2 6.7-10.2.1-3-1.6-2.8-2.7-2.2l-3 2.1c-2 .3-5.6 1.5-7.4-1.3-1.8-3.3-1.9-8-3.3-11.4 0-.2-2.4-5.3-.1-5.6 1.1.2 3.6.8 4-1.2 1.2-2-2.6-7.7-5.2-10.6-2.2-2.4-5.4-2.7-8.4-.2-2 2-1.8 4-2.2 6.1a9.6 9.6 0 0 0 2 8.4c2.1 4.1 6 9.4 4.7 17 0 0-2.3 3.5-6.2 3-1.6-.4-4.2-1-5.6-11.4-1-7.9.2-18.9-3.1-24-1.2-3.2-2-6.2-5-.8-.8 2-4.2 5.2-1.8 11.8a35 35 0 0 1 2 18.3c-1.4 2.1-1.7 2.9-3.6 5-2.5 2.7-5.3 2-7.4 1-2-1.3-3.6-2-4.5-6.3.2-6.8.5-17.9-.7-20.3-1.8-3.6-4.8-2.3-6.1-1.2a46.3 46.3 0 0 0-11.2 22.9c-1.7 5.5-3.5 4-4.8 1.7-3.1-3-3.3-25.9-7.1-22.1z"/>
<path fill="#fff" d="M325 168.7c2.8-2 1.5-3.3 5.6.8a69.8 69.8 0 0 1 9 30.3c-.3 2.5 1.5 4 2.3 3.5.4-5.8 14.7-14 27.7-15.2 2-.4 1-4.2 1.3-6.2-.8-7.2 4-13.8 10.9-14.3 9.2 1.4 12.3 6.3 12.5 13.8-1 14.5-16.1 17-24.6 18-1.3.6-1.8 1.2 0 1.9l35.5.1 1.8 1c.2 1-.5.2-2 2.5s-3.4 7.7-3.5 11.2a173 173 0 0 1-32.6 6.2c-3.8 2-5.7 4.6-5 7.5 1.3 3.3 9.9 6.5 9.9 6.7 1.6 1 3.5 3.4-.5 8.2-17.3-.7-30.7-8.1-35.3-18.5-1.4-1-3 0-3.9 1.4a54.7 54.7 0 0 1-24.9 20.7c-6.9 1.7-13.9-1-17.2-5.5-2.2-2.6-2.1-5.4-3-6-3.7 1.6-35.6 15.2-31.5 8.9 7.7-8.4 21.2-14.5 33-22.7 1-2.7 2.5-12 7.2-15 .2 0-.8 5.4-.7 7.7 0 1.9-.1 2.6.3 2.1.8-.5 15.2-11.8 16.3-15.3 1.4-2 .4-7 .4-7.2-2.6-7-6.4-7.5-7.8-11-1.3-4.6-.7-9.8 1.9-11.3 2.3-2.1 5-1.9 7.6.4 3 2.6 5.5 7.7 6.3 11.5-.5 1.5-3.8-1-5-.2 2 2 3 4.5 3.7 7.5 2 8 1.3 11-.5 16.2-6.4 13.4-14.6 17.5-21.8 22.4-.2.1-.3 3.5 2.4 5.3 1 1 4.7 1.4 9 0a52.8 52.8 0 0 0 21.7-22.6c1.3-7.2-.5-14.8-2.4-21.4a252.7 252.7 0 0 1-6-16c-.2-4 .1-5.4 2-7.4zm-92.8-37.4c4 1.9 11.7 1 11.4-5.5l-.2-3.1c-.8-2-3.1-1.5-3.6.6-.2.6.3 1.7-.3 2-.4.3-1.7.1-1.6-1.7 0-.6-.4-1.2-.7-1.6-.3-.1-.4-.2-.9-.2-.6 0-.5.2-.9.7l-.3 1.5c0 .7-.3.9-.8 1-.5 0-.4 0-.8-.2-.3-.3-.6-.4-.6-.9l-.2-1.6a2 2 0 0 0-1-.6c-2.3 0-2.4 2.6-2.3 3.6-.2.1-.3 4.7 2.8 6z"/>
<path fill="#fff" d="M351.8 181.9c4 2 13.8.8 11.4-5.5l-.2-3c-.8-2-3-1.5-3.6.5-.1.6.3 1.7-.3 2-.3.4-1.6.2-1.6-1.6 0-.6-.4-1.2-.7-1.6-.2-.2-.4-.2-.9-.2s-.5.1-.8.6l-.3 1.5c-.1.7-.4 1-.8 1-.6 0-.4 0-.9-.2-.2-.3-.6-.4-.6-.9s0-1.3-.2-1.6c-.2-.3-.6-.4-1-.5-2.2 0-2.4 2.5-2.3 3.5-.1.2-.2 4.7 2.8 6zm69.8-21c4 2 11.7 1.1 11.4-5.4l-.2-3.1c-.8-2-3.1-1.5-3.6.5-.2.7.3 1.7-.3 2-.4.4-1.7.2-1.6-1.6 0-.6-.5-1.2-.7-1.6-.3-.1-.4-.2-1-.2-.5 0-.5.2-.8.7l-.3 1.5c0 .6-.3.9-.8 1-.5 0-.4 0-.8-.3-.3-.2-.6-.4-.6-.8 0-.5-.1-1.3-.3-1.7-.2-.3-.5-.4-1-.5-2.2 0-2.3 2.6-2.2 3.5-.2.2-.3 4.8 2.8 6zm36 52.7c-7 8-3.9 21.2-2.3 24 2.4 4.8 4.2 7.8 8.8 10.1 4.2 3 7.4 1.1 9.2-1 4.2-4.3 4.2-15.4 6.2-17.6 1.4-4 4.8-3.3 6.5-1.5a16 16 0 0 0 6 5.1c3.9 3.4 8.5 4 13.1 1 3.1-1.8 5.2-4.1 7-8.6 2-5.5 1-30.7.5-45.6-.1-1.2-4-20.6-4-20.8 0-.2-.6-9.9-1-12.2 0-.9-.3-1.2.7-1 1 .8 1.2.9 1.8 1.2 1 .2 2-1.6 1.4-3.3l-9.8-18c-.7-.7-1.7-1.5-3 .3a7 7 0 0 0-2.4 5.3c.3 4.3 1 8.6 1.3 12.9l4 21.8c1.2 15.6 1.5 28.3 2.7 44-.2 6.5-2.2 12.3-4.2 13 0 0-2.9 1.8-4.8 0-1.5-.7-7.2-9.6-7.2-9.6-3-2.7-4.8-2-7 0-5.6 5.5-8.2 15.9-12.1 23-1 1.6-3.9 3-7-.1-8-11-3.3-26.4-4.3-22.4zm-34.2-90.9c3.7 1.5 6.2 9 5.4 12.6-.7 4.4-2.7 9.3-4 8.6-1.6-.5 1-4.4-.5-8.5-.8-2.6-5.8-7.5-5.3-8.9-1-3 2.2-4.3 4.4-3.8z"/>
<path fill="#fff" d="M469.5 218c.7-9-.6-14.4-.8-19.6-.2-5.2-6-45-7-49-1.5-7.5 5.5-1 4.7-5.4-2.4-5.5-8.3-13.5-10.2-18.2-1.1-2-.7-3.9-3.2-.6a41 41 0 0 0-2.2 18.6c6 31.3 12.1 57.3 11.1 87.1 2.9 0 6.2-6.5 7.6-13zm62.4-82.7c3.4 1.7 5.3 11 5 13.6-.7 4.9-2.5 10-3.8 9.4-1.3-.6.3-7.2-.4-9.2-.7-2.9-5.2-8.1-4.8-9.7-.9-3.2 2-4.6 4-4zm-247.7 65.8c3.2 1.3 5 8 4.7 10-.6 3.6-2.3 7.4-3.5 7-1.3-.5.2-5.3-.4-6.8-.3-3.7-4.7-5.6-4.6-7.1-.8-3 1.9-3.5 3.8-3z"/>
<path fill="#1b9d00" d="M361.3 211.4c4 .2 6.1 3.5 2.3 4.8-3.8 1.3-7.5 2.3-7.5 7.8 1.4 7.7-2 5-4 4-2.3-1.7-8.9-5.7-9.8-14.5-.1-2 1.5-3.8 4.1-3.8 4 1 9.8 1.2 14.8 1.7z"/>
<path fill="#165d31" d="M361.3 211.4c4 .2 6.1 3.5 2.3 4.8-3.8 1.3-7.5 2.3-7.5 7.8 1.4 7.7-2 5-4 4-2.3-1.7-8.9-5.7-9.8-14.5-.1-2 1.5-3.8 4.1-3.8 4 1 9.8 1.2 14.8 1.7z"/>
<path fill="#fff" d="M199 120.5c4.7 1.4 5 8.3 4.6 10.4-.6 3.7-2.3 7.6-3.5 7.1-1.3-.4 0-5.4-.6-7-.7-2.2-4.7-6.2-4.2-7.4-1-2.4 1.8-3.5 3.7-3zm92.9 32.6c-3.6 2-5 7.8-2.8 11.2 2.1 3 5.4 1.9 5.9 1.9 3.5.4 5.6-6.7 5.6-6.7s.1-2-4 1.8c-1.8.3-2-.3-2.5-1.3a8.7 8.7 0 0 1 .6-5.6c.6-1.7-.8-2.5-2.8-1.3zm27-35.3c-1.7 1.3-5.4 5-5.5 9.3 0 2.4-.5 2.4 1 4 1.2 1.6 2.4 1.5 4.7.3a5 5 0 0 0 2.2-3.3c.6-2.8-2.9 1.3-3.3-1.8-.8-2.8 1.4-4 3.5-6.8 0-1.9 0-3.2-2.5-1.7zm21.9 4a56.9 56.9 0 0 0-1.6 10.7c-.6 2.7 2.8 3.8 4.4.3 2.3-6.3 2.3-9 2.5-11.7-.7-4-3.5-4-5.3.6zm137.5 69.9c.4-.5 19.4-14 19.4-14 1.9-.6 1.5 7 .6 7a75.3 75.3 0 0 1-20 13.9c-1 .6-1.9-5.2 0-7zm17.2-.1c3.3 1.6 4.7 11.4 4.3 14 .1 5.2-3.2 9.3-4.5 8.6-1.4-.6.1-6.4-.5-8.4-.7-2.9-3.6-8.3-3.1-9.8-1-3.3 1.8-5 3.8-4.4zm-112.4 42c1.3-2 5.3-4.7 5.4-4.7 1.9-1 3.7.7 3.6.6.3 1.9-1.2 3.6-.7 6.1.4 1 .7 2.1 2.6 1.7 3-2.3 5.8-2.5 8.8-2.7 2.3.2 2.3 4 .9 4.1-5.6 1.2-8 2.7-12 4.2-1.9 1.1-3.5-.3-3.5-.4s-1-1.1-.3-3.6c.1-2-.7-3-2.3-2.8-1.3.6-2.4 1-3-.4-.3-1-.3-1.5.5-2.1zm132.3 5.2c.8 1 1.4 2 0 3.7l-3.6 3c-.7 1.2-1 2.8.9 3.3 3.5 1 11.7-4.3 11.7-4.4 1.3-1 .9-2.9.7-2.9-.7-.9-2.5-.4-3.6-.5-.6 0-2.4-.3-1.6-1.9.8-1 1-1.6 1.5-2.9.6-1.2.1-2-1.9-2.7-2-.3-2.8-.1-5 0-1.3.3-1.7.8-2 2.3.2 2.2 1.5 2.1 3 3z"/>
<path fill="#259f00" d="M383.8 183.8c-.5 1-2.3.9-4 0s-2.5-2.5-2-3.4 2.3-.9 4 0 2.5 2.5 2 3.4zM297.5 132c-1 .3-2.3-.6-2.9-2s-.3-2.5.7-2.8 2.3.7 2.9 2 .3 2.6-.7 2.8z"/>
<path fill="#209000" d="M468.2 363.3c9 .4 17.6.1 26.6.6 1.7 1.3.5 4.8-.6 4.5l-7.6-.2c0-2.9-7.5-2.4-7.2.1-4 .5-7.6-.1-11.6-.3-1.2-1.5-1-4.1.4-4.7z"/>
<path fill="#165d31" d="M383.8 183.8c-.5 1-2.3.9-4 0s-2.5-2.5-2-3.4 2.3-.9 4 0 2.5 2.5 2 3.4zM297.5 132c-1 .3-2.3-.6-2.9-2s-.3-2.5.7-2.8 2.3.7 2.9 2 .3 2.6-.7 2.8z"/>
<path fill="#165d31" d="M468.2 363.3c9 .4 17.6.1 26.6.6 1.7 1.3.5 4.8-.6 4.5l-7.6-.2c0-2.9-7.5-2.4-7.2.1-4 .5-7.6-.1-11.6-.3-1.2-1.5-1-4.1.4-4.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-tn" viewBox="0 0 512 512">
<path fill="#e70013" d="m0 0h512v512H0z"/>
<path fill="#fff" d="M256 135a1 1 0 00-1 240 1 1 0 000-241zm72 174a90 90 0 110-107 72 72 0 100 107zm-4.7-21.7-37.4-12.1L262.8 307V267.7l-37.3-12.2 37.3-12.2v-39.4l23.1 31.9 37.4-12.1-23.1 31.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 333 B

View File

@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-tn" viewBox="0 0 512 512">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M124 0h496v496H124z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(-128) scale(1.0321)">
<path fill="#e70013" d="M0 0h744v496H0z"/>
<path fill="#fff" d="M497.8 247.8a125.1 125.1 0 1 1-250.2 0 125.1 125.1 0 0 1 250.2 0z"/>
<path fill="#e70013" d="M372.7 330.8a83 83 0 0 1-83-83 83 83 0 0 1 83-83c11.4 0 24.5 2.7 33.3 9.2-60.6 2.3-76 53.7-76 74.5s9.8 67 76 73.8a70.4 70.4 0 0 1-33.3 8.5z"/>
<path fill="#e70013" d="M445.8 282.7 408.1 269l-24.9 31.4 1.4-40-37.6-14 38.6-11.1 1.7-40 22.4 33.2 38.6-10.8-24.7 31.6z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 737 B

View File

@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-tn" viewBox="0 0 640 480">
<defs>
<clipPath id="a">
<path fill-opacity=".7" d="M-85.3 0h682.6v512H-85.3z"/>
</clipPath>
</defs>
<g fill-rule="evenodd" clip-path="url(#a)" transform="translate(80) scale(.9375)">
<path fill="#e70013" d="M-128 0h768v512h-768z"/>
<path fill="#fff" d="M385.8 255.8a129.1 129.1 0 1 1-258.2 0 129.1 129.1 0 0 1 258.2 0z"/>
<path fill="#e70013" d="M256.7 341.4a85.7 85.7 0 0 1 0-171.3c11.8 0 25.3 2.8 34.4 9.5-62.6 2.3-78.5 55.5-78.5 76.9s10.1 69.1 78.5 76.2c-7.8 5-22.6 8.7-34.4 8.7z"/>
<path fill="#e70013" d="m332.1 291.8-38.9-14.2-25.7 32.4 1.5-41.3-38.8-14.5 39.8-11.4 1.7-41.3 23.2 34.3 39.8-11-25.5 32.5z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 746 B

View File

@ -0,0 +1,4 @@
<svg viewBox="0 0 640 480" xmlns="http://www.w3.org/2000/svg">
<path fill="#e70013" d="m0 0h640v480h-640z"/>
<path d="m320 119.2a1 1 0 0 0 -1 240.3 1 1 0 0 0 1-240.3zm72 173.8a90 90 0 1 1 0-107 72 72 0 1 0 0 107zm-4.7-21.7-37.4-12.1-23.1 31.8v-39.3l-37.4-12.2 37.4-12.2v-39.3l23.1 31.8 37.4-12.1-23.1 31.8z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 332 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-us" viewBox="0 0 640 480">
<g fill-rule="evenodd">
<g stroke-width="1pt">
<path fill="#bd3d44" d="M0 0h912v37H0zm0 73.9h912v37H0zm0 73.8h912v37H0zm0 73.8h912v37H0zm0 74h912v36.8H0zm0 73.7h912v37H0zM0 443h912V480H0z"/>
<path fill="#fff" d="M0 37h912v36.9H0zm0 73.8h912v36.9H0zm0 73.8h912v37H0zm0 73.9h912v37H0zm0 73.8h912v37H0zm0 73.8h912v37H0z"/>
</g>
<path fill="#192f5d" d="M0 0h364.8v258.5H0z"/>
<path fill="#fff" d="m30.4 11 3.4 10.3h10.6l-8.6 6.3 3.3 10.3-8.7-6.4-8.6 6.3L25 27.6l-8.7-6.3h10.9zm60.8 0 3.3 10.3h10.8l-8.7 6.3 3.2 10.3-8.6-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.6zm60.8 0 3.3 10.3H166l-8.6 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.7-6.3h10.8zm60.8 0 3.3 10.3h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.4-10.2-8.8-6.3h10.7zm60.8 0 3.3 10.3h10.7l-8.6 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zm60.8 0 3.3 10.3h10.8l-8.8 6.3 3.4 10.3-8.7-6.4-8.7 6.3 3.4-10.2-8.8-6.3h10.8zM60.8 37l3.3 10.2H75l-8.7 6.2 3.2 10.3-8.5-6.3-8.7 6.3 3.1-10.3-8.4-6.2h10.7zm60.8 0 3.4 10.2h10.7l-8.8 6.2 3.4 10.3-8.7-6.3-8.7 6.3 3.3-10.3-8.7-6.2h10.8zm60.8 0 3.3 10.2h10.8l-8.7 6.2 3.3 10.3-8.7-6.3-8.7 6.3 3.3-10.3-8.6-6.2H179zm60.8 0 3.4 10.2h10.7l-8.8 6.2 3.4 10.3-8.7-6.3-8.6 6.3 3.2-10.3-8.7-6.2H240zm60.8 0 3.3 10.2h10.8l-8.7 6.2 3.3 10.3-8.7-6.3-8.7 6.3 3.3-10.3-8.6-6.2h10.7zM30.4 62.6l3.4 10.4h10.6l-8.6 6.3 3.3 10.2-8.7-6.3-8.6 6.3L25 79.3 16.3 73h10.9zm60.8 0L94.5 73h10.8l-8.7 6.3 3.2 10.2-8.6-6.3-8.7 6.3 3.3-10.3-8.6-6.3h10.6zm60.8 0 3.3 10.3H166l-8.6 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.3-8.7-6.3h10.8zm60.8 0 3.3 10.3h10.8l-8.7 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.4-10.3-8.8-6.3h10.7zm60.8 0 3.3 10.3h10.7l-8.6 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.3-8.6-6.3h10.7zm60.8 0 3.3 10.3h10.8l-8.8 6.3 3.4 10.2-8.7-6.3-8.7 6.3 3.4-10.3-8.8-6.3h10.8zM60.8 88.6l3.3 10.2H75l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zm60.8 0 3.4 10.2h10.7l-8.8 6.3 3.4 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.7-6.3h10.8zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3H179zm60.8 0 3.4 10.2h10.7l-8.7 6.3 3.3 10.3-8.7-6.4-8.6 6.3 3.2-10.2-8.7-6.3H240zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zM30.4 114.5l3.4 10.2h10.6l-8.6 6.3 3.3 10.3-8.7-6.4-8.6 6.3L25 131l-8.7-6.3h10.9zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.2 10.2-8.6-6.3-8.7 6.3 3.3-10.2-8.6-6.3h10.6zm60.8 0 3.3 10.2H166l-8.6 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.7-6.3h10.8zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.4-10.2-8.8-6.3h10.7zm60.8 0 3.3 10.2h10.7L279 131l3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zm60.8 0 3.3 10.2h10.8l-8.8 6.3 3.4 10.3-8.7-6.4-8.7 6.3L329 131l-8.8-6.3h10.8zM60.8 140.3l3.3 10.3H75l-8.7 6.2 3.3 10.3-8.7-6.4-8.7 6.4 3.3-10.3-8.6-6.3h10.7zm60.8 0 3.4 10.3h10.7l-8.8 6.2 3.4 10.3-8.7-6.4-8.7 6.4 3.3-10.3-8.7-6.3h10.8zm60.8 0 3.3 10.3h10.8l-8.7 6.2 3.3 10.3-8.7-6.4-8.7 6.4 3.3-10.3-8.6-6.3H179zm60.8 0 3.4 10.3h10.7l-8.7 6.2 3.3 10.3-8.7-6.4-8.6 6.4 3.2-10.3-8.7-6.3H240zm60.8 0 3.3 10.3h10.8l-8.7 6.2 3.3 10.3-8.7-6.4-8.7 6.4 3.3-10.3-8.6-6.3h10.7zM30.4 166.1l3.4 10.3h10.6l-8.6 6.3 3.3 10.1-8.7-6.2-8.6 6.2 3.2-10.2-8.7-6.3h10.9zm60.8 0 3.3 10.3h10.8l-8.7 6.3 3.3 10.1-8.7-6.2-8.7 6.2 3.4-10.2-8.7-6.3h10.6zm60.8 0 3.3 10.3H166l-8.6 6.3 3.3 10.1-8.7-6.2-8.7 6.2 3.3-10.2-8.7-6.3h10.8zm60.8 0 3.3 10.3h10.8l-8.7 6.3 3.3 10.1-8.7-6.2-8.7 6.2 3.4-10.2-8.8-6.3h10.7zm60.8 0 3.3 10.3h10.7l-8.6 6.3 3.3 10.1-8.7-6.2-8.7 6.2 3.3-10.2-8.6-6.3h10.7zm60.8 0 3.3 10.3h10.8l-8.8 6.3 3.4 10.1-8.7-6.2-8.7 6.2 3.4-10.2-8.8-6.3h10.8zM60.8 192l3.3 10.2H75l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zm60.8 0 3.4 10.2h10.7l-8.8 6.3 3.4 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.7-6.3h10.8zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3H179zm60.8 0 3.4 10.2h10.7l-8.7 6.3 3.3 10.3-8.7-6.4-8.6 6.3 3.2-10.2-8.7-6.3H240zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.3-8.7-6.4-8.7 6.3 3.3-10.2-8.6-6.3h10.7zM30.4 217.9l3.4 10.2h10.6l-8.6 6.3 3.3 10.2-8.7-6.3-8.6 6.3 3.2-10.3-8.7-6.3h10.9zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.4-10.3-8.7-6.3h10.6zm60.8 0 3.3 10.2H166l-8.4 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.3-8.7-6.3h10.8zm60.8 0 3.3 10.2h10.8l-8.7 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.4-10.3-8.8-6.3h10.7zm60.8 0 3.3 10.2h10.7l-8.6 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.3-8.6-6.3h10.7zm60.8 0 3.3 10.2h10.8l-8.8 6.3 3.4 10.2-8.7-6.3-8.7 6.3 3.4-10.3-8.8-6.3h10.8z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-us" viewBox="0 0 640 480">
<path fill="#bd3d44" d="M0 0h640v480H0"/>
<path stroke="#fff" stroke-width="37" d="M0 55.3h640M0 129h640M0 203h640M0 277h640M0 351h640M0 425h640"/>
<path fill="#192f5d" d="M0 0h364.8v258.5H0"/>
<marker id="a" markerHeight="30" markerWidth="30">
<path fill="#fff" d="m14 0 9 27L0 10h28L5 27z"/>
</marker>
<path fill="none" marker-mid="url(#a)" d="m0 0 16 11h61 61 61 61 60L47 37h61 61 60 61L16 63h61 61 61 61 60L47 89h61 61 60 61L16 115h61 61 61 61 60L47 141h61 61 60 61L16 166h61 61 61 61 60L47 192h61 61 60 61L16 218h61 61 61 61 60L0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 644 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-us" viewBox="0 0 512 512">
<g fill-rule="evenodd">
<g stroke-width="1pt">
<path fill="#bd3d44" d="M0 0h972.8v39.4H0zm0 78.8h972.8v39.4H0zm0 78.7h972.8V197H0zm0 78.8h972.8v39.4H0zm0 78.8h972.8v39.4H0zm0 78.7h972.8v39.4H0zm0 78.8h972.8V512H0z"/>
<path fill="#fff" d="M0 39.4h972.8v39.4H0zm0 78.8h972.8v39.3H0zm0 78.7h972.8v39.4H0zm0 78.8h972.8V315H0zm0 78.8h972.8v39.3H0zm0 78.7h972.8v39.4H0z"/>
</g>
<path fill="#192f5d" d="M0 0h389.1v275.7H0z"/>
<path fill="#fff" d="m32.3 11.8 4 11h11l-9.1 6.7 3.5 10.7-9.4-6.7-8.7 6.7 3.6-10.7-9.5-6.7h11.8zm65 0 3.5 11h11.4l-9.4 6.7 4 10.7-9.5-6.7-9.5 6.7 4-10.7-9.5-6.7h11.4zm65 0 3.5 11h11.4l-9.4 6.7 4 10.7-9.5-6.7-9.5 6.7 4-10.7-9.5-6.7h11.4zm64.6 0 3.9 11h11l-9 6.7 3.5 10.7-9.4-6.7-9.1 6.7 3.5-10.7-9.4-6.7h11.8zm65 0 3.5 11h11.4l-9.4 6.7 3.9 10.7-9.9-6.7-9 6.7 3.5-10.7-9.4-6.7h11.4zm65 0 3.5 11h11.4l-9.5 6.7 4 10.7-9.5-6.7-9.4 6.7 4-10.7-9.5-6.7h11.4zm-292 27.6 3.6 11H80l-9.5 6.7 4 10.6L65 61l-9.5 6.7 4-10.6-9.5-6.7h11.4zm64.7 0 4 11h11l-9.1 6.7 3.5 10.6-9.4-6.7-9 6.7 3.5-10.6-9.5-6.7h11.8zm65 0 3.5 11h11.4l-9.4 6.7 4 10.6-9.5-6.7-9.5 6.7 4-10.6-9.5-6.7H191zm65 0 3.5 11h11.4l-9.4 6.7 3.9 10.6-9.5-6.7-9.4 6.7 4-10.6-9.5-6.7H256zm64.5 0 4 11h10.6l-9 6.7 3.5 10.6-9.5-6.7-9 6.7 3.5-10.6-9.4-6.7h11.8zM32.7 67l3.1 11h11.9l-9.5 6.7 3.5 10.6-9.4-6.7-8.7 6.7 3.6-10.6-9.5-6.7h11.8zm64.6 0 3.5 11h11.4l-9 6.7 3.5 10.6-9.4-6.7-9 6.7 3.5-10.6-9.5-6.7h11.4zm65 0 3.5 11h11.4l-9.4 6.7 4 10.6-9.5-6.7-9.5 6.7 4-10.6-9.5-6.7h11.4zm64.6 0 3.9 11h11l-9 6.7 3.5 10.6-9.4-6.7-9.1 6.7 3.5-10.6L212 78h11.8zm65 0 3.5 11h11.4l-9 6.7 3.5 10.6-9.5-6.7-9 6.7 3.5-10.6L277 78h11.4zm65 0 3.5 11h11.4l-9.5 6.7 4 10.6-9.5-6.7-9.4 6.7 4-10.6-9.5-6.7h11.4zm-292 27.5 3.6 11H80l-9.5 6.7 4 10.7-9.5-6.7-9.5 6.7 4-10.7-9.5-6.6h11.4zm64.7 0 4 11h11l-9.1 6.7L139 123l-9.4-6.7-9 6.7 3.5-10.7-9.5-6.6h11.8zm65 0 3.5 11h11.4l-9 6.7L204 123l-9.4-6.7-9.1 6.7 3.5-10.7-9.4-6.6H191zm65 0 3.5 11h11.4l-9.4 6.7L269 123l-9.5-6.7-9.4 6.7 4-10.7-9.5-6.6H256zm64.5 0 4 11h10.6l-9 6.7 3.5 10.7-9.5-6.7-9 6.7 3.5-10.7-9.4-6.6h11.8zM32.7 122.1l3.1 11h11.9l-9.5 6.7 3.5 10.7-9.4-6.7-8.7 6.7 3.6-10.7-9.5-6.7h11.8zm64.6 0 3.5 11h11.4l-9 6.7 3.5 10.7-9.4-6.7-9 6.7 3.5-10.7-9.5-6.7h11.4zm65 0 3.5 11h11.4l-9.4 6.7 4 10.7-9.5-6.7-9.5 6.7 4-10.7-9.5-6.7h11.4zm64.6 0 3.9 11h11l-9 6.7 3.5 10.7-9.4-6.7-9.1 6.7 3.5-10.7-9.4-6.7h11.8zm65 0 3.5 11h11.4l-9 6.7 3.5 10.7-9.5-6.7-9 6.7 3.5-10.7-9.4-6.7h11.4zm65 0 3.5 11h11.4l-9.5 6.7 4 10.7-9.5-6.7-9.4 6.7 4-10.7-9.5-6.7h11.4zm-292 27.6 3.6 11H80l-9.5 6.7 4 10.6-9.5-6.7-9.5 6.7 4-10.6-9.5-6.7h11.4zm64.7 0 4 11h11l-9.1 6.7L139 178l-9.4-6.7-9 6.7 3.5-10.6-9.5-6.7h11.8zm65 0 3.5 11h11.4l-9 6.7L204 178l-9.4-6.7-9.1 6.7 3.5-10.6-9.4-6.7H191zm65 0 3.5 11h11.4l-9.4 6.7L269 178l-9.5-6.7-9.4 6.7 4-10.6-9.5-6.7H256zm64.5 0 4 11h10.6l-9 6.7 3.5 10.6-9.5-6.7-9 6.7 3.5-10.6-9.4-6.7h11.8zM32.7 177.2l3.1 11h11.9l-9.5 6.8 3.5 10.6-9.4-6.7-8.7 6.7 3.6-10.6-9.5-6.7h11.8zm64.6 0 3.5 11h11.4l-9 6.8 3.5 10.6-9.4-6.7-9 6.7 3.5-10.6-9.5-6.7h11.4zm65 0 3.5 11h11.4l-9.4 6.8 4 10.6-9.5-6.7-9.5 6.7 4-10.6-9.5-6.7h11.4zm64.6 0 3.9 11h11l-9 6.8 3.5 10.6-9.4-6.7-9.1 6.7 3.5-10.6-9.4-6.7h11.8zm65 0 3.5 11h11.4l-9 6.8 3.5 10.6-9.5-6.7-9 6.7 3.5-10.6-9.4-6.7h11.4zm65 0 3.5 11h11.4l-9.5 6.8 4 10.6-9.5-6.7-9.4 6.7 4-10.6-9.5-6.7h11.4zm-292 27.6 3.6 11H80l-9.5 6.7 4 10.7-9.5-6.7-9.5 6.7 4-10.7-9.5-6.7h11.4zm64.7 0 4 11h11l-9.1 6.7 3.5 10.7-9.4-6.7-9 6.7 3.5-10.7-9.5-6.7h11.8zm65 0 3.5 11h11.4l-9 6.7 3.5 10.7-9.4-6.7-9.1 6.7 3.5-10.7-9.4-6.7H191zm65 0 3.5 11h11.4l-9.4 6.7 3.9 10.7-9.5-6.7-9.4 6.7 4-10.7-9.5-6.7H256zm64.5 0 4 11h10.6l-9 6.7 3.5 10.7-9.5-6.7-9 6.7 3.5-10.7-9.4-6.7h11.8zM32.7 232.4l3.1 11h11.9l-9.5 6.7 3.5 10.6-9.4-6.7-8.7 6.7 3.6-10.6-9.5-6.7h11.8zm64.6 0 3.5 11h11.4l-9 6.7 3.5 10.6-9.4-6.7-9 6.7 3.5-10.6-9.5-6.7h11.4zm65 0 3.5 11h11.4l-9.4 6.7 4 10.6-9.5-6.7-9.5 6.7 4-10.6-9.5-6.7h11.4zm64.6 0 3.9 11h11l-9 6.7 3.5 10.6-9.4-6.7-9.1 6.7 3.5-10.6-9.4-6.7h11.8zm65 0 3.5 11h11.4l-9 6.7 3.5 10.6-9.5-6.7-9 6.7 3.5-10.6-9.4-6.7h11.4zm65 0 3.5 11h11.4l-9.5 6.7 4 10.6-9.5-6.7-9.4 6.7 4-10.6-9.5-6.7h11.4z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-us" viewBox="0 0 512 512">
<path fill="#bd3d44" d="M0 0h512v512H0"/>
<path stroke="#fff" stroke-width="40" d="M0 58h512M0 137h512M0 216h512M0 295h512M0 374h512M0 453h512"/>
<path fill="#192f5d" d="M0 0h390v275H0z"/>
<marker id="a" markerHeight="30" markerWidth="30">
<path fill="#fff" d="m15 0 9.3 28.6L0 11h30L5.7 28.6"/>
</marker>
<path fill="none" marker-mid="url(#a)" d="m0 0 18 11h65 65 65 65 66L51 39h65 65 65 65L18 66h65 65 65 65 66L51 94h65 65 65 65L18 121h65 65 65 65 66L51 149h65 65 65 65L18 177h65 65 65 65 66L51 205h65 65 65 65L18 232h65 65 65 65 66L0 0"/>
</svg>

After

Width:  |  Height:  |  Size: 646 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-wf" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-wf" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-yt" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#002654" d="M0 0h213.3v480H0z"/>
<path fill="#ce1126" d="M426.7 0H640v480H426.7z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-yt" viewBox="0 0 512 512">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#fff" d="M0 0h512v512H0z"/>
<path fill="#002654" d="M0 0h170.7v512H0z"/>
<path fill="#ce1126" d="M341.3 0H512v512H341.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 289 B

View File

@ -11,8 +11,8 @@
let WGPORTAL_BACKEND_BASE_URL="http://localhost:5000/api/v0";
</script>
<script src="/api/v0/config/frontend.js"></script>
<script type="module" crossorigin src="/app/assets/index-62a1c0a6.js"></script>
<link rel="stylesheet" href="/app/assets/index-0e8a2841.css">
<script type="module" crossorigin src="/app/assets/index-04bedbf4.js"></script>
<link rel="stylesheet" href="/app/assets/index-a233ff7e.css">
</head>
<body class="d-flex flex-column min-vh-100">
<noscript>

View File

@ -1,18 +1,17 @@
package handlers
import (
"github.com/h44z/wg-portal/internal/app/api/core"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"net/http"
"strings"
"github.com/gin-contrib/cors"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/memstore"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal/app/api/core"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/h44z/wg-portal/internal/config"
csrf "github.com/utrack/gin-csrf"
"net/http"
"strings"
)
type handler interface {

View File

@ -2,17 +2,14 @@ package handlers
import (
"context"
model2 "github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/h44z/wg-portal/internal/domain"
"net/http"
"net/url"
"strconv"
"time"
"github.com/h44z/wg-portal/internal/domain"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
)
type authEndpoint struct {
@ -49,7 +46,7 @@ func (e authEndpoint) handleExternalLoginProvidersGet() gin.HandlerFunc {
return func(c *gin.Context) {
providers := e.app.Authenticator.GetExternalLoginProviders(c.Request.Context())
c.JSON(http.StatusOK, model2.NewLoginProviderInfos(providers))
c.JSON(http.StatusOK, model.NewLoginProviderInfos(providers))
}
}
@ -82,7 +79,7 @@ func (e authEndpoint) handleSessionInfoGet() gin.HandlerFunc {
email = &e
}
c.JSON(http.StatusOK, model2.SessionInfo{
c.JSON(http.StatusOK, model.SessionInfo{
LoggedIn: currentSession.LoggedIn,
IsAdmin: currentSession.IsAdmin,
UserIdentifier: loggedInUid,
@ -132,7 +129,7 @@ func (e authEndpoint) handleOauthInitiateGet() gin.HandlerFunc {
returnParams = queryParams.Encode()
redirectToReturn()
} else {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: "already logged in"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: "already logged in"})
}
return
}
@ -142,7 +139,7 @@ func (e authEndpoint) handleOauthInitiateGet() gin.HandlerFunc {
if autoRedirect {
redirectToReturn()
} else {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
c.JSON(http.StatusInternalServerError, model.Error{Code: http.StatusInternalServerError, Message: err.Error()})
}
return
}
@ -157,7 +154,7 @@ func (e authEndpoint) handleOauthInitiateGet() gin.HandlerFunc {
if autoRedirect {
c.Redirect(http.StatusFound, authCodeUrl)
} else {
c.JSON(http.StatusOK, model2.OauthInitiationResponse{
c.JSON(http.StatusOK, model.OauthInitiationResponse{
RedirectUrl: authCodeUrl,
State: state,
})
@ -200,7 +197,7 @@ func (e authEndpoint) handleOauthCallbackGet() gin.HandlerFunc {
returnParams = queryParams.Encode()
redirectToReturn()
} else {
c.JSON(http.StatusBadRequest, model2.Error{Message: "already logged in"})
c.JSON(http.StatusBadRequest, model.Error{Message: "already logged in"})
}
return
}
@ -213,7 +210,7 @@ func (e authEndpoint) handleOauthCallbackGet() gin.HandlerFunc {
if returnUrl != nil {
redirectToReturn()
} else {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: "invalid oauth provider"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: "invalid oauth provider"})
}
return
}
@ -221,7 +218,7 @@ func (e authEndpoint) handleOauthCallbackGet() gin.HandlerFunc {
if returnUrl != nil {
redirectToReturn()
} else {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: "invalid oauth state"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: "invalid oauth state"})
}
return
}
@ -233,7 +230,7 @@ func (e authEndpoint) handleOauthCallbackGet() gin.HandlerFunc {
if returnUrl != nil {
redirectToReturn()
} else {
c.JSON(http.StatusUnauthorized, model2.Error{Code: http.StatusUnauthorized, Message: err.Error()})
c.JSON(http.StatusUnauthorized, model.Error{Code: http.StatusUnauthorized, Message: err.Error()})
}
return
}
@ -281,7 +278,7 @@ func (e authEndpoint) handleLoginPost() gin.HandlerFunc {
return func(c *gin.Context) {
currentSession := e.authenticator.Session.GetData(c)
if currentSession.LoggedIn {
c.JSON(http.StatusOK, model2.Error{Code: http.StatusOK, Message: "already logged in"})
c.JSON(http.StatusOK, model.Error{Code: http.StatusOK, Message: "already logged in"})
return
}
@ -291,13 +288,13 @@ func (e authEndpoint) handleLoginPost() gin.HandlerFunc {
}
if err := c.ShouldBindJSON(&loginData); err != nil {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: err.Error()})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: err.Error()})
return
}
user, err := e.app.Authenticator.PlainLogin(c.Request.Context(), loginData.Username, loginData.Password)
if err != nil {
c.JSON(http.StatusUnauthorized, model2.Error{Code: http.StatusUnauthorized, Message: "login failed"})
c.JSON(http.StatusUnauthorized, model.Error{Code: http.StatusUnauthorized, Message: "login failed"})
return
}
@ -320,11 +317,11 @@ func (e authEndpoint) handleLogoutPost() gin.HandlerFunc {
currentSession := e.authenticator.Session.GetData(c)
if !currentSession.LoggedIn { // Not logged in
c.JSON(http.StatusOK, model2.Error{Code: http.StatusOK, Message: "not logged in"})
c.JSON(http.StatusOK, model.Error{Code: http.StatusOK, Message: "not logged in"})
return
}
e.authenticator.Session.DestroyData(c)
c.JSON(http.StatusOK, model2.Error{Code: http.StatusOK, Message: "logout ok"})
c.JSON(http.StatusOK, model.Error{Code: http.StatusOK, Message: "logout ok"})
}
}

View File

@ -4,11 +4,10 @@ import (
"bytes"
"embed"
"fmt"
"html/template"
"net/http"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"html/template"
"net/http"
)
//go:embed frontend_config.js.gotpl

View File

@ -1,13 +1,11 @@
package handlers
import (
model2 "github.com/h44z/wg-portal/internal/app/api/v0/model"
"net/http"
"github.com/h44z/wg-portal/internal/domain"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/h44z/wg-portal/internal/domain"
"net/http"
)
type interfaceEndpoint struct {
@ -27,6 +25,7 @@ func (e interfaceEndpoint) RegisterRoutes(g *gin.RouterGroup, authenticator *aut
apiGroup.GET("/get/:id", e.handleSingleGet())
apiGroup.PUT("/:id", e.handleUpdatePut())
apiGroup.POST("/new", e.handleCreatePost())
apiGroup.GET("/config/:id", e.handleConfigGet())
apiGroup.GET("/peers/:id", e.handlePeersGet())
}
@ -42,15 +41,15 @@ func (e interfaceEndpoint) RegisterRoutes(g *gin.RouterGroup, authenticator *aut
// @Router /interface/prepare [get]
func (e interfaceEndpoint) handlePrepareGet() gin.HandlerFunc {
return func(c *gin.Context) {
in, err := e.app.WireGuard.PrepareInterface(c.Request.Context())
in, err := e.app.PrepareInterface(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewInterface(in))
c.JSON(http.StatusOK, model.NewInterface(in))
}
}
@ -65,15 +64,15 @@ func (e interfaceEndpoint) handlePrepareGet() gin.HandlerFunc {
// @Router /interface/all [get]
func (e interfaceEndpoint) handleAllGet() gin.HandlerFunc {
return func(c *gin.Context) {
interfaces, err := e.app.WireGuard.GetAllInterfaces(c.Request.Context())
interfaces, err := e.app.GetAllInterfaces(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewInterfaces(interfaces))
c.JSON(http.StatusOK, model.NewInterfaces(interfaces))
}
}
@ -91,21 +90,55 @@ func (e interfaceEndpoint) handleSingleGet() gin.HandlerFunc {
return func(c *gin.Context) {
id := c.Param("id")
if id == "" {
c.JSON(http.StatusBadRequest, model2.Error{
c.JSON(http.StatusBadRequest, model.Error{
Code: http.StatusInternalServerError, Message: "missing id parameter",
})
return
}
iface, _, err := e.app.WireGuard.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(id))
iface, _, err := e.app.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(id))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewInterface(iface))
c.JSON(http.StatusOK, model.NewInterface(iface))
}
}
// handleConfigGet returns a gorm handler function.
//
// @ID interfaces_handleConfigGet
// @Tags Interface
// @Summary Get interface configuration as string.
// @Produce json
// @Success 200 {object} string
// @Failure 400 {object} model.Error
// @Failure 500 {object} model.Error
// @Router /interface/config/{id} [get]
func (e interfaceEndpoint) handleConfigGet() gin.HandlerFunc {
return func(c *gin.Context) {
id := c.Param("id")
if id == "" {
c.JSON(http.StatusBadRequest, model.Error{
Code: http.StatusInternalServerError, Message: "missing id parameter",
})
return
}
c.JSON(http.StatusOK, `[Interface]
Address = 10.0.0.1/32, fd12:3456:789a::1/128
ListenPort = 51820
PrivateKey = <Private Key>
SaveConfig = true
[Peer]
PublicKey = <Client public key>
PresharedKey = <Pre-Shared Key>
AllowedIPs = 10.0.0.2/32,fd12:3456:789a::2/128
PersistentKeepalive = 25`)
}
}
@ -127,31 +160,31 @@ func (e interfaceEndpoint) handleUpdatePut() gin.HandlerFunc {
id := c.Param("id")
if id == "" {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: "missing interface id"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: "missing interface id"})
return
}
var in model2.Interface
var in model.Interface
err := c.BindJSON(&in)
if err != nil {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: err.Error()})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: err.Error()})
return
}
if id != in.Identifier {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: "interface id mismatch"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: "interface id mismatch"})
return
}
updatedInterface, err := e.app.WireGuard.UpdateInterface(ctx, model2.NewDomainInterface(&in))
updatedInterface, err := e.app.UpdateInterface(ctx, model.NewDomainInterface(&in))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewInterface(updatedInterface))
c.JSON(http.StatusOK, model.NewInterface(updatedInterface))
}
}
@ -170,22 +203,22 @@ func (e interfaceEndpoint) handleCreatePost() gin.HandlerFunc {
return func(c *gin.Context) {
ctx := domain.SetUserInfoFromGin(c)
var in model2.Interface
var in model.Interface
err := c.BindJSON(&in)
if err != nil {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusBadRequest, Message: err.Error()})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusBadRequest, Message: err.Error()})
return
}
newInterface, err := e.app.WireGuard.CreateInterface(ctx, model2.NewDomainInterface(&in))
newInterface, err := e.app.CreateInterface(ctx, model.NewDomainInterface(&in))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewInterface(newInterface))
c.JSON(http.StatusOK, model.NewInterface(newInterface))
}
}
@ -202,20 +235,20 @@ func (e interfaceEndpoint) handlePeersGet() gin.HandlerFunc {
return func(c *gin.Context) {
id := c.Param("id")
if id == "" {
c.JSON(http.StatusBadRequest, model2.Error{
c.JSON(http.StatusBadRequest, model.Error{
Code: http.StatusInternalServerError, Message: "missing id parameter",
})
return
}
_, peers, err := e.app.WireGuard.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(id))
_, peers, err := e.app.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(id))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{
c.JSON(http.StatusInternalServerError, model.Error{
Code: http.StatusInternalServerError, Message: err.Error(),
})
return
}
c.JSON(http.StatusOK, model2.NewPeers(peers))
c.JSON(http.StatusOK, model.NewPeers(peers))
}
}

View File

@ -1,13 +1,11 @@
package handlers
import (
model2 "github.com/h44z/wg-portal/internal/app/api/v0/model"
"net/http"
"github.com/h44z/wg-portal/internal/domain"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/h44z/wg-portal/internal/domain"
"net/http"
)
type peerEndpoint struct {
@ -38,16 +36,16 @@ func (e peerEndpoint) handlePeersGet() gin.HandlerFunc {
return func(c *gin.Context) {
interfaceId := c.Param("id")
if interfaceId == "" {
c.JSON(http.StatusBadRequest, model2.Error{Code: http.StatusInternalServerError, Message: "missing id parameter"})
c.JSON(http.StatusBadRequest, model.Error{Code: http.StatusInternalServerError, Message: "missing id parameter"})
return
}
_, peers, err := e.app.WireGuard.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(interfaceId))
_, peers, err := e.app.GetInterfaceAndPeers(c.Request.Context(), domain.InterfaceIdentifier(interfaceId))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
c.JSON(http.StatusInternalServerError, model.Error{Code: http.StatusInternalServerError, Message: err.Error()})
return
}
c.JSON(http.StatusOK, model2.NewPeers(peers))
c.JSON(http.StatusOK, model.NewPeers(peers))
}
}

View File

@ -1,12 +1,11 @@
package handlers
import (
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"net/http"
"os"
"time"
"github.com/gin-gonic/gin"
)
type testEndpoint struct{}

View File

@ -39,7 +39,7 @@ func (e userEndpoint) RegisterRoutes(g *gin.RouterGroup, authenticator *authenti
// @Router /users [get]
func (e userEndpoint) handleAllGet() gin.HandlerFunc {
return func(c *gin.Context) {
users, err := e.app.Users.GetAll(c.Request.Context())
users, err := e.app.GetAllUsers(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
return
@ -83,7 +83,7 @@ func (e userEndpoint) handleUpdatePut() gin.HandlerFunc {
return
}
updateUser, err := e.app.Users.Update(ctx, model2.NewDomainUser(&user))
updateUser, err := e.app.UpdateUser(ctx, model2.NewDomainUser(&user))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
return
@ -115,7 +115,7 @@ func (e userEndpoint) handleCreatePost() gin.HandlerFunc {
return
}
newUser, err := e.app.Users.Create(ctx, model2.NewDomainUser(&user))
newUser, err := e.app.CreateUser(ctx, model2.NewDomainUser(&user))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
return
@ -142,7 +142,7 @@ func (e userEndpoint) handlePeersGet() gin.HandlerFunc {
return
}
peers, err := e.app.WireGuard.GetUserPeers(c.Request.Context(), domain.UserIdentifier(interfaceId))
peers, err := e.app.GetUserPeers(c.Request.Context(), domain.UserIdentifier(interfaceId))
if err != nil {
c.JSON(http.StatusInternalServerError, model2.Error{Code: http.StatusInternalServerError, Message: err.Error()})
return

View File

@ -1,13 +1,11 @@
package handlers
import (
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"net/http"
"github.com/h44z/wg-portal/internal/domain"
"github.com/gin-gonic/gin"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal/app/api/v0/model"
"github.com/h44z/wg-portal/internal/domain"
"net/http"
)
type Scope string

View File

@ -15,10 +15,10 @@ type App struct {
Config *config.Config
bus evbus.MessageBus
Authenticator Authenticator
Users UserManager
WireGuard WireGuardManager
StatisticsCollector StatisticsCollector
Authenticator
UserManager
WireGuardManager
StatisticsCollector
}
func New(cfg *config.Config, bus evbus.MessageBus, authenticator Authenticator, users UserManager, wireGuard WireGuardManager, stats StatisticsCollector) (*App, error) {
@ -28,8 +28,8 @@ func New(cfg *config.Config, bus evbus.MessageBus, authenticator Authenticator,
bus: bus,
Authenticator: authenticator,
Users: users,
WireGuard: wireGuard,
UserManager: users,
WireGuardManager: wireGuard,
StatisticsCollector: stats,
}
@ -52,7 +52,7 @@ func New(cfg *config.Config, bus evbus.MessageBus, authenticator Authenticator,
}
func (a *App) Startup(ctx context.Context) error {
a.Users.StartBackgroundJobs(ctx)
a.UserManager.StartBackgroundJobs(ctx)
a.StatisticsCollector.StartBackgroundJobs(ctx)
return nil
@ -64,7 +64,7 @@ func (a *App) importNewInterfaces(ctx context.Context) error {
return nil // feature disabled
}
err := a.WireGuard.ImportNewInterfaces(ctx)
err := a.ImportNewInterfaces(ctx)
if err != nil {
return err
}
@ -79,7 +79,7 @@ func (a *App) restoreInterfaceState(ctx context.Context) error {
return nil // feature disabled
}
err := a.WireGuard.RestoreInterfaceState(ctx, true)
err := a.RestoreInterfaceState(ctx, true)
if err != nil {
return err
}
@ -95,7 +95,7 @@ func (a *App) createDefaultUser(ctx context.Context) error {
return nil // empty admin user - do not create
}
_, err := a.Users.Get(ctx, adminUserId)
_, err := a.GetUser(ctx, adminUserId)
if err != nil && !errors.Is(err, domain.ErrNotFound) {
return err
}
@ -105,7 +105,7 @@ func (a *App) createDefaultUser(ctx context.Context) error {
}
now := time.Now()
admin, err := a.Users.Create(ctx, &domain.User{
admin, err := a.CreateUser(ctx, &domain.User{
BaseModel: domain.BaseModel{
CreatedBy: "system",
UpdatedBy: "system",

View File

@ -21,8 +21,8 @@ import (
)
type UserManager interface {
Get(context.Context, domain.UserIdentifier) (*domain.User, error)
Register(ctx context.Context, user *domain.User) error
GetUser(context.Context, domain.UserIdentifier) (*domain.User, error)
RegisterUser(ctx context.Context, user *domain.User) error
}
type Authenticator struct {
@ -149,7 +149,7 @@ func (a *Authenticator) GetExternalLoginProviders(_ context.Context) []domain.Lo
}
func (a *Authenticator) IsUserValid(ctx context.Context, id domain.UserIdentifier) bool {
user, err := a.users.Get(ctx, id)
user, err := a.users.GetUser(ctx, id)
if err != nil {
return false
}
@ -187,7 +187,7 @@ func (a *Authenticator) passwordAuthentication(ctx context.Context, identifier d
var userInDatabase = false
var userSource domain.UserSource
existingUser, err := a.users.Get(ctx, identifier)
existingUser, err := a.users.GetUser(ctx, identifier)
if err == nil {
userInDatabase = true
userSource = domain.UserSourceDatabase
@ -313,7 +313,7 @@ func (a *Authenticator) OauthLoginStep2(ctx context.Context, providerId, nonce,
func (a *Authenticator) processUserInfo(ctx context.Context, userInfo *domain.AuthenticatorUserInfo, source domain.UserSource, provider string, withReg bool) (*domain.User, error) {
// Search user in backend
user, err := a.users.Get(ctx, userInfo.Identifier)
user, err := a.users.GetUser(ctx, userInfo.Identifier)
switch {
case err != nil && withReg:
user, err = a.registerNewUser(ctx, userInfo, source, provider)
@ -341,7 +341,7 @@ func (a *Authenticator) registerNewUser(ctx context.Context, userInfo *domain.Au
Department: userInfo.Department,
}
err := a.users.Register(ctx, user)
err := a.users.RegisterUser(ctx, user)
if err != nil {
return nil, fmt.Errorf("failed to register new user: %w", err)
}

View File

@ -14,13 +14,13 @@ type Authenticator interface {
}
type UserManager interface {
Register(ctx context.Context, user *domain.User) error
New(ctx context.Context, user *domain.User) error
RegisterUser(ctx context.Context, user *domain.User) error
NewUser(ctx context.Context, user *domain.User) error
StartBackgroundJobs(ctx context.Context)
Get(ctx context.Context, id domain.UserIdentifier) (*domain.User, error)
GetAll(ctx context.Context) ([]domain.User, error)
Update(ctx context.Context, user *domain.User) (*domain.User, error)
Create(ctx context.Context, user *domain.User) (*domain.User, error)
GetUser(ctx context.Context, id domain.UserIdentifier) (*domain.User, error)
GetAllUsers(ctx context.Context) ([]domain.User, error)
UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error)
CreateUser(ctx context.Context, user *domain.User) (*domain.User, error)
}
type WireGuardManager interface {

View File

@ -42,8 +42,8 @@ func NewUserManager(cfg *config.Config, bus evbus.MessageBus, users UserDatabase
return m, nil
}
func (m Manager) Register(ctx context.Context, user *domain.User) error {
err := m.New(ctx, user)
func (m Manager) RegisterUser(ctx context.Context, user *domain.User) error {
err := m.NewUser(ctx, user)
if err != nil {
return err
}
@ -53,7 +53,7 @@ func (m Manager) Register(ctx context.Context, user *domain.User) error {
return nil
}
func (m Manager) New(ctx context.Context, user *domain.User) error {
func (m Manager) NewUser(ctx context.Context, user *domain.User) error {
if user.Identifier == "" {
return errors.New("missing user identifier")
}
@ -82,7 +82,7 @@ func (m Manager) StartBackgroundJobs(ctx context.Context) {
go m.runLdapSynchronizationService(ctx)
}
func (m Manager) Get(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
func (m Manager) GetUser(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
user, err := m.users.GetUser(ctx, id)
if err != nil {
return nil, fmt.Errorf("unable to load peer %s: %w", id, err)
@ -94,7 +94,7 @@ func (m Manager) Get(ctx context.Context, id domain.UserIdentifier) (*domain.Use
return user, nil
}
func (m Manager) GetAll(ctx context.Context) ([]domain.User, error) {
func (m Manager) GetAllUsers(ctx context.Context) ([]domain.User, error) {
users, err := m.users.GetAllUsers(ctx)
if err != nil {
return nil, fmt.Errorf("unable to load users: %w", err)
@ -122,7 +122,7 @@ func (m Manager) GetAll(ctx context.Context) ([]domain.User, error) {
return users, nil
}
func (m Manager) Update(ctx context.Context, user *domain.User) (*domain.User, error) {
func (m Manager) UpdateUser(ctx context.Context, user *domain.User) (*domain.User, error) {
existingUser, err := m.users.GetUser(ctx, user.Identifier)
if err != nil {
return nil, fmt.Errorf("unable to load existing user %s: %w", user.Identifier, err)
@ -152,7 +152,7 @@ func (m Manager) Update(ctx context.Context, user *domain.User) (*domain.User, e
return user, nil
}
func (m Manager) Create(ctx context.Context, user *domain.User) (*domain.User, error) {
func (m Manager) CreateUser(ctx context.Context, user *domain.User) (*domain.User, error) {
existingUser, err := m.users.GetUser(ctx, user.Identifier)
if err != nil && !errors.Is(err, domain.ErrNotFound) {
return nil, fmt.Errorf("unable to load existing user %s: %w", user.Identifier, err)
@ -299,7 +299,7 @@ func (m Manager) updateLdapUsers(ctx context.Context, providerName string, rawUs
}
if existingUser == nil {
err := m.New(ctx, user)
err := m.NewUser(ctx, user)
if err != nil {
return fmt.Errorf("create error for user id %s: %w", user.Identifier, err)
}

View File

@ -311,6 +311,10 @@ func (m Manager) PrepareInterface(ctx context.Context) (*domain.Interface, error
if m.cfg.Advanced.UseIpV6 {
ips = append(ips, ipv6)
}
networks := []domain.Cidr{ipv4.NetworkAddr()}
if m.cfg.Advanced.UseIpV6 {
networks = append(networks, ipv6.NetworkAddr())
}
freshInterface := &domain.Interface{
BaseModel: domain.BaseModel{
@ -332,17 +336,17 @@ func (m Manager) PrepareInterface(ctx context.Context) (*domain.Interface, error
PostUp: "",
PreDown: "",
PostDown: "",
SaveConfig: false,
SaveConfig: m.cfg.Advanced.ConfigStoragePath != "",
DisplayName: string(id),
Type: domain.InterfaceTypeServer,
DriverType: "",
Disabled: nil,
DisabledReason: "",
PeerDefNetworkStr: "", // TODO
PeerDefDnsStr: "", // TODO
PeerDefNetworkStr: domain.CidrsToString(networks),
PeerDefDnsStr: "",
PeerDefDnsSearchStr: "",
PeerDefEndpoint: "",
PeerDefAllowedIPsStr: "",
PeerDefAllowedIPsStr: domain.CidrsToString(networks),
PeerDefMtu: 1420,
PeerDefPersistentKeepalive: 16,
PeerDefFirewallMark: 0,
@ -358,7 +362,7 @@ func (m Manager) PrepareInterface(ctx context.Context) (*domain.Interface, error
func (m Manager) getNewInterfaceName(ctx context.Context) (domain.InterfaceIdentifier, error) {
namePrefix := "wg"
nameSuffix := 1
nameSuffix := 0
existingInterfaces, err := m.db.GetAllInterfaces(ctx)
if err != nil {

View File

@ -30,6 +30,7 @@ type Config struct {
StartCidrV4 string `yaml:"start_cidr_v4"`
StartCidrV6 string `yaml:"start_cidr_v6"`
UseIpV6 bool `yaml:"use_ip_v6"`
ConfigStoragePath string `yaml:"config_storage_path"` // keep empty to disable config export to file
} `yaml:"advanced"`
Statistics struct {
@ -67,6 +68,7 @@ func defaultConfig() *Config {
ListeningAddress: ":8888",
SessionSecret: "verysecret",
SessionIdentifier: "wgPortalSession",
ExternalUrl: "http://localhost:8888",
}
cfg.Auth.CallbackUrlPrefix = "/api/v0"

View File

@ -15,6 +15,7 @@ type NetlinkClient interface {
AddrReplace(link netlink.Link, addr *netlink.Addr) error
AddrAdd(link netlink.Link, addr *netlink.Addr) error
AddrList(link netlink.Link) ([]netlink.Addr, error)
AddrDel(link netlink.Link, addr *netlink.Addr) error
}
type NetlinkManager struct {
@ -61,3 +62,7 @@ func (n NetlinkManager) AddrList(link netlink.Link) ([]netlink.Addr, error) {
return ipAddresses, nil
}
func (n NetlinkManager) AddrDel(link netlink.Link, addr *netlink.Addr) error {
return netlink.AddrDel(link, addr)
}

View File

@ -104,10 +104,13 @@ func SliceContains[T comparable](slice []T, needle T) bool {
func SliceString(str string) []string {
strParts := strings.Split(str, ",")
stringSlice := make([]string, len(strParts))
stringSlice := make([]string, 0, len(strParts))
for i, s := range strParts {
stringSlice[i] = strings.TrimSpace(s)
for _, s := range strParts {
trimmed := strings.TrimSpace(s)
if trimmed != "" {
stringSlice = append(stringSlice, trimmed)
}
}
return stringSlice