xcratch-create 0.5.6 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/create.js CHANGED
@@ -75,12 +75,7 @@ async function fetchTemplate() {
75
75
 
76
76
  const options = {
77
77
  files: [
78
- 'README.md',
79
- 'package.json',
80
- 'src/**/*.js',
81
- 'src/**/*.jsx',
82
- 'src/**/*.json',
83
- 'projects/example/project.json',
78
+ './**/*',
84
79
  ],
85
80
  from: [
86
81
  /<<account>>/g,
@@ -111,7 +106,7 @@ async function resetRepo() {
111
106
  const examplePath = path.resolve(outputDir, 'projects/example');
112
107
  zip.addLocalFolder(examplePath);
113
108
  zip.writeZip(path.resolve(outputDir, 'projects/example.sb3'));
114
- fs.rmdirSync(examplePath, {recursive:true, force:true});
109
+ fs.rm(examplePath, {recursive:true, force:true});
115
110
  } catch (error) {
116
111
  console.error('Error occurred:', error);
117
112
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xcratch-create",
3
- "version": "0.5.6",
3
+ "version": "1.0.1",
4
4
  "description": "Support tool to create new extension for Xcratch",
5
5
  "bin": {
6
6
  "xcratch-create": "./bin/create.js"
@@ -27,8 +27,8 @@
27
27
  },
28
28
  "homepage": "https://github.com/xcratch/xcratch-create#readme",
29
29
  "dependencies": {
30
- "adm-zip": "^0.5.5",
31
- "fs-extra": "^10.0.0",
32
- "replace-in-file": "^6.2.0"
30
+ "adm-zip": "^0.5.10",
31
+ "fs-extra": "^11.2.0",
32
+ "replace-in-file": "^7.1.0"
33
33
  }
34
34
  }
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ require: ["@babel/register", "./test/setup-test.js"],
3
+ spec: "test/unit/**/*.test.js",
4
+ };
@@ -20,15 +20,24 @@ This extension can be used with other extension in [Xcratch](https://xcratch.git
20
20
  ```
21
21
  https://<<account>>.github.io/<<repo>>/dist/<<extensionID>>.mjs
22
22
  ```
23
+ 5. Click 'OK' button
24
+ 6. Now you can use the blocks of this extension
25
+
23
26
 
24
27
  ## Development
25
28
 
26
- ### Register on the local Xcratch
29
+ ### Install Dependencies
30
+
31
+ ```sh
32
+ npm install
33
+ ```
34
+
35
+ ### Setup Development Environment
27
36
 
28
- Run register script to install this extension on the local Xcratch for testing.
37
+ Change ```vmSrcOrg``` to your local ```scratch-vm``` directory in ```./scripts/setup-dev.js``` then run setup-dev script to setup development environment.
29
38
 
30
39
  ```sh
31
- npm run register
40
+ npm run setup-dev
32
41
  ```
33
42
 
34
43
  ### Bundle into a Module
@@ -39,6 +48,23 @@ Run build script to bundle this extension into a module file which could be load
39
48
  npm run build
40
49
  ```
41
50
 
51
+ ### Watch and Bundle
52
+
53
+ Run watch script to watch the changes of source files and bundle automatically.
54
+
55
+ ```sh
56
+ npm run watch
57
+ ```
58
+
59
+ ### Test
60
+
61
+ Run test script to test this extension.
62
+
63
+ ```sh
64
+ npm run test
65
+ ```
66
+
67
+
42
68
  ## 🏠 Home Page
43
69
 
44
70
  Open this page from [https://<<account>>.github.io/<<repo>>/](https://<<account>>.github.io/<<repo>>/)
@@ -0,0 +1,18 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ "targets": {
7
+ "node": true
8
+ },
9
+ "useBuiltIns": "entry",
10
+ "corejs": {
11
+ "version": "3",
12
+ "proposals": true
13
+ }
14
+ }
15
+ ],
16
+ "@babel/preset-react"
17
+ ]
18
+ }
@@ -2,3 +2,4 @@ node_modules/
2
2
 
3
3
  src/vm/*
4
4
  !src/vm/extensions/
5
+ !src/vm/.*
@@ -2,11 +2,35 @@
2
2
  "name": "<<repo>>",
3
3
  "version": "0.0.0",
4
4
  "scripts": {
5
- "register": "npx xcratch-register --id=<<extensionID>> --gui=../scratch-gui --block=./src/vm/extensions/block --entry=./src/gui/lib/libraries/extensions/entry --core --link --use=extension-support util",
6
- "build": "npx xcratch-build --module=<<extensionID>> --gui=../scratch-gui --block=./src/vm/extensions/block --entry=./src/gui/lib/libraries/extensions/entry"
5
+ "setup-dev": "node ./scripts/setup-dev.mjs",
6
+ "build": "rollup -c ./scripts/rollup.config.mjs",
7
+ "watch": "rollup -c ./scripts/rollup.config.mjs --watch",
8
+ "test": "mocha"
7
9
  },
8
10
  "devDependencies": {
9
- "xcratch-build": "^0.4.0",
10
- "xcratch-register": "^0.4.2"
11
+ "@babel/core": "^7.24.0",
12
+ "@babel/eslint-parser": "^7.23.10",
13
+ "@babel/plugin-transform-react-jsx": "^7.23.4",
14
+ "@babel/plugin-transform-runtime": "^7.24.0",
15
+ "@babel/preset-env": "^7.24.0",
16
+ "@babel/preset-react": "^7.23.3",
17
+ "@babel/register": "^7.23.7",
18
+ "@rollup/plugin-babel": "^6.0.4",
19
+ "@rollup/plugin-commonjs": "^25.0.7",
20
+ "@rollup/plugin-image": "^3.0.3",
21
+ "@rollup/plugin-json": "^6.1.0",
22
+ "@rollup/plugin-multi-entry": "^6.0.1",
23
+ "@rollup/plugin-node-resolve": "^15.2.3",
24
+ "chai": "^5.1.0",
25
+ "core-js": "^3.36.0",
26
+ "eslint": "^8.57.0",
27
+ "eslint-config-scratch": "^9.0.8",
28
+ "eslint-plugin-import": "^2.29.1",
29
+ "eslint-plugin-mocha": "^10.4.1",
30
+ "fs-extra": "^11.2.0",
31
+ "mocha": "^10.3.0",
32
+ "rollup": "^4.12.1",
33
+ "rollup-plugin-node-globals": "^1.4.0",
34
+ "rollup-plugin-polyfill-node": "^0.13.0"
11
35
  }
12
36
  }
@@ -0,0 +1,252 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ version="1.1"
11
+ width="131.71837"
12
+ height="49.999924"
13
+ viewBox="0 0 131.71837 49.999925"
14
+ id="svg895"
15
+ sodipodi:docname="cat-top-2-a.svg"
16
+ inkscape:version="1.0 (4035a4f, 2020-05-01)">
17
+ <metadata
18
+ id="metadata901">
19
+ <rdf:RDF>
20
+ <cc:Work
21
+ rdf:about="">
22
+ <dc:format>image/svg+xml</dc:format>
23
+ <dc:type
24
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25
+ <dc:title></dc:title>
26
+ </cc:Work>
27
+ </rdf:RDF>
28
+ </metadata>
29
+ <defs
30
+ id="defs899" />
31
+ <sodipodi:namedview
32
+ fit-margin-bottom="0"
33
+ fit-margin-right="0"
34
+ fit-margin-left="0"
35
+ fit-margin-top="0"
36
+ inkscape:document-rotation="0"
37
+ pagecolor="#ffffff"
38
+ bordercolor="#666666"
39
+ borderopacity="1"
40
+ objecttolerance="10"
41
+ gridtolerance="10"
42
+ guidetolerance="10"
43
+ inkscape:pageopacity="0"
44
+ inkscape:pageshadow="2"
45
+ inkscape:window-width="1730"
46
+ inkscape:window-height="909"
47
+ id="namedview897"
48
+ showgrid="false"
49
+ inkscape:zoom="4.1340901"
50
+ inkscape:cx="71.579569"
51
+ inkscape:cy="50.556923"
52
+ inkscape:window-x="0"
53
+ inkscape:window-y="25"
54
+ inkscape:window-maximized="0"
55
+ inkscape:current-layer="g891" />
56
+ <g
57
+ transform="translate(-167.40244,-152.39549)"
58
+ id="g893">
59
+ <g
60
+ data-paper-data="{&quot;isPaintingLayer&quot;:true}"
61
+ stroke-linecap="round"
62
+ stroke-linejoin="round"
63
+ stroke-miterlimit="1.5"
64
+ stroke-dasharray="none"
65
+ stroke-dashoffset="0"
66
+ style="mix-blend-mode:normal"
67
+ id="g891">
68
+ <path
69
+ d="m 240.55387,197.27305 c -2.18151,-0.55337 -2.13923,0.42792 -3.6105,1.2197 -2.40982,1.29213 -5.68208,1.608 -8.34559,1.3174 -5.99492,-0.65702 -10.45943,-2.64238 -12.54796,-8.22361 -3.06172,-8.19579 7.48314,-17.83954 15.46512,-14.93773 8.13418,2.95402 2.99324,5.62586 17.43523,12.41835 2.78186,1.30732 8.92053,3.49566 10.4087,6.97612 0.97239,2.26416 -0.76099,5.24518 -3.5513,4.95371 -2.12233,-0.22069 -2.88333,-0.33694 -4.95491,-0.8558 -3.45832,-0.86674 -6.84051,-1.99208 -10.29879,-2.86812 z"
70
+ fill="#faa51d"
71
+ fill-rule="evenodd"
72
+ stroke="#c48800"
73
+ stroke-width="2.45913"
74
+ id="path833" />
75
+ <path
76
+ d="m 244.66183,154.82932 c 2.07157,-0.51889 2.83258,-0.63511 4.95492,-0.85582 2.7903,-0.29143 4.52368,2.68955 3.55129,4.95372 -1.48818,3.48046 -7.62686,5.66885 -10.4087,6.97612 -14.44197,6.79249 -9.30106,9.46433 -17.43523,12.41836 -7.98199,2.90182 -18.52682,-6.74193 -15.46508,-14.93773 2.08848,-5.58124 6.553,-7.5666 12.54797,-8.22362 2.66345,-0.2906 5.93574,0.0251 8.34553,1.3174 1.47125,0.7918 1.42898,1.77308 3.61052,1.21967 3.45827,-0.87599 6.84048,-2.00137 10.29879,-2.86809 z"
77
+ fill="#faa51d"
78
+ fill-rule="evenodd"
79
+ stroke="#c48800"
80
+ stroke-width="2.45913"
81
+ id="path835" />
82
+ <path
83
+ d="m 262.72581,183.84987 c 0.92165,0.74881 2.44365,2.79314 3.47523,3.36674 1.2345,0.67978 5.55526,0.84991 6.83202,1.10513 5.20857,1.03777 7.31398,1.81439 11.9476,4.40201 2.51973,1.40752 4.67589,4.06673 2.7142,6.60044 -0.54959,0.70332 -1.52197,1.81266 -3.97406,0.9122 -3.8726,-1.42689 -5.25084,-2.80575 -9.26722,-3.89404 -3.3991,-0.92066 -7.16179,1.50776 -10.30723,1.99882 -5.28469,0.82297 -10.73004,-2.16558 -13.67251,-6.42354 -1.84332,-2.66847 -1.33599,-6.9222 1.14992,-9.03728 4.09245,-3.4948 7.66914,-1.82951 11.10205,0.96951 z"
84
+ fill="#faa51d"
85
+ fill-rule="evenodd"
86
+ stroke="#c48800"
87
+ stroke-width="2.45913"
88
+ id="path837" />
89
+ <path
90
+ d="m 257.81459,171.37995 c -2.48591,-2.11508 -2.99324,-6.3688 -1.14996,-9.0373 2.94253,-4.25792 8.38788,-7.24649 13.67255,-6.42355 3.14545,0.49109 6.90812,2.91949 10.30721,1.99885 4.01637,-1.08829 5.39464,-2.46716 9.26724,-3.89404 2.45211,-0.90045 3.42449,0.2089 3.97409,0.91222 1.96166,2.5337 -0.19449,5.19293 -2.71421,6.60045 -4.6336,2.5876 -6.73903,3.36423 -11.94761,4.40196 -1.27677,0.25522 -5.59752,0.42539 -6.83203,1.10514 -1.03159,0.5736 -2.55357,2.61792 -3.4752,3.36675 -3.43293,2.79905 -7.00962,4.46431 -11.10208,0.96952 z"
91
+ fill="#faa51d"
92
+ fill-rule="evenodd"
93
+ stroke="#c48800"
94
+ stroke-width="2.45913"
95
+ id="path839" />
96
+ <path
97
+ d="m 270.95478,169.87237 c 1.91939,4.15432 1.4882,9.47444 0.40586,12.22544 -1.73336,4.38938 -9.41097,7.27516 -13.52032,9.19145 -4.27004,1.99546 -10.18886,5.8053 -17.08851,5.41699 -8.15113,-0.45823 -14.56883,-3.53187 -18.54292,-6.45388 -4.08402,-3.00795 -9.67309,-4.19983 -9.69847,-12.83195 -0.008,-7.43939 4.86193,-9.33546 9.14884,-12.10754 5.38617,-3.48807 9.95214,-6.1363 17.39296,-6.44631 8.47241,-0.35208 15.35518,2.96751 20.39468,4.73218 3.33143,1.16659 9.68148,2.3307 11.50787,6.27363 z"
98
+ fill="#faa51d"
99
+ fill-rule="evenodd"
100
+ stroke="#c48800"
101
+ stroke-width="2.50587"
102
+ id="path841" />
103
+ <g
104
+ style="stroke-width:1.10793"
105
+ transform="matrix(0.90430677,0,0,0.9008562,16.136991,15.23707)"
106
+ data-paper-data="{&quot;index&quot;:null}"
107
+ fill-rule="evenodd"
108
+ id="g847">
109
+ <path
110
+ d="m 221.75393,187.02883 c -1.20618,-1.00421 -2.05706,-0.26274 -4.33852,0.48528 -2.80507,0.9182 -6.30113,2.86586 -10.00009,4.25811 -4.09915,1.54279 -8.0917,2.44602 -12.016,2.57038 -3.67184,0.11688 -12.56393,-1.10333 -18.75286,-4.47129 -1.40347,-0.76392 -4.50495,-2.61433 -6.07673,-4.25156 -1.85883,-1.93457 -1.98131,-2.88642 -1.92802,-3.93552 0.0795,-1.57458 0.85462,-3.25108 2.22723,-4.17488 1.71764,-1.15662 4.70129,-0.29641 7.84859,1.86537 2.68446,1.84293 5.96734,4.07016 10.52558,4.76115 9.05571,1.37261 15.37835,-2.30858 18.05252,-3.54001 3.51663,-1.6204 6.11786,-2.89671 8.96034,-4.36376 1.43994,-0.74802 3.61854,-2.1702 4.40396,-4.1057"
111
+ fill="#faa51d"
112
+ stroke="#c48800"
113
+ stroke-width="2.72453"
114
+ id="path843" />
115
+ <path
116
+ d="m 182.42972,191.03319 c -3.69567,-1.11702 -11.43001,-4.10855 -12.53548,-8.56531 -0.70018,-2.82491 0.77982,-3.99028 2.69902,-4.33675 0.81136,-0.14659 2.25903,0.16627 4.26023,1.27171 2.78575,1.53856 4.15458,3.27667 7.73276,4.61501 3.28565,1.22903 -0.49675,-0.50377 -1.44058,3.47126 -0.83974,3.53577 2.7345,4.58697 -0.71595,3.54407 z"
117
+ fill="#ffffff"
118
+ stroke="none"
119
+ stroke-width="0.0918146"
120
+ id="path845" />
121
+ </g>
122
+ <g
123
+ style="stroke-width:1.10793"
124
+ transform="matrix(0.90430677,0,0,0.9008562,16.136991,15.23707)"
125
+ id="g889">
126
+ <g
127
+ style="stroke-width:1.10792"
128
+ fill-rule="nonzero"
129
+ id="g853">
130
+ <path
131
+ d="m 310.2053,180.06419 c 0.0252,2.58028 -0.90746,5.80582 -3.47205,7.76398 -1.71733,1.31052 -4.49561,6.089 -8.01269,9.78514 -3.08737,3.24428 -8.26115,4.3184 -13.47458,2.75871 -17.23127,-5.1545 -14.51751,-38.31385 -0.002,-41.58436 5.42337,-1.22187 10.11758,0.0822 13.47481,3.78771 2.79281,3.08285 6.32948,8.61594 8.01348,9.86927 2.43367,1.81152 3.4427,4.55644 3.4726,7.61954 z"
132
+ fill="#faa51d"
133
+ stroke="#c48800"
134
+ stroke-width="2.76937"
135
+ id="path849" />
136
+ <path
137
+ d="m 309.44912,180.03723 c 0.0357,3.71925 -1.06263,4.87105 -3.09665,7.02623 -1.54464,1.15248 -3.65423,4.20432 -7.52506,8.42795 -3.1928,-4.51859 7.16534,-10.24719 7.16538,-15.45403 3e-5,-5.20677 -11.24178,-11.15804 -7.10093,-15.40079 4.04089,3.90677 5.50685,7.02323 7.26833,8.79959 1.94244,1.89138 3.24786,2.35145 3.28893,6.60105 z"
138
+ fill="#ffffff"
139
+ stroke="none"
140
+ stroke-width="0.0762813"
141
+ id="path851"
142
+ sodipodi:nodetypes="cccsccc" />
143
+ </g>
144
+ <path
145
+ d="m 307.38042,182.93473 c -0.6068,0 -2.16895,-1.44664 -2.16627,-2.61517 0.003,-1.14437 1.55947,-2.63159 2.16627,-2.63159 0.60681,0 1.42453,0.17805 1.47457,2.63159 0.0429,2.15491 -0.86776,2.61517 -1.47457,2.61517 z"
146
+ fill="#5e4a42"
147
+ fill-rule="evenodd"
148
+ stroke="none"
149
+ stroke-width="0.0852113"
150
+ id="path855" />
151
+ <g
152
+ style="stroke-width:1.10793"
153
+ id="g861">
154
+ <path
155
+ d="m 285.05286,198.9878 c -1.14657,3.61479 -14.64556,9.19625 -16.19807,6.69821 -1.55251,-2.49804 4.18358,-20.57026 6.88302,-21.68645"
156
+ fill="#faa51d"
157
+ fill-rule="nonzero"
158
+ stroke="#c48800"
159
+ stroke-width="2.88894"
160
+ id="path857" />
161
+ <path
162
+ d="m 272.64002,202.17072 c 0.44161,-2.67022 2.02488,-9.27921 4.6256,-11.53911 2.34855,-2.04064 3.16025,3.53472 6.03196,7.94488 -2.16162,2.93019 -11.23842,7.11641 -10.65756,3.59422 z"
163
+ fill="#ffffff"
164
+ fill-rule="evenodd"
165
+ stroke="none"
166
+ stroke-width="0.155299"
167
+ id="path859" />
168
+ </g>
169
+ <g
170
+ style="stroke-width:1.10793"
171
+ id="g867">
172
+ <path
173
+ d="m 275.73781,176.00992 c -2.69944,-1.11619 -8.43553,-19.18841 -6.88302,-21.68645 1.55251,-2.49804 15.0515,3.08342 16.19807,6.69821"
174
+ fill="#faa51d"
175
+ fill-rule="nonzero"
176
+ stroke="#c48800"
177
+ stroke-width="2.88894"
178
+ id="path863" />
179
+ <path
180
+ d="m 283.29758,161.43279 c -2.87171,4.41017 -3.68341,9.98552 -6.03196,7.94488 -2.60072,-2.2599 -4.18399,-8.86889 -4.6256,-11.53911 -0.58086,-3.52219 8.49594,0.66403 10.65756,3.59423 z"
181
+ fill="#ffffff"
182
+ fill-rule="evenodd"
183
+ stroke="none"
184
+ stroke-width="0.155299"
185
+ id="path865" />
186
+ </g>
187
+ <path
188
+ d="m 312.24529,190.75061 c -1.36513,-0.80412 -3.20713,-2.53672 -4.30111,-4.02341"
189
+ fill="none"
190
+ fill-rule="evenodd"
191
+ stroke="#000000"
192
+ stroke-width="1.36743"
193
+ id="path869" />
194
+ <path
195
+ d="m 310.3328,193.53618 c -1.38383,-0.89389 -3.45024,-3.78498 -4.22631,-5.82146"
196
+ fill="none"
197
+ fill-rule="evenodd"
198
+ stroke="#000000"
199
+ stroke-width="1.36743"
200
+ id="path871" />
201
+ <path
202
+ d="m 307.94418,173.98929 c 1.09398,-1.48669 2.93598,-3.21929 4.30111,-4.02341"
203
+ fill="none"
204
+ fill-rule="evenodd"
205
+ stroke="#000000"
206
+ stroke-width="1.36743"
207
+ id="path873" />
208
+ <path
209
+ d="m 306.10649,173.00177 c 0.77607,-2.03648 2.84248,-4.92758 4.22631,-5.82147"
210
+ fill="none"
211
+ fill-rule="evenodd"
212
+ stroke="#000000"
213
+ stroke-width="1.36743"
214
+ id="path875" />
215
+ <g
216
+ style="stroke-width:1.10792"
217
+ fill-rule="evenodd"
218
+ id="g881">
219
+ <path
220
+ d="m 300.59193,190.34949 c -1.24973,1.60082 -3.35451,2.04626 -4.70117,0.99495 -1.34666,-1.05131 -1.42525,-3.20129 -0.17553,-4.80211 1.24973,-1.60082 3.35451,-2.04626 4.70118,-0.99495 1.34666,1.05131 1.42525,3.20129 0.17552,4.80211 z"
221
+ fill="#ffffff"
222
+ stroke="#faa51d"
223
+ stroke-width="0.222615"
224
+ id="path877" />
225
+ <path
226
+ d="m 300.32878,189.93995 c -0.98113,1.25677 -2.63357,1.60648 -3.69081,0.78111 -1.05725,-0.82537 -1.11894,-2.51328 -0.13781,-3.77005 0.98113,-1.25677 2.63357,-1.60648 3.69081,-0.78111 1.05725,0.82537 1.11894,2.51328 0.13781,3.77005 z"
227
+ fill="#000000"
228
+ stroke="none"
229
+ stroke-width="0.16968"
230
+ id="path879" />
231
+ </g>
232
+ <g
233
+ style="stroke-width:1.10792"
234
+ fill-rule="evenodd"
235
+ id="g887">
236
+ <path
237
+ d="m 300.4164,175.18194 c -1.34666,1.05131 -3.45145,0.60586 -4.70118,-0.99495 -1.24973,-1.60082 -1.17114,-3.7508 0.17553,-4.80211 1.34666,-1.05131 3.45145,-0.60586 4.70117,0.99495 1.24973,1.60082 1.17114,3.7508 -0.17552,4.80211 z"
238
+ fill="#ffffff"
239
+ stroke="#faa51d"
240
+ stroke-width="0.222615"
241
+ id="path883" />
242
+ <path
243
+ d="m 300.19097,174.55943 c -1.05725,0.82537 -2.70968,0.47565 -3.69081,-0.78111 -0.98113,-1.25677 -0.91944,-2.94467 0.1378,-3.77004 1.05725,-0.82537 2.70968,-0.47565 3.69081,0.78111 0.98113,1.25677 0.91944,2.94467 -0.13781,3.77004 z"
244
+ fill="#000000"
245
+ stroke="none"
246
+ stroke-width="0.16968"
247
+ id="path885" />
248
+ </g>
249
+ </g>
250
+ </g>
251
+ </g>
252
+ </svg>