lesli_guard 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +38 -0
- data/app/assets/config/lesli_guard_manifest.js +38 -0
- data/app/assets/images/lesli_guard/guard-logo.svg +160 -0
- data/app/assets/javascripts/lesli_guard/application.js +4787 -0
- data/app/assets/stylesheets/lesli_guard/application.scss +33 -0
- data/app/assets/stylesheets/lesli_guard/dashboards.scss +32 -0
- data/app/assets/stylesheets/lesli_guard/descriptors.scss +32 -0
- data/app/assets/stylesheets/lesli_guard/roles.scss +32 -0
- data/app/assets/stylesheets/lesli_guard/system_controller.scss +32 -0
- data/app/assets/stylesheets/lesli_guard/users.scss +67 -0
- data/app/controllers/lesli_guard/accounts_controller.rb +60 -0
- data/app/controllers/lesli_guard/application_controller.rb +37 -0
- data/app/controllers/lesli_guard/dashboard/components_controller.rb +60 -0
- data/app/controllers/lesli_guard/dashboards_controller.rb +36 -0
- data/app/controllers/lesli_guard/descriptor/activities_controller.rb +122 -0
- data/app/controllers/lesli_guard/descriptor/privileges_controller.rb +112 -0
- data/app/controllers/lesli_guard/descriptors_controller.rb +129 -0
- data/app/controllers/lesli_guard/role/activities_controller.rb +76 -0
- data/app/controllers/lesli_guard/role/descriptors_controller.rb +97 -0
- data/app/controllers/lesli_guard/role/privileges_controller.rb +47 -0
- data/app/controllers/lesli_guard/roles_controller.rb +185 -0
- data/app/controllers/lesli_guard/user/roles_controller.rb +98 -0
- data/app/controllers/lesli_guard/user/sessions_controller.rb +71 -0
- data/app/controllers/lesli_guard/users_controller.rb +206 -0
- data/app/helpers/lesli_guard/accounts_helper.rb +4 -0
- data/app/helpers/lesli_guard/application_helper.rb +4 -0
- data/app/helpers/lesli_guard/dashboards_helper.rb +4 -0
- data/app/helpers/lesli_guard/descriptor/activities_helper.rb +4 -0
- data/app/helpers/lesli_guard/descriptor/privileges_helper.rb +4 -0
- data/app/helpers/lesli_guard/descriptors_helper.rb +4 -0
- data/app/helpers/lesli_guard/role/activities_helper.rb +4 -0
- data/app/helpers/lesli_guard/role/descriptors_helper.rb +4 -0
- data/app/helpers/lesli_guard/role/privileges_helper.rb +4 -0
- data/app/helpers/lesli_guard/roles_helper.rb +4 -0
- data/app/jobs/lesli_guard/application_job.rb +37 -0
- data/app/mailers/lesli_guard/application_mailer.rb +39 -0
- data/app/models/lesli_guard/account.rb +43 -0
- data/app/models/lesli_guard/application_record.rb +37 -0
- data/app/models/lesli_guard/dashboard/component.rb +42 -0
- data/app/models/lesli_guard/dashboard.rb +58 -0
- data/app/models/lesli_guard/descriptor/activity.rb +40 -0
- data/app/models/lesli_guard/descriptor/privilege.rb +40 -0
- data/app/models/lesli_guard/descriptor.rb +41 -0
- data/app/models/lesli_guard/role/activity.rb +40 -0
- data/app/services/lesli_guard/descriptor_privilege_service.rb +74 -0
- data/app/services/lesli_guard/descriptor_service.rb +152 -0
- data/app/services/lesli_guard/role_descriptor_service.rb +61 -0
- data/app/services/lesli_guard/role_service.rb +215 -0
- data/app/services/lesli_guard/user_service.rb +305 -0
- data/app/views/lesli_guard/accounts/_account.html.erb +2 -0
- data/app/views/lesli_guard/accounts/_form.html.erb +17 -0
- data/app/views/lesli_guard/accounts/edit.html.erb +10 -0
- data/app/views/lesli_guard/accounts/index.html.erb +14 -0
- data/app/views/lesli_guard/accounts/new.html.erb +9 -0
- data/app/views/lesli_guard/accounts/show.html.erb +10 -0
- data/app/views/lesli_guard/dashboards/show.html.erb +1 -0
- data/app/views/lesli_guard/descriptor/activities/_form.html.erb +32 -0
- data/app/views/lesli_guard/descriptor/activities/edit.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/activities/index.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/activities/new.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/activities/show.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/privileges/_form.html.erb +32 -0
- data/app/views/lesli_guard/descriptor/privileges/edit.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/privileges/index.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/privileges/new.html.erb +34 -0
- data/app/views/lesli_guard/descriptor/privileges/show.html.erb +34 -0
- data/app/views/lesli_guard/descriptors/_form.html.erb +32 -0
- data/app/views/lesli_guard/descriptors/edit.html.erb +34 -0
- data/app/views/lesli_guard/descriptors/index.html.erb +34 -0
- data/app/views/lesli_guard/descriptors/new.html.erb +34 -0
- data/app/views/lesli_guard/descriptors/show.html.erb +34 -0
- data/app/views/lesli_guard/partials/_engine-navigation.html.erb +38 -0
- data/app/views/lesli_guard/role/activities/_form.html.erb +32 -0
- data/app/views/lesli_guard/role/activities/edit.html.erb +34 -0
- data/app/views/lesli_guard/role/activities/index.html.erb +34 -0
- data/app/views/lesli_guard/role/activities/new.html.erb +34 -0
- data/app/views/lesli_guard/role/activities/show.html.erb +34 -0
- data/app/views/lesli_guard/role/descriptors/_form.html.erb +32 -0
- data/app/views/lesli_guard/role/descriptors/edit.html.erb +34 -0
- data/app/views/lesli_guard/role/descriptors/index.html.erb +34 -0
- data/app/views/lesli_guard/role/descriptors/new.html.erb +34 -0
- data/app/views/lesli_guard/role/descriptors/show.html.erb +34 -0
- data/app/views/lesli_guard/role/privileges/_form.html.erb +32 -0
- data/app/views/lesli_guard/role/privileges/edit.html.erb +34 -0
- data/app/views/lesli_guard/role/privileges/index.html.erb +34 -0
- data/app/views/lesli_guard/role/privileges/new.html.erb +34 -0
- data/app/views/lesli_guard/role/privileges/show.html.erb +34 -0
- data/app/views/lesli_guard/roles/edit.html.erb +34 -0
- data/app/views/lesli_guard/roles/index.html.erb +34 -0
- data/app/views/lesli_guard/roles/new.html.erb +34 -0
- data/app/views/lesli_guard/roles/show.html.erb +34 -0
- data/app/views/lesli_guard/users/edit.html.erb +10 -0
- data/app/views/lesli_guard/users/index.html.erb +34 -0
- data/app/views/lesli_guard/users/new.html.erb +34 -0
- data/app/views/lesli_guard/users/show.html.erb +1 -0
- data/config/locales/translations.en.yml +43 -0
- data/config/locales/translations.es.yml +43 -0
- data/config/routes.rb +90 -0
- data/db/migrate/v1/0801000110_create_lesli_guard_accounts.rb +42 -0
- data/db/migrate/v1/0801050110_create_lesli_guard_dashboards.rb +51 -0
- data/db/migrate/v1/0801050210_create_lesli_guard_dashboard_components.rb +53 -0
- data/lib/lesli_guard/engine.rb +18 -0
- data/lib/lesli_guard/version.rb +4 -0
- data/lib/lesli_guard.rb +6 -0
- data/lib/tasks/lesli_guard_tasks.rake +50 -0
- data/lib/vue/application.js +112 -0
- data/lib/vue/apps/descriptors/components/form.vue +136 -0
- data/lib/vue/apps/descriptors/edit.vue +83 -0
- data/lib/vue/apps/descriptors/index.vue +113 -0
- data/lib/vue/apps/descriptors/new.vue +69 -0
- data/lib/vue/apps/descriptors/show.vue +233 -0
- data/lib/vue/apps/roles/components/descriptors.vue +81 -0
- data/lib/vue/apps/roles/components/form.vue +253 -0
- data/lib/vue/apps/roles/components/privilegeCustom.vue +86 -0
- data/lib/vue/apps/roles/components/privilegeStandard.vue +196 -0
- data/lib/vue/apps/roles/edit.vue +118 -0
- data/lib/vue/apps/roles/index.vue +168 -0
- data/lib/vue/apps/roles/logs.vue +110 -0
- data/lib/vue/apps/roles/new.vue +86 -0
- data/lib/vue/apps/roles/show.vue +109 -0
- data/lib/vue/apps/users/components/information-card.vue +107 -0
- data/lib/vue/apps/users/components/information-form.vue +176 -0
- data/lib/vue/apps/users/components/integrations-information.vue +61 -0
- data/lib/vue/apps/users/components/management-roles.vue +107 -0
- data/lib/vue/apps/users/components/management-security.vue +113 -0
- data/lib/vue/apps/users/components/management-sessions.vue +101 -0
- data/lib/vue/apps/users/components/management-settings.vue +93 -0
- data/lib/vue/apps/users/index.vue +207 -0
- data/lib/vue/apps/users/new.vue +181 -0
- data/lib/vue/apps/users/show.vue +131 -0
- data/lib/vue/stores/descriptor.js +117 -0
- data/lib/vue/stores/descriptors.js +156 -0
- data/lib/vue/stores/role.js +203 -0
- data/lib/vue/stores/roles.js +58 -0
- data/lib/vue/stores/translations.json +98 -0
- data/lib/vue/stores/user.js +331 -0
- data/lib/vue/stores/users.js +176 -0
- data/license +674 -0
- data/readme.md +76 -0
- metadata +199 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1b8ada431e57cbf285f80788366b8a98fc1375e500977ec64ca36cd7204eae22
|
4
|
+
data.tar.gz: 7f733777b5688d4feac51a23ff491d1829c71cf8e981db11adc7bf6de558507f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d7c8654a25a38cdfdc1aa1addb063c4bea7650fe457a0caff1ed225b308230bf2bdd344a831ed26b37bd9b5f7b18c6604a288068e3b60d5e460ca0ce41f3d97b
|
7
|
+
data.tar.gz: 0d763eaac33d92fc5f86083e0f1387a8aea39d2bdd5c4d83f4ccef3d1cd9bda404bb82210cd1cdc810d3f3daf27d82c317c0c2202c4e1c544ff04694037fdc2f
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS development platform.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
|
32
|
+
=end
|
33
|
+
|
34
|
+
require "bundler/setup"
|
35
|
+
|
36
|
+
load "rails/tasks/statistics.rake"
|
37
|
+
|
38
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS development platform.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
*/
|
32
|
+
|
33
|
+
//= link_tree ../images/lesli_guard .png
|
34
|
+
//= link_tree ../images/lesli_guard .jpg
|
35
|
+
//= link_tree ../images/lesli_guard .svg
|
36
|
+
|
37
|
+
//= link lesli_guard/application.css
|
38
|
+
//= link lesli_guard/application.js
|
@@ -0,0 +1,160 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
enable-background="new 0 0 128 128"
|
4
|
+
id="Layer_1"
|
5
|
+
version="1.1"
|
6
|
+
viewBox="0 0 72 72"
|
7
|
+
xml:space="preserve"
|
8
|
+
sodipodi:docname="vault-logo.svg"
|
9
|
+
width="72"
|
10
|
+
height="72"
|
11
|
+
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
13
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
14
|
+
xmlns="http://www.w3.org/2000/svg"
|
15
|
+
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
16
|
+
id="defs69" /><sodipodi:namedview
|
17
|
+
id="namedview67"
|
18
|
+
pagecolor="#ffffff"
|
19
|
+
bordercolor="#000000"
|
20
|
+
borderopacity="0.25"
|
21
|
+
inkscape:showpageshadow="2"
|
22
|
+
inkscape:pageopacity="0.0"
|
23
|
+
inkscape:pagecheckerboard="0"
|
24
|
+
inkscape:deskcolor="#d1d1d1"
|
25
|
+
showgrid="false"
|
26
|
+
inkscape:lockguides="true"
|
27
|
+
inkscape:zoom="1.84375"
|
28
|
+
inkscape:cx="36.067797"
|
29
|
+
inkscape:cy="35.79661"
|
30
|
+
inkscape:window-width="1792"
|
31
|
+
inkscape:window-height="1002"
|
32
|
+
inkscape:window-x="0"
|
33
|
+
inkscape:window-y="25"
|
34
|
+
inkscape:window-maximized="0"
|
35
|
+
inkscape:current-layer="g64" /><g
|
36
|
+
id="g64"
|
37
|
+
transform="translate(-28,-28)"><g
|
38
|
+
id="g62"><path
|
39
|
+
d="M 90.4,100 H 37.6 C 32.3,100 28,95.7 28,90.4 V 37.6 C 28,32.3 32.3,28 37.6,28 h 52.8 c 5.3,0 9.6,4.3 9.6,9.6 v 52.8 c 0,5.3 -4.3,9.6 -9.6,9.6 z"
|
40
|
+
fill="#e6e8eb"
|
41
|
+
id="path6" /><g
|
42
|
+
id="g10"><path
|
43
|
+
d="M 90.4,93 H 37.6 C 36.2,93 35,91.8 35,90.4 V 37.6 C 35,36.2 36.2,35 37.6,35 h 52.8 c 1.4,0 2.6,1.2 2.6,2.6 V 90.4 C 93,91.8 91.8,93 90.4,93 Z M 37.6,37 C 37.3,37 37,37.3 37,37.6 v 52.8 c 0,0.3 0.3,0.6 0.6,0.6 H 90.4 C 90.7,91 91,90.7 91,90.4 V 37.6 C 91,37.3 90.7,37 90.4,37 Z"
|
44
|
+
fill="#cfd5df"
|
45
|
+
id="path8" /></g><g
|
46
|
+
id="g16"><path
|
47
|
+
d="m 94,56.6 h -1.4 c -0.9,0 -1.7,-0.7 -1.7,-1.7 V 43.1 c 0,-0.9 0.7,-1.7 1.7,-1.7 H 94 c 0.9,0 1.7,0.7 1.7,1.7 V 55 c 0,0.9 -0.8,1.6 -1.7,1.6 z"
|
48
|
+
fill="#cfd5df"
|
49
|
+
id="path12" /><path
|
50
|
+
d="m 94,86.5 h -1.4 c -0.9,0 -1.7,-0.7 -1.7,-1.7 V 73 c 0,-0.9 0.7,-1.7 1.7,-1.7 H 94 c 0.9,0 1.7,0.7 1.7,1.7 v 11.8 c 0,1 -0.8,1.7 -1.7,1.7 z"
|
51
|
+
fill="#cfd5df"
|
52
|
+
id="path14" /></g><g
|
53
|
+
id="g32"><circle
|
54
|
+
cx="53.799999"
|
55
|
+
cy="64"
|
56
|
+
fill="#ffffff"
|
57
|
+
r="12.6"
|
58
|
+
id="circle18" /><circle
|
59
|
+
cx="53.799999"
|
60
|
+
cy="64"
|
61
|
+
fill="#cfd5df"
|
62
|
+
r="10.9"
|
63
|
+
id="circle20" /><circle
|
64
|
+
cx="53.799999"
|
65
|
+
cy="64"
|
66
|
+
fill="#e6e8eb"
|
67
|
+
r="8.1000004"
|
68
|
+
id="circle22" /><path
|
69
|
+
d="m 42.6,75.2 v 0 c -0.7,-0.7 -0.7,-1.9 0,-2.6 L 62.3,52.9 c 0.7,-0.7 1.9,-0.7 2.6,0 v 0 c 0.7,0.7 0.7,1.9 0,2.6 L 45.3,75.2 c -0.7,0.7 -1.9,0.7 -2.7,0 z"
|
70
|
+
fill="#454e5c"
|
71
|
+
id="path24" /><path
|
72
|
+
d="m 42.6,52.8 v 0 c 0.7,-0.7 1.9,-0.7 2.6,0 L 65,72.5 c 0.7,0.7 0.7,1.9 0,2.6 v 0 c -0.7,0.7 -1.9,0.7 -2.6,0 L 42.6,55.5 c -0.7,-0.7 -0.7,-1.9 0,-2.7 z"
|
73
|
+
fill="#454e5c"
|
74
|
+
id="path26" /><circle
|
75
|
+
cx="53.799999"
|
76
|
+
cy="64"
|
77
|
+
fill="#545e70"
|
78
|
+
r="5.8000002"
|
79
|
+
id="circle28" /><circle
|
80
|
+
cx="53.799999"
|
81
|
+
cy="64"
|
82
|
+
fill="#acb2b9"
|
83
|
+
r="3.0999999"
|
84
|
+
id="circle30" /></g><circle
|
85
|
+
cx="78.800003"
|
86
|
+
cy="63.200001"
|
87
|
+
fill="#acb2b9"
|
88
|
+
r="6.3000002"
|
89
|
+
id="circle34" /><circle
|
90
|
+
cx="78.800003"
|
91
|
+
cy="63.200001"
|
92
|
+
fill="#e6e8eb"
|
93
|
+
r="4.9000001"
|
94
|
+
id="circle36" /><circle
|
95
|
+
cx="78.800003"
|
96
|
+
cy="63.200001"
|
97
|
+
fill="#cfd5df"
|
98
|
+
r="3.5999999"
|
99
|
+
id="circle38" /><g
|
100
|
+
id="g48"><rect
|
101
|
+
fill="#cfd5df"
|
102
|
+
height="8.1000004"
|
103
|
+
width="0.30000001"
|
104
|
+
x="78.699997"
|
105
|
+
y="59.200001"
|
106
|
+
id="rect40" /><rect
|
107
|
+
fill="#cfd5df"
|
108
|
+
height="0.30000001"
|
109
|
+
width="8.1000004"
|
110
|
+
x="74.800003"
|
111
|
+
y="63"
|
112
|
+
id="rect42" /><rect
|
113
|
+
fill="#cfd5df"
|
114
|
+
height="8.1000004"
|
115
|
+
transform="matrix(0.7071,0.7071,-0.7071,0.7071,67.78,-37.2417)"
|
116
|
+
width="0.30000001"
|
117
|
+
x="78.699997"
|
118
|
+
y="59.200001"
|
119
|
+
id="rect44" /><rect
|
120
|
+
fill="#cfd5df"
|
121
|
+
height="8.1000004"
|
122
|
+
transform="matrix(-0.7071,0.7071,-0.7071,-0.7071,179.2834,52.1292)"
|
123
|
+
width="0.30000001"
|
124
|
+
x="78.699997"
|
125
|
+
y="59.200001"
|
126
|
+
id="rect46" /></g><g
|
127
|
+
id="g58"><rect
|
128
|
+
fill="#cfd5df"
|
129
|
+
height="8.1000004"
|
130
|
+
transform="matrix(0.9239,-0.3827,0.3827,0.9239,-18.1828,34.9832)"
|
131
|
+
width="0.30000001"
|
132
|
+
x="78.699997"
|
133
|
+
y="59.200001"
|
134
|
+
id="rect50" /><rect
|
135
|
+
fill="#cfd5df"
|
136
|
+
height="8.1000004"
|
137
|
+
transform="matrix(0.3827,0.9239,-0.9239,0.3827,107.0563,-33.8313)"
|
138
|
+
width="0.30000001"
|
139
|
+
x="78.699997"
|
140
|
+
y="59.200001"
|
141
|
+
id="rect52" /><rect
|
142
|
+
fill="#cfd5df"
|
143
|
+
height="8.1000004"
|
144
|
+
transform="matrix(0.9239,0.3827,-0.3827,0.9239,30.186,-25.3619)"
|
145
|
+
width="0.30000001"
|
146
|
+
x="78.699997"
|
147
|
+
y="59.200001"
|
148
|
+
id="rect54" /><rect
|
149
|
+
fill="#cfd5df"
|
150
|
+
height="8.1000004"
|
151
|
+
transform="matrix(-0.3826,0.9239,-0.9239,-0.3826,167.4025,14.5355)"
|
152
|
+
width="0.30000001"
|
153
|
+
x="78.699997"
|
154
|
+
y="59.200001"
|
155
|
+
id="rect56" /></g><circle
|
156
|
+
cx="78.800003"
|
157
|
+
cy="63.200001"
|
158
|
+
fill="#ffffff"
|
159
|
+
r="2.2"
|
160
|
+
id="circle60" /></g></g></svg>
|