leonsimon23 commited on
Commit
8f2f1a5
1 Parent(s): ad43547

Upload 8 files

Browse files
Files changed (8) hide show
  1. src/App.css +53 -0
  2. src/App.jsx +499 -0
  3. src/FullPageLoader.jsx +14 -0
  4. src/assets/react.svg +1 -0
  5. src/columns.jsx +137 -0
  6. src/index.css +90 -0
  7. src/main.jsx +10 -0
  8. src/mysvg.jsx +369 -0
src/App.css ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* #root {
2
+ max-width: 1280px;
3
+ margin: 0 auto;
4
+ padding: 2rem;
5
+ text-align: center;
6
+ }
7
+
8
+ .logo {
9
+ height: 6em;
10
+ padding: 1.5em;
11
+ will-change: filter;
12
+ transition: filter 300ms;
13
+ }
14
+ .logo:hover {
15
+ filter: drop-shadow(0 0 2em #646cffaa);
16
+ }
17
+ .logo.react:hover {
18
+ filter: drop-shadow(0 0 2em #61dafbaa);
19
+ }
20
+
21
+ @keyframes logo-spin {
22
+ from {
23
+ transform: rotate(0deg);
24
+ }
25
+ to {
26
+ transform: rotate(360deg);
27
+ }
28
+ }
29
+
30
+ @media (prefers-reduced-motion: no-preference) {
31
+ a:nth-of-type(2) .logo {
32
+ animation: logo-spin infinite 20s linear;
33
+ }
34
+ }
35
+
36
+ .card {
37
+ padding: 2em;
38
+ }
39
+
40
+ .read-the-docs {
41
+ color: #888;
42
+ } */
43
+
44
+ #root {
45
+ margin: 0 ;
46
+ }
47
+
48
+ body {
49
+ margin: 0 !important
50
+ }
51
+ html, body {
52
+ scroll-behavior: smooth;
53
+ }
src/App.jsx ADDED
@@ -0,0 +1,499 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React, { useState, useRef } from "react";
2
+ import "./App.css";
3
+ import { RQicon } from './mysvg'
4
+ import { Button, Divider, Form, Input, Layout, Space, Table, notification } from "antd";
5
+ import { Content, Footer, Header } from "antd/es/layout/layout";
6
+ import { SearchOutlined } from '@ant-design/icons';
7
+ import TextArea from "antd/es/input/TextArea";
8
+ import FullPageLoader from "./FullPageLoader";
9
+ import { answers, columns, filterColumns, paperColumns } from "./columns";
10
+
11
+ function App() {
12
+ const [loading, setLoading] = useState(false)
13
+ const contentRef = useRef();
14
+ const scrollToBottom = () => {
15
+ let elem = document.getElementById("mainContainer")
16
+ setTimeout(()=>{
17
+ elem.scroll(0,elem.scrollHeight)
18
+ }, 300)
19
+ };
20
+
21
+ const [name, setName] = useState("'My work aims to systematically identify and analyze, the literature on Large language models in software development'");
22
+ const [noOfQuestion, setNoOfQuestions] = useState(2)
23
+ const [researchQuestions, setResearchQuestions] = useState([])
24
+ const [researchQuestionApiResponse, setResearchQuestionApiResponse] = useState()
25
+ const [searchString, setSearchString] = useState('')
26
+ const [start_year, setstartYear] = useState(2023)
27
+ const [end_year, setEndYear] = useState(2020)
28
+
29
+ const generateSearchString = async (e) => {
30
+ e.preventDefault();
31
+ try {
32
+ setLoading(true)
33
+ const response = await fetch("/api/generate_search_string", {
34
+ method: "post",
35
+ headers: {
36
+ "Content-Type": "application/json",
37
+ },
38
+ body: JSON.stringify({
39
+ objective: name,
40
+ research_questions: researchQuestions
41
+ })
42
+ });
43
+ const message = await response.json();
44
+ setSearchString(
45
+ message.search_string
46
+ .replace(/^\d+\.\s*/, '') // Remove any leading digits and dots
47
+ .replace(/\bAND\b/g, 'OR') // Replace "AND" with "OR"
48
+ .replace(/[()]/g, '') // Remove parentheses
49
+ );
50
+ setLoading(false)
51
+ scrollToBottom()
52
+ notification.success({
53
+ message:"Search String Generated"
54
+ })
55
+ } catch (e) {
56
+ notification.error({
57
+ message: `internal Server Error`
58
+ })
59
+ setLoading(false)
60
+ }
61
+ }
62
+ const [papersData, setPapersData] = useState()
63
+ const [limitPaper, setLimitPaper] = useState(10)
64
+ const fetchAndSavePapers = async (e) => {
65
+ e.preventDefault();
66
+ try {
67
+ setLoading(true)
68
+ const response = await fetch("/api/search_papers", {
69
+ method: "post",
70
+ headers: {
71
+ "Content-Type": "application/json",
72
+ },
73
+ body: JSON.stringify({
74
+ search_string: searchString,
75
+ start_year: start_year,
76
+ limit: limitPaper
77
+ })
78
+ });
79
+ const message = await response.json();
80
+ if (message) {
81
+ setPapersData(message)
82
+ }
83
+ scrollToBottom()
84
+ setLoading(false)
85
+ notification.success({
86
+ message:"Papers Found"
87
+ })
88
+ } catch (e) {
89
+ console.log("error:", e)
90
+ setLoading(false)
91
+ notification.error({
92
+ message:"Internal Server Error"
93
+ })
94
+ }
95
+ }
96
+ const handleSubmit = async (e) => {
97
+ e.preventDefault();
98
+
99
+ try {
100
+ setLoading(true)
101
+ const response = await fetch("/api/generate_research_questions_and_purpose", {
102
+ method: "post",
103
+ headers: {
104
+ "Content-Type": "application/json",
105
+ },
106
+ body: JSON.stringify({
107
+ objective: name,
108
+ num_questions: noOfQuestion
109
+ }),
110
+ });
111
+ const message = await response.json();
112
+ let dataResponse = message.research_questions.research_questions.map((i, index) => ({ ...i, key: index }))
113
+ console.log("response:", dataResponse);
114
+ setResearchQuestionApiResponse(dataResponse)
115
+ let questions = message.research_questions.research_questions.map(i => i.question)
116
+ setResearchQuestions(questions)
117
+ setLoading(false)
118
+ scrollToBottom()
119
+ notification.success({
120
+ message:"Research Questions Generated"
121
+ })
122
+ } catch (error) {
123
+ console.error("Error submitting data:", error);
124
+ setLoading(false)
125
+ notification.error({
126
+ message:"Internal Server Error"
127
+ })
128
+ }
129
+ };
130
+
131
+ const [papersFilterData, setPapersFilterData] = useState([])
132
+ const handleCheckboxChange = (key) => {
133
+ const newpapersFilterData = [...papersFilterData];
134
+ if (newpapersFilterData.includes(key)) {
135
+ newpapersFilterData.splice(newpapersFilterData.indexOf(key), 1);
136
+ } else {
137
+ newpapersFilterData.push(key);
138
+ }
139
+ setPapersFilterData(newpapersFilterData);
140
+ };
141
+
142
+ const fetchAndFilterPapers = async (e) => {
143
+ e.preventDefault();
144
+ try {
145
+ setLoading(true)
146
+ const response = await fetch("/api/filter_papers", {
147
+ method: "post",
148
+ headers: {
149
+ "Content-Type": "application/json",
150
+ },
151
+ body: JSON.stringify({
152
+ search_string: searchString,
153
+ papers: papersData
154
+ })
155
+ });
156
+ const message = await response.json();
157
+ if (message) {
158
+ const newFilteredPapers = message.filtered_papers;
159
+ const combinedArray = [...new Set([...papersFilterData, ...newFilteredPapers])];
160
+ setPapersFilterData(combinedArray);
161
+ }
162
+ scrollToBottom()
163
+ setLoading(false)
164
+ notification.success({
165
+ message:"Papers Filtered"
166
+ })
167
+ } catch (e) {
168
+ console.log("error:", e)
169
+ setLoading(false)
170
+ notification.error({
171
+ message:"internal server error"
172
+ })
173
+ }
174
+ }
175
+
176
+ const [ansWithQuestions, setAnsWithQuestionsData] = useState()
177
+ const ansWithQuestionsData = async (e) => {
178
+ e.preventDefault();
179
+ try {
180
+ setLoading(true)
181
+ const response = await fetch("/api/answer_question", {
182
+ method: "post",
183
+ headers: {
184
+ "Content-Type": "application/json",
185
+ },
186
+ body: JSON.stringify({
187
+ questions: researchQuestions,
188
+ papers_info: [...new Set([...papersFilterData, ...papersFilterData])]
189
+ })
190
+ });
191
+ const message = await response.json();
192
+ console.log("message:", message)
193
+ if (message) {
194
+ setAnsWithQuestionsData(message.answers)
195
+ }
196
+ setLoading(false)
197
+ notification.success({
198
+ message:"Answers Generated"
199
+ })
200
+ scrollToBottom()
201
+ } catch (e) {
202
+ console.log("error:", e)
203
+ setLoading(false)
204
+ notification.error({
205
+ message:"Internal Server Error"
206
+ })
207
+ }
208
+ }
209
+ const [summary, setSummary] = useState()
210
+ const [introSummary, setIntroSummary] = useState()
211
+ const generateSummaryAbstract = async (e) =>{
212
+ e.preventDefault()
213
+ setLoading(true)
214
+ try{
215
+ let response = await fetch ("api/generate-summary-abstract", {
216
+ method: "post",
217
+ headers: {
218
+ "Content-Type": "application/json",
219
+ },
220
+ body: JSON.stringify({
221
+ questions: researchQuestions,
222
+ objective: name,
223
+ search_string: searchString
224
+ })
225
+ });
226
+ let message = await response.json()
227
+ setSummary(message.summary_abstract)
228
+ setLoading(false)
229
+ notification.success({
230
+ message:"Summary Abstract Generated"
231
+ })
232
+ scrollToBottom()
233
+ }catch(error) {
234
+ setLoading(false)
235
+ console.log("error:", error)
236
+ }
237
+ }
238
+ const introductionSummary = async (e) =>{
239
+ e.preventDefault()
240
+ setLoading(true)
241
+ try{
242
+ let response = await fetch ("api/generate-introduction-summary", {
243
+ method: "post",
244
+ headers: {
245
+ "Content-Type": "application/json",
246
+ },
247
+ body: JSON.stringify({
248
+ questions: researchQuestions,
249
+ objective: name,
250
+ search_string: searchString,
251
+ total_papers: papersData,
252
+ filtered_papers: papersFilterData,
253
+ answers: ansWithQuestions
254
+ })
255
+ });
256
+ let message = await response.json()
257
+ setIntroSummary(message.introduction_summary)
258
+ setLoading(false)
259
+ notification.success({
260
+ message:"Introduction Summary Generated"
261
+ })
262
+ scrollToBottom()
263
+ }catch(error) {
264
+ setLoading(false)
265
+ console.log("error:", error)
266
+ }
267
+ }
268
+ const [downloadlink, setDownloadLink] = useState()
269
+ const generateAllSummary = async (e) =>{
270
+ e.preventDefault()
271
+ setLoading(true)
272
+ try{
273
+ let response = await fetch ("api/generate-summary-all", {
274
+ method: "post",
275
+ headers: {
276
+ "Content-Type": "application/json",
277
+ },
278
+ body: JSON.stringify({
279
+ abstract_summary: summary,
280
+ intro_summary: introSummary,
281
+ conclusion_summary: summary
282
+ })
283
+ });if (!response.ok) {
284
+ throw new Error(`Error: ${response.status} - ${response.statusText}`);
285
+ }
286
+ const blob = await response.blob();
287
+ const contentDisposition = response.headers.get('Content-Disposition');
288
+ const filename = contentDisposition ? contentDisposition.split('filename=')[1] : 'paper_summary.tex';
289
+ const url = window.URL.createObjectURL(new Blob([blob]));
290
+ const link = document.createElement('a');
291
+ link.href = url;
292
+ link.setAttribute('download', filename);
293
+ document.body.appendChild(link);
294
+ link.click();
295
+ window.URL.revokeObjectURL(url);
296
+ document.body.removeChild(link);
297
+ setLoading(false)
298
+ }catch(error) {
299
+ setLoading(false)
300
+ console.log("error:", error)
301
+ }
302
+ }
303
+ const handleTextareaChange = (event) => {
304
+ const newText = event.target.value;
305
+ const modifiedString = newText.replace(/^Question \d+: /gm, '');
306
+ console.log("modified value",modifiedString.trim());
307
+ // console.log("question value:", event.target.value)
308
+ const newQuestions = modifiedString.split('\n').map((question) => question);
309
+
310
+ setResearchQuestions(newQuestions);
311
+ };
312
+ const handleSearchStringChange = (event) => {
313
+ if(event.target.value == ""){
314
+ setSearchString(" ")
315
+ }else{
316
+ setSearchString(event.target.value);
317
+ }
318
+ };
319
+ return (
320
+ <Layout>
321
+ <Header style={{ backgroundColor: "#f3fff3", }} >
322
+ <div style={{ display: "flex", flexDirection: "row", justifyContent: "space-between", marginLeft: "0px" }}>
323
+ <div>
324
+ <RQicon width={"60px"} height={"60px"} />
325
+ </div>
326
+ <div style={{ fontSize: "20px", color: "black" }}>
327
+ <strong >SLR Automation Tool</strong>
328
+ </div>
329
+ <div>
330
+
331
+ </div>
332
+ </div>
333
+ </Header>
334
+ <Layout>
335
+ <Content>
336
+ {loading && <FullPageLoader/>}
337
+ <div
338
+ id="mainContainer"
339
+ style={{
340
+ // paddingTop:"150px",
341
+ lineHeight: "0px",
342
+ display: "flex",
343
+ flexDirection: "column",
344
+ // justifyContent: "center",
345
+ // alignContent: "center",
346
+ alignItems: "center",
347
+ overflowY: "auto",
348
+ height: "85vh",
349
+ paddingBottom:"30px"
350
+ }}
351
+ ref={contentRef}
352
+ >
353
+ <div>
354
+ <div>
355
+ {/* <div style={{textAlign:"center"}}><RQicon width={"100px"} height={"100px"} /></div> */}
356
+ <h5>Hello, I am your Agent, Enter Your Research Objective.</h5>
357
+ </div>
358
+ <div style={{ display: 'flex', alignItems: 'center', width: "80vw", border: '1px solid #ccc', padding: 15, marginBottom: 5, borderRadius: "10px" }}>
359
+ <Form layout="vertical" style={{ width: "100%", display: "flex", alignItems: "center" }}>
360
+
361
+ <Form.Item label="Objective" style={{ flex: "1 1 70%", marginRight: '5px' }}>
362
+ <Input
363
+ placeholder="Ask me anything..."
364
+ value={name}
365
+ onChange={(e) => setName(e.target.value)}
366
+ />
367
+ </Form.Item>
368
+
369
+ <Form.Item label="No of Questions" style={{ flex: 1, marginRight: '5px' }}>
370
+ <Input
371
+ placeholder="Number of Questions"
372
+ min={1}
373
+ max={5}
374
+ value={noOfQuestion}
375
+ onChange={(e) => setNoOfQuestions(e.target.value)}
376
+ type="number"
377
+ />
378
+ </Form.Item>
379
+
380
+ <Form.Item style={{marginBottom:"-4px"}}>
381
+ <Button
382
+ type="primary"
383
+ icon={<SearchOutlined />}
384
+ onClick={handleSubmit}
385
+ >
386
+ Search
387
+ </Button>
388
+ </Form.Item>
389
+
390
+ </Form>
391
+
392
+ </div>
393
+ </div>
394
+ {researchQuestionApiResponse &&
395
+ <div style={{ display: 'flex', alignItems: 'center', width: "80vw", border: '1px solid #ccc', padding: 10, borderRadius: "10px", marginBottom:5 }}>
396
+ <Space direction="vertical" style={{ width: "100%", padding: "10px 0px" }} >
397
+ <Table scroll={{
398
+ x: 1200,
399
+ y: 500,
400
+ }} style={{width:'100%'}} dataSource={researchQuestionApiResponse} columns={columns} pagination={false} />
401
+
402
+ </Space>
403
+ </div>}
404
+
405
+ {researchQuestions && researchQuestions.length > 0 &&
406
+ <div style={{ display: 'flex', flexDirection: "column", alignItems: 'center', width: "80vw", border: '1px solid #ccc', padding: 10, borderRadius: "10px" }}>
407
+ <div>
408
+ <Space align="center" direction="vertical" style={{ display: 'flex', justifyContent: 'center' }}>
409
+ <Form layout="vertical">
410
+ <Form.Item label="List Of Questions">
411
+ <TextArea style={{ width: "70vw" }} onChange={handleTextareaChange} value={researchQuestions.map((question, index) => question.length == 0 ?"":`Question ${index + 1}: ${question}`).join('\n')} rows={researchQuestions.length} />
412
+ </Form.Item>
413
+ <Button type="primary" style={{ width: "auto", float: 'right' }} onClick={generateSearchString}>Create Search String</Button>
414
+ </Form>
415
+ </Space>
416
+ </div>
417
+ {searchString && searchString.length > 0 && <div>
418
+ <div>
419
+ <Divider />
420
+ <Space align="center" direction="vertical" style={{ display: 'flex', justifyContent: 'center' }}>
421
+ <Form layout="vertical">
422
+ <Form.Item label="Search String">
423
+ <TextArea onChange={handleSearchStringChange} value={searchString} rows={3} style={{ width: "70vw" }} />
424
+ </Form.Item>
425
+ {/* <Space.Compact> */}
426
+
427
+ <Form.Item label="Year" style={{width:"70vw"}}>
428
+ <Input type="number" max={2024} min={2014} value={start_year} onChange={(e) => setstartYear(e.target.value)} />
429
+ </Form.Item>
430
+ <Form.Item label="No of Papers" style={{width:"70vw"}}>
431
+ <Input type="number" max={15} min={5} value={limitPaper} onChange={(e)=> setLimitPaper(e.target.value)} placeholder="No Of Papers"/>
432
+ </Form.Item>
433
+ {/* </Space.Compact> */}
434
+ <Button type="primary" style={{ width: "auto", float: 'right' }} onClick={fetchAndSavePapers}>Fetch Papers</Button>
435
+ </Form>
436
+ </Space>
437
+ </div>
438
+
439
+ </div>}
440
+ {papersData &&
441
+ <><Divider />
442
+ <Space direction="vertical" style={{ width: "100%", padding: "10px 0px" }} >
443
+ <Table scroll={{
444
+ x: 1500,
445
+ y: 450,
446
+ }} style={{ width: "100%" }} dataSource={papersData} columns={paperColumns(papersFilterData, handleCheckboxChange)} pagination={false} />
447
+ <Button type="primary" style={{ float: "right", marginTop: "10px" }} onClick={fetchAndFilterPapers}>Filter with title</Button>
448
+ </Space></>
449
+ }
450
+
451
+ {(papersFilterData.length >0 || papersFilterData.length >0) && <Space direction="vertical" style={{ width: "100%", padding: "10px 0px" }} >
452
+ <Table scroll={{
453
+ x: 1500,
454
+ y: 450,
455
+ }} dataSource={[...new Set([...papersFilterData, ...papersFilterData])]} columns={filterColumns} pagination={false} />
456
+ {(papersFilterData.length > 0 || papersFilterData.length > 0) && <Button type="primary" style={{ float: "right", marginTop: "10px" }} onClick={ansWithQuestionsData}>Find Answers of Each Question </Button>}
457
+ </Space>}
458
+ {ansWithQuestions &&
459
+ <Space direction="vertical" style={{ width: "100%", padding: "10px 0px" }}>
460
+ <Table dataSource={ansWithQuestions} columns={answers} pagination={false} />
461
+ <Button type="primary" style={{float:"right", marginTop:"10px"}} onClick={generateSummaryAbstract}>Generate Summary Abstract </Button>
462
+ </Space>
463
+ }
464
+ {summary && summary.length >0 && <><Divider />
465
+ <Space align="center" direction="vertical" style={{ display: 'flex', justifyContent: 'center' }}>
466
+ <Form layout="vertical">
467
+ <Form.Item label="Summary Abstract">
468
+ <TextArea onChange={(e)=> setSummary(e.target.value)} value={summary} rows={7} style={{ width: "70vw" }} />
469
+ </Form.Item>
470
+ <Button type="primary" style={{ width: "auto", float: 'right' }} onClick={introductionSummary}>Introduction Summary</Button>
471
+ </Form>
472
+ </Space>
473
+ </>}
474
+ {introSummary && introSummary.length >0 && <><Divider />
475
+ <Space align="center" direction="vertical" style={{ display: 'flex', justifyContent: 'center' }}>
476
+ <Form layout="vertical">
477
+ <Form.Item label="Introduction Summary">
478
+ <TextArea onChange={(e)=> setIntroSummary(e.target.value)} value={introSummary} rows={7} style={{ width: "70vw" }} />
479
+ </Form.Item>
480
+ <Button type="primary" style={{ width: "auto", float: 'right' }} onClick={generateAllSummary}>Create Paper Summary</Button>
481
+ {downloadlink && downloadlink.length>0 && <a href={downloadlink} >download file</a> }
482
+ </Form>
483
+ </Space>
484
+ </>}
485
+ </div>}
486
+ </div>
487
+
488
+ </Content>
489
+ </Layout>
490
+ <Footer className="footerFixed">
491
+ <div style={{float:"right", lineHeight:0}}>
492
+ <p>&copy; {new Date().getFullYear()} SLR Automation Tool. All rights reserved. </p>
493
+ </div>
494
+ </Footer>
495
+ </Layout>
496
+ );
497
+ }
498
+
499
+ export default App;
src/FullPageLoader.jsx ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // src/components/FullPageLoader.js
2
+
3
+ import React from 'react';
4
+ import { Spin } from 'antd';
5
+
6
+ const FullPageLoader = () => {
7
+ return (
8
+ <div className="full-page-loader">
9
+ <Spin size="large" />
10
+ </div>
11
+ );
12
+ };
13
+
14
+ export default FullPageLoader;
src/assets/react.svg ADDED
src/columns.jsx ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+
3
+
4
+ export const columns = [
5
+ {
6
+ title: 'No',
7
+ dataIndex: 'index',
8
+ key: 'index',
9
+ width: 80,
10
+ render: (text, record, index) => index + 1, // Renders the row number
11
+ },
12
+ {
13
+ title: 'Purpose',
14
+ dataIndex: 'purpose',
15
+ key: 'purpose',
16
+ width: 500
17
+ },
18
+ {
19
+ title: 'Question',
20
+ dataIndex: 'question',
21
+ key: 'question',
22
+ width: 500
23
+ },
24
+ ];
25
+
26
+
27
+ export const paperColumns = (papersFilterData, handleCheckboxChange) => [
28
+ {
29
+ width: 65,
30
+ title: 'Filter',
31
+ dataIndex: 'checkbox',
32
+ render: (_, record) => (
33
+ <input
34
+ type="checkbox"
35
+ checked={papersFilterData.includes(record)}
36
+ onChange={() => handleCheckboxChange(record)}
37
+ />
38
+ ),
39
+ },
40
+ {
41
+ title: 'No',
42
+ dataIndex: 'index',
43
+ key: 'index',
44
+ width: 80,
45
+ render: (text, record, index) => index + 1, // Renders the row number
46
+ },
47
+ { title: 'Title', dataIndex: 'title', key: 'title', width: 200 },
48
+ { title: 'Author', dataIndex: 'creator', key: 'creator', width: 100 },
49
+
50
+ { title: 'Publication URL', dataIndex: 'link', key: 'link', width: 400 },
51
+ { title: 'Journal Name', dataIndex: 'publicationName', key: 'publicationName', width: 200 },
52
+ { title: 'DOI', dataIndex: 'doi', key: 'doi', width: 200 },
53
+ { title: 'Paper Type', dataIndex: 'aggregationType', key: 'aggregationType', width: 150 },
54
+ { title: 'Affiliation Country', dataIndex: 'affiliation-country', key: 'affiliation-country', width: 100 },
55
+ { title: 'Affiliation Name', dataIndex: 'affilname', key: 'affilname', width: 200 },
56
+ { title: 'Volume', dataIndex: 'volume', key: 'volume', width: 90 },
57
+ { title: 'Publication Year', dataIndex: 'year', key: 'year', width: 90 },
58
+ { title: 'Open Access', dataIndex: 'openaccess', key: 'openaccess', render: text => text ? 'Yes' : 'No', width: 150 }, // Assuming openaccess is a boolean
59
+ ];
60
+
61
+
62
+ // export const paperColumns= (papersFilterData, handleCheckboxChange) => [
63
+ // {
64
+ // width:65,
65
+ // title: 'Filter',
66
+ // dataIndex: 'checkbox',
67
+ // render: (_, record) => (
68
+ // <input
69
+ // type="checkbox"
70
+ // checked={papersFilterData.includes(record)}
71
+ // onChange={() => handleCheckboxChange(record)}
72
+ // />
73
+ // ),
74
+ // },
75
+ // {
76
+ // title: 'No',
77
+ // dataIndex: 'index',
78
+ // key: 'index',
79
+ // width: 80,
80
+ // render: (text, record, index) => index + 1, // Renders the row number
81
+ // },
82
+ // { title: 'Title', dataIndex: 'title', key: 'title', width: 200 },
83
+ // { title: 'Author', dataIndex: 'creator', key: 'creator', width: 100 },
84
+
85
+ // { title: 'Publication URL', dataIndex: 'link', key: 'link', width: 400 },
86
+ // { title: 'Journal Name', dataIndex: 'publicationName', key: 'publicationName', width: 200 },
87
+ // { title: 'DOI', dataIndex: 'doi', key: 'doi', width: 200 },
88
+ // { title: 'Paper Type', dataIndex: 'aggregationType', key: 'aggregationType', width: 150 },
89
+ // { title: 'Affiliation Country', dataIndex: 'affiliation-country', key: 'affiliation-country', width: 100 },
90
+ // { title: 'Affiliation Name', dataIndex: 'affilname', key: 'affilname', width: 200 },
91
+ // { title: 'Volume', dataIndex: 'volume', key: 'volume', width: 90 },
92
+ // { title: 'Publication Year', dataIndex: 'year', key: 'year', width: 90 },
93
+ // { title: 'Open Access', dataIndex: 'openaccess', key: 'openaccess', render: text => text ? 'Yes' : 'No', width: 150 }, // Assuming openaccess is a boolean
94
+ // ];
95
+
96
+ export const filterColumns = [
97
+ {
98
+ title: 'No',
99
+ dataIndex: 'index',
100
+ key: 'index',
101
+ width: 80,
102
+ render: (text, record, index) => index + 1, // Renders the row number
103
+ },
104
+ { title: 'Title', dataIndex: 'title', key: 'title', width: 200 },
105
+ { title: 'Author', dataIndex: 'creator', key: 'creator', width: 100 },
106
+
107
+ { title: 'Publication URL', dataIndex: 'link', key: 'link', width: 400 },
108
+ { title: 'Journal Name', dataIndex: 'publicationName', key: 'publicationName', width: 200 },
109
+ { title: 'DOI', dataIndex: 'doi', key: 'doi', width: 200 },
110
+ { title: 'Paper Type', dataIndex: 'aggregationType', key: 'aggregationType', width: 150 },
111
+ { title: 'Affiliation Country', dataIndex: 'affiliation-country', key: 'affiliation-country', width: 100 },
112
+ { title: 'Affiliation Name', dataIndex: 'affilname', key: 'affilname', width: 200 },
113
+ { title: 'Volume', dataIndex: 'volume', key: 'volume', width: 90 },
114
+ { title: 'Publication Year', dataIndex: 'year', key: 'year', width: 90 },
115
+ { title: 'Open Access', dataIndex: 'openaccess', key: 'openaccess', render: text => text ? 'Yes' : 'No', width: 150 }, // Assuming openaccess is a boolean
116
+ ];
117
+
118
+ export const answers = [
119
+ {
120
+ title: 'No',
121
+ dataIndex: 'index',
122
+ key: 'index',
123
+ width: 80,
124
+ render: (text, record, index) => index + 1, // Renders the row number
125
+ },
126
+ {
127
+ title: 'Question',
128
+ dataIndex: 'question',
129
+ key: 'question',
130
+ width: 280
131
+ },
132
+ {
133
+ title: 'Answer',
134
+ dataIndex: 'answer',
135
+ key: 'answer',
136
+ },
137
+ ];
src/index.css ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* :root {
2
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3
+ line-height: 1.5;
4
+ font-weight: 400;
5
+
6
+ color-scheme: light dark;
7
+ color: rgba(255, 255, 255, 0.87);
8
+ background-color: #242424;
9
+
10
+ font-synthesis: none;
11
+ text-rendering: optimizeLegibility;
12
+ -webkit-font-smoothing: antialiased;
13
+ -moz-osx-font-smoothing: grayscale;
14
+ }
15
+
16
+ a {
17
+ font-weight: 500;
18
+ color: #646cff;
19
+ text-decoration: inherit;
20
+ }
21
+ a:hover {
22
+ color: #535bf2;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ display: flex;
28
+ place-items: center;
29
+ min-width: 60vw;
30
+ min-height: 100vh;
31
+ }
32
+
33
+ h1 {
34
+ font-size: 3.2em;
35
+ line-height: 1.1;
36
+ }
37
+
38
+ button {
39
+ border-radius: 8px;
40
+ border: 1px solid transparent;
41
+ padding: 0.6em 1.2em;
42
+ font-size: 1em;
43
+ font-weight: 500;
44
+ font-family: inherit;
45
+ background-color: #1a1a1a;
46
+ cursor: pointer;
47
+ transition: border-color 0.25s;
48
+ }
49
+ button:hover {
50
+ border-color: #646cff;
51
+ }
52
+ button:focus,
53
+ button:focus-visible {
54
+ outline: 4px auto -webkit-focus-ring-color;
55
+ }
56
+
57
+ @media (prefers-color-scheme: light) {
58
+ :root {
59
+ color: #213547;
60
+ background-color: #ffffff;
61
+ }
62
+ a:hover {
63
+ color: #747bff;
64
+ }
65
+ button {
66
+ background-color: #f9f9f9;
67
+ }
68
+ }
69
+ .tableContainer {
70
+ overflow-x: scroll;
71
+ } */
72
+
73
+ .footerFixed{
74
+ position: fixed;
75
+ width: 100%;
76
+ bottom: 0;
77
+ }
78
+
79
+ .full-page-loader {
80
+ position: fixed;
81
+ top: 0;
82
+ left: 0;
83
+ width: 100%;
84
+ height: 100%;
85
+ display: flex;
86
+ justify-content: center;
87
+ align-items: center;
88
+ background-color: rgba(0, 0, 0, 0.5); /* Add a semi-transparent overlay */
89
+ z-index: 9999; /* Ensure it's on top of other content */
90
+ }
src/main.jsx ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react'
2
+ import ReactDOM from 'react-dom/client'
3
+ import App from './App.jsx'
4
+ import './index.css'
5
+
6
+ ReactDOM.createRoot(document.getElementById('root')).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>,
10
+ )
src/mysvg.jsx ADDED
@@ -0,0 +1,369 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export const RQicon = ({width, height}) => {
2
+ return (<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
3
+ width={width} height={height} viewBox="0 0 1024.000000 1024.000000"
4
+ preserveAspectRatio="xMidYMid meet">
5
+
6
+ <g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
7
+ fill="#000000" stroke="none">
8
+ <path d="M5178 8203 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
9
+ <path d="M5398 8203 c12 -2 30 -2 40 0 9 3 -1 5 -23 4 -22 0 -30 -2 -17 -4z"/>
10
+ <path d="M5533 8193 c9 -2 25 -2 35 0 9 3 1 5 -18 5 -19 0 -27 -2 -17 -5z"/>
11
+ <path d="M4848 8183 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
12
+ <path d="M5613 8183 c9 -2 25 -2 35 0 9 3 1 5 -18 5 -19 0 -27 -2 -17 -5z"/>
13
+ <path d="M5688 8173 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
14
+ <path d="M4625 8150 c-13 -6 -15 -9 -5 -9 8 0 22 4 30 9 18 12 2 12 -25 0z"/>
15
+ <path d="M4260 8050 c-8 -5 -10 -10 -5 -10 6 0 17 5 25 10 8 5 11 10 5 10 -5
16
+ 0 -17 -5 -25 -10z"/>
17
+ <path d="M6294 8016 c11 -9 24 -16 30 -16 12 0 7 5 -24 19 -24 11 -24 11 -6
18
+ -3z"/>
19
+ <path d="M6365 7990 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
20
+ -7 -4 -4 -10z"/>
21
+ <path d="M6497 7939 c7 -7 15 -10 18 -7 3 3 -2 9 -12 12 -14 6 -15 5 -6 -5z"/>
22
+ <path d="M6633 7865 c0 -7 6 -11 14 -8 7 3 13 6 13 8 0 2 -6 5 -13 8 -8 3 -14
23
+ -1 -14 -8z"/>
24
+ <path d="M6813 7770 c48 -26 61 -26 22 0 -16 11 -37 20 -45 20 -8 0 2 -9 23
25
+ -20z"/>
26
+ <path d="M6880 7730 c8 -5 20 -10 25 -10 6 0 3 5 -5 10 -8 5 -19 10 -25 10 -5
27
+ 0 -3 -5 5 -10z"/>
28
+ <path d="M6960 7687 c0 -2 15 -14 33 -27 20 -15 27 -17 18 -6 -13 16 -51 41
29
+ -51 33z"/>
30
+ <path d="M7069 7607 c26 -28 31 -32 31 -19 0 4 -13 16 -28 26 l-27 19 24 -26z"/>
31
+ <path d="M3385 7599 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
32
+ <path d="M5338 7573 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
33
+ <path d="M5208 7563 c23 -2 59 -2 80 0 20 2 1 4 -43 4 -44 0 -61 -2 -37 -4z"/>
34
+ <path d="M7130 7566 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
35
+ 13z"/>
36
+ <path d="M5028 7553 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
37
+ <path d="M4838 7513 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
38
+ <path d="M4798 7503 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
39
+ <path d="M7225 7490 c10 -11 20 -20 23 -20 3 0 -3 9 -13 20 -10 11 -20 20 -23
40
+ 20 -3 0 3 -9 13 -20z"/>
41
+ <path d="M4647 7459 c7 -7 15 -10 18 -7 3 3 -2 9 -12 12 -14 6 -15 5 -6 -5z"/>
42
+ <path d="M4560 7424 c-22 -8 -28 -13 -15 -13 11 0 31 6 45 14 31 17 17 17 -30
43
+ -1z"/>
44
+ <path d="M7306 7408 c3 -5 10 -6 15 -3 13 9 11 12 -6 12 -8 0 -12 -4 -9 -9z"/>
45
+ <path d="M4494 7384 c-18 -14 -18 -14 6 -3 31 14 36 19 24 19 -6 0 -19 -7 -30
46
+ -16z"/>
47
+ <path d="M3099 7363 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z"/>
48
+ <path d="M4410 7345 c-14 -8 -20 -14 -15 -14 6 0 21 6 35 14 14 8 21 14 15 14
49
+ -5 0 -21 -6 -35 -14z"/>
50
+ <path d="M4324 7325 c1 -8 8 -21 16 -28 11 -9 11 -8 0 7 -14 18 -13 19 3 13
51
+ 23 -9 22 0 -2 13 -15 8 -19 7 -17 -5z"/>
52
+ <path d="M3029 7293 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z"/>
53
+ <path d="M4315 7280 c-4 -6 -10 -8 -15 -5 -4 3 -11 -2 -14 -10 -4 -13 -2 -13
54
+ 14 -5 18 10 36 30 26 30 -3 0 -8 -5 -11 -10z"/>
55
+ <path d="M2946 7211 c-14 -15 -15 -21 -4 -27 7 -4 10 -3 5 1 -4 5 0 17 10 27
56
+ 9 10 14 18 11 18 -3 0 -13 -9 -22 -19z"/>
57
+ <path d="M7466 7222 c-3 -5 1 -9 9 -9 8 0 12 4 9 9 -3 4 -7 8 -9 8 -2 0 -6 -4
58
+ -9 -8z"/>
59
+ <path d="M7510 7216 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
60
+ 13z"/>
61
+ <path d="M4190 7190 c-9 -6 -10 -10 -3 -10 6 0 15 5 18 10 8 12 4 12 -15 0z"/>
62
+ <path d="M4086 7173 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
63
+ <path d="M4119 7172 c-11 -14 -11 -15 1 -4 19 16 26 15 27 -6 1 -11 -17 -28
64
+ -50 -47 -29 -16 -56 -30 -62 -30 -5 0 -14 -6 -18 -12 -4 -7 -12 -13 -17 -13
65
+ -34 0 -319 -233 -449 -366 -61 -63 -111 -109 -111 -102 0 6 -16 -3 -35 -22
66
+ -19 -18 -31 -38 -28 -43 4 -6 14 -1 24 11 9 12 20 22 24 22 3 0 -11 -20 -31
67
+ -45 -21 -24 -42 -41 -47 -38 -6 3 -7 2 -4 -4 11 -17 -22 -53 -41 -46 -14 6
68
+ -15 4 -4 -9 7 -9 9 -18 5 -20 -11 -4 -59 -76 -74 -110 -7 -16 -16 -28 -20 -28
69
+ -5 0 1 16 13 36 15 26 18 38 9 47 -6 6 -11 16 -11 22 0 5 7 2 15 -9 13 -17 15
70
+ -17 33 13 10 17 18 46 17 66 -1 36 15 51 34 32 8 -8 11 -5 11 10 0 25 45 96
71
+ 83 131 24 23 26 23 37 5 7 -11 10 -12 7 -3 -2 8 3 20 12 26 12 10 13 15 3 27
72
+ -8 10 -9 17 -3 21 5 4 14 0 18 -9 7 -12 14 -10 38 13 35 33 60 72 46 72 -6 0
73
+ -16 -12 -23 -27 -7 -15 -17 -26 -22 -24 -5 1 -13 -3 -17 -11 -8 -11 -10 -11
74
+ -18 1 -7 11 -12 11 -32 -2 -13 -9 -41 -19 -61 -22 -37 -7 -51 -29 -25 -38 10
75
+ -4 10 -7 0 -18 -11 -11 -13 -10 -13 4 0 13 -9 17 -40 17 l-40 0 0 40 c0 22 -4
76
+ 40 -10 40 -5 0 -10 -18 -10 -40 0 -38 -2 -40 -30 -40 -16 0 -30 -4 -30 -10 0
77
+ -5 -7 -10 -15 -10 -8 0 -15 5 -15 10 0 6 7 10 15 10 8 0 15 5 15 10 0 6 -18
78
+ 10 -40 10 -33 0 -40 -3 -40 -20 0 -11 7 -20 15 -20 8 0 15 -9 15 -20 0 -11 -7
79
+ -20 -15 -20 -8 0 -15 -4 -15 -10 0 -5 11 -10 25 -10 14 0 25 5 25 10 0 6 7 10
80
+ 16 10 11 0 14 -5 10 -16 -3 -9 -6 -18 -6 -20 0 -2 -16 -4 -35 -4 -19 0 -35 5
81
+ -35 10 0 6 -25 9 -57 9 -32 -1 -50 -3 -40 -6 9 -2 17 -9 17 -15 0 -6 -8 -17
82
+ -17 -24 -17 -13 -17 -13 0 -14 9 0 17 -4 17 -10 0 -5 12 -10 28 -10 21 0 24
83
+ -2 12 -10 -8 -6 -27 -7 -42 -4 -21 4 -28 2 -28 -10 0 -13 12 -16 55 -16 48 0
84
+ 55 -2 55 -20 0 -14 7 -20 23 -21 12 0 16 -3 9 -6 -7 -3 -28 2 -46 11 -37 18
85
+ -77 21 -91 7 -6 -4 -26 -11 -45 -14 -34 -5 -34 -5 -7 6 29 12 37 37 12 37 -8
86
+ 0 -15 4 -15 9 0 5 7 11 15 15 8 3 15 10 15 16 0 5 -7 10 -15 10 -20 0 -19 20
87
+ 3 36 16 13 16 13 0 14 -10 0 -18 4 -18 9 0 5 8 12 18 14 9 3 1 5 -19 6 -20 0
88
+ -64 4 -98 7 -43 5 -61 3 -61 -5 0 -6 17 -11 40 -11 38 0 40 -2 40 -30 0 -28
89
+ -2 -30 -40 -30 -22 0 -40 -4 -40 -10 0 -5 -6 -10 -14 -10 -7 0 -26 -6 -41 -14
90
+ -26 -13 -26 -14 -6 -21 12 -3 21 -12 21 -19 0 -8 10 -11 30 -8 20 3 30 0 30
91
+ -8 0 -9 -12 -11 -42 -6 -102 17 -138 18 -138 7 0 -6 19 -12 43 -13 l42 -1 -45
92
+ -7 -45 -7 43 -1 c23 -1 42 -6 42 -11 0 -6 -19 -12 -42 -14 l-43 -4 43 -1 c74
93
+ -3 45 -20 -48 -28 l-90 -7 0 -48 c0 -42 -4 -51 -32 -74 -21 -17 -28 -29 -20
94
+ -32 7 -2 12 -22 12 -44 0 -32 -4 -40 -24 -45 -13 -3 -37 -4 -52 -1 -22 3 -19
95
+ 4 14 6 l42 1 0 41 0 41 -42 -4 c-42 -3 -43 -2 -49 32 l-6 35 -2 -32 c0 -18 -5
96
+ -33 -10 -33 -5 0 -7 10 -4 23 4 22 4 22 -12 2 -17 -19 -17 -19 -11 9 4 17 15
97
+ 36 24 43 11 8 12 12 5 13 -7 0 -13 5 -13 11 0 6 9 8 20 4 11 -4 20 -2 20 4 0
98
+ 6 -3 10 -7 10 -21 -3 -22 4 -8 38 8 20 14 38 11 40 -2 2 -13 -22 -25 -54 -13
99
+ -32 -29 -74 -38 -93 -13 -31 -13 -35 1 -46 21 -15 20 -20 -5 -45 l-22 -22 7
100
+ 29 6 29 -15 -26 c-10 -18 -12 -35 -5 -55 4 -16 9 -22 9 -14 1 13 2 13 11 0 14
101
+ -22 12 -28 -7 -26 -10 0 -21 12 -24 26 -6 24 -7 23 -8 -5 0 -17 -5 -35 -10
102
+ -40 -4 -6 -14 -32 -21 -59 -10 -38 -11 -51 -2 -54 14 -4 16 -42 2 -42 -5 0
103
+ -10 8 -11 18 -1 25 -29 -57 -34 -98 -2 -19 -11 -65 -19 -102 -9 -37 -15 -71
104
+ -14 -75 1 -4 -2 -24 -5 -43 -23 -119 -37 -495 -25 -660 64 -902 554 -1753
105
+ 1308 -2272 426 -294 886 -471 1410 -544 159 -22 555 -25 715 -5 525 64 981
106
+ 233 1410 522 159 108 240 171 373 296 283 263 495 547 662 888 178 364 280
107
+ 733 310 1123 17 221 -4 592 -45 797 -28 142 -95 376 -105 370 -5 -3 -11 2 -14
108
+ 11 -9 24 -7 31 5 14 10 -13 10 -13 7 0 -19 65 -43 118 -51 113 -6 -3 -7 -1 -4
109
+ 5 4 5 4 20 -1 31 l-7 21 -13 -21 c-10 -16 -10 -19 -1 -13 9 5 10 2 6 -10 -4
110
+ -10 -7 -20 -7 -22 0 -3 -4 -2 -10 1 -5 3 -10 17 -10 31 0 14 4 22 10 19 6 -3
111
+ 10 -2 10 4 0 6 -16 8 -37 5 l-38 -6 24 20 24 19 -37 7 -38 7 5 64 5 64 -26
112
+ -17 c-15 -9 -23 -12 -19 -6 3 6 -4 16 -18 22 -21 10 -25 9 -25 -3 0 -8 -7 -15
113
+ -15 -15 -21 0 -19 30 3 46 15 12 14 13 -12 14 -27 0 -28 2 -23 35 3 19 1 37
114
+ -4 41 -5 3 -9 11 -8 17 3 24 -1 37 -12 37 -8 0 -8 -5 1 -15 11 -13 6 -15 -36
115
+ -15 -60 0 -98 -19 -44 -21 24 -1 28 -3 13 -6 -13 -2 -23 -10 -23 -18 0 -7 10
116
+ -16 23 -19 l22 -6 -25 -15 c-14 -8 -42 -14 -62 -15 -35 0 -38 -2 -38 -30 0
117
+ -28 -2 -30 -40 -30 -38 0 -40 2 -40 30 0 22 -5 30 -17 30 -10 0 -28 3 -40 6
118
+ -17 5 -23 2 -23 -10 0 -9 -8 -16 -20 -16 -11 0 -20 -4 -20 -10 0 -5 -9 -10
119
+ -20 -10 -25 0 -27 27 -2 33 10 3 6 5 -10 6 -26 1 -28 -2 -28 -39 0 -33 -3 -40
120
+ -20 -40 -16 0 -20 7 -20 36 0 56 -18 67 -100 59 -50 -5 -75 -4 -85 5 -12 10
121
+ -15 9 -15 -8 0 -12 -5 -24 -12 -28 -7 -4 -8 -3 -4 4 5 8 -1 12 -14 12 -20 0
122
+ -20 -1 -4 -23 16 -21 19 -22 34 -8 9 9 15 19 13 24 -2 4 34 7 81 7 l86 0 0
123
+ -40 c0 -33 -3 -40 -20 -40 -11 0 -20 -6 -20 -12 0 -9 -3 -10 -8 -2 -4 6 -26
124
+ 11 -49 11 l-42 0 17 -23 c9 -13 21 -24 26 -24 5 0 3 7 -4 15 -7 9 -10 18 -6
125
+ 22 9 10 17 -2 20 -33 2 -16 4 -33 5 -37 0 -5 6 -5 13 -1 7 4 8 3 4 -5 -4 -6
126
+ -12 -8 -18 -5 -6 4 -8 -1 -4 -14 4 -11 2 -23 -3 -27 -7 -4 -8 1 -4 11 4 12 3
127
+ 15 -5 10 -8 -5 -10 -2 -6 9 4 9 2 15 -4 13 -5 -2 -26 20 -45 49 -31 44 -34 53
128
+ -22 63 8 7 15 17 15 23 0 5 -8 3 -18 -6 -17 -16 -23 -10 -108 94 -85 105 -222
129
+ 248 -309 320 -22 19 -42 36 -45 39 -3 3 -24 18 -48 34 -36 24 -75 61 -46 43 5
130
+ -3 9 10 9 28 0 31 -1 32 -22 17 -29 -18 -29 -25 -1 -16 20 6 21 5 10 -9 -13
131
+ -15 -16 -14 -43 5 -21 16 -26 24 -17 31 8 5 4 6 -11 2 -17 -5 -21 -4 -16 5 5
132
+ 8 3 11 -6 8 -8 -3 -26 6 -41 20 -16 14 -28 21 -28 16 0 -6 14 -23 31 -40 46
133
+ -44 142 -174 199 -270 145 -246 213 -508 212 -824 -1 -427 -107 -699 -372
134
+ -958 -49 -48 -204 -172 -214 -172 -4 0 -19 -8 -34 -19 -15 -10 -88 -58 -162
135
+ -107 -202 -131 -306 -251 -357 -411 -20 -64 -25 -106 -30 -235 l-6 -158 -488
136
+ 0 c-269 0 -492 -1 -496 -2 -13 -5 -15 389 -3 504 21 206 83 361 216 538 109
137
+ 144 198 219 522 434 233 154 334 263 391 420 22 62 25 87 26 196 0 106 -4 136
138
+ -24 199 -64 195 -240 360 -432 406 -73 17 -232 20 -309 5 -128 -24 -271 -120
139
+ -350 -236 -81 -116 -120 -253 -120 -415 l0 -99 -495 0 -495 0 0 163 c0 89 5
140
+ 200 10 245 40 316 178 596 412 837 72 74 90 110 58 112 -10 1 -24 -6 -31 -15z
141
+ m-660 -533 c-5 -3 -24 -3 -42 -1 l-32 5 28 9 c15 6 27 15 27 21 0 6 6 2 14 -9
142
+ 8 -11 10 -21 5 -25z m-156 -99 c-6 -24 -23 -37 -23 -19 0 10 -3 10 -12 1 -19
143
+ -19 -28 -14 -28 13 0 22 4 25 34 25 29 0 33 -3 29 -20z m4537 -5 c0 -8 -6 -15
144
+ -14 -15 -20 0 -29 17 -14 23 22 9 28 7 28 -8z m17 -27 c-3 -8 -6 -5 -6 6 -1
145
+ 11 2 17 5 13 3 -3 4 -12 1 -19z m-4657 -18 c0 -5 -18 -10 -40 -10 -22 0 -40 5
146
+ -40 10 0 6 18 10 40 10 22 0 40 -4 40 -10z m26 -16 c-3 -9 -6 -20 -6 -25 0 -5
147
+ -4 -9 -10 -9 -11 0 -14 33 -3 43 12 13 25 7 19 -9z m4630 1 c13 -11 14 -13 3
148
+ -9 -13 4 -18 -3 -23 -30 -6 -31 -11 -36 -35 -36 -21 0 -30 6 -35 23 -10 37 -7
149
+ 57 9 57 8 0 15 -7 15 -15 0 -8 5 -15 11 -15 6 0 9 9 6 20 -6 25 20 27 49 5z
150
+ m-5036 -5 c0 -5 -4 -10 -10 -10 -5 0 -10 -7 -10 -15 0 -17 -2 -18 -24 -9 -9 3
151
+ -16 12 -16 19 0 12 9 16 53 24 4 0 7 -3 7 -9z m45 -30 c0 -8 -8 -16 -17 -18
152
+ -13 -2 -18 3 -18 18 0 15 5 20 18 18 9 -2 17 -10 17 -18z m4655 -10 c0 -5 -7
153
+ -10 -15 -10 -8 0 -15 5 -15 10 0 6 7 10 15 10 8 0 15 -4 15 -10z m348 -22 c-6
154
+ -18 -28 -21 -28 -4 0 9 7 16 16 16 9 0 14 -5 12 -12z m-408 -7 c0 -6 -4 -13
155
+ -10 -16 -5 -3 -10 1 -10 9 0 9 5 16 10 16 6 0 10 -4 10 -9z m-4200 -16 c-7 -9
156
+ -15 -13 -19 -10 -3 3 1 10 9 15 21 14 24 12 10 -5z m4270 11 c0 -1 -11 -14
157
+ -23 -28 -22 -24 -67 -46 -67 -34 0 11 35 41 60 53 30 14 30 14 30 9z m103 -3
158
+ c-7 -2 -19 -2 -25 0 -7 3 -2 5 12 5 14 0 19 -2 13 -5z m47 -18 c0 -8 -6 -15
159
+ -14 -15 -20 0 -29 17 -14 23 22 9 28 7 28 -8z m-4780 1 c0 -2 -7 -6 -15 -10
160
+ -8 -3 -15 -1 -15 4 0 6 7 10 15 10 8 0 15 -2 15 -4z m304 -12 c9 -23 4 -24
161
+ -16 -2 -14 14 -15 18 -4 18 8 0 17 -7 20 -16z m4430 -12 c5 -3 1 -9 -9 -15
162
+ -12 -7 -20 -5 -26 4 -17 28 -3 32 35 11z m-4784 -2 c0 -5 -4 -10 -10 -10 -5 0
163
+ -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m4507 -15 c0 -8 -4 -12 -9 -9
164
+ -4 3 -8 9 -8 15 0 5 4 9 8 9 5 0 9 -7 9 -15z m168 -5 c3 -5 -1 -10 -10 -10 -9
165
+ 0 -13 5 -10 10 3 6 8 10 10 10 2 0 7 -4 10 -10z m-4628 -6 c-3 -3 -12 -4 -19
166
+ -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m4776 -1 c-7 -2 -19 -2 -25 0 -7 3 -2 5
167
+ 12 5 14 0 19 -2 13 -5z m270 -3 c8 0 8 -3 0 -11 -9 -9 -16 -7 -30 7 -17 17
168
+ -17 18 0 11 10 -4 24 -7 30 -7z m-5283 -10 c0 -14 38 -12 43 3 2 7 8 8 13 3 5
169
+ -5 4 -11 -3 -13 -7 -3 -13 -13 -13 -23 0 -10 6 -20 13 -23 7 -2 8 -8 3 -13 -5
170
+ -5 -11 -4 -13 4 -3 6 -13 12 -23 12 -10 0 -20 -6 -23 -12 -2 -8 -8 -9 -13 -4
171
+ -5 5 -4 11 4 13 14 5 16 43 2 43 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4
172
+ 10 -10z m4700 -31 c0 -10 -7 -19 -15 -19 -15 0 -21 31 -9 43 11 10 24 -3 24
173
+ -24z m-36 -40 c-3 -5 -2 -19 1 -30 5 -16 9 -18 15 -9 6 9 10 6 15 -11 5 -14 3
174
+ -25 -4 -27 -6 -2 -11 -8 -11 -13 0 -6 5 -7 12 -3 7 4 8 3 4 -4 -4 -7 -2 -20 4
175
+ -29 8 -14 10 -14 9 -3 -3 34 2 50 16 50 16 0 21 -36 6 -42 -16 -5 -17 -43 -2
176
+ -43 8 0 16 -6 19 -12 2 -7 -3 -13 -11 -13 -17 0 -77 109 -69 129 2 8 1 11 -4
177
+ 8 -5 -3 -20 11 -33 30 -12 19 -18 32 -12 29 5 -4 12 -2 16 3 3 6 12 8 20 5 8
178
+ -4 12 -10 9 -15z m-4130 -11 c-3 -5 -10 -5 -16 -2 -7 5 -9 1 -5 -9 3 -9 0 -22
179
+ -7 -29 -7 -7 -13 -16 -14 -21 -3 -14 -33 -67 -38 -67 -2 0 3 14 12 31 13 27
180
+ 14 35 3 56 -12 22 -11 27 3 37 18 13 70 17 62 4z m4469 5 c-13 -2 -33 -2 -45
181
+ 0 -13 2 -3 4 22 4 25 0 35 -2 23 -4z m0 -30 c-13 -2 -33 -2 -45 0 -13 2 -3 4
182
+ 22 4 25 0 35 -2 23 -4z m182 -12 c-3 -6 -11 -11 -16 -11 -5 0 -4 6 3 14 14 16
183
+ 24 13 13 -3z m275 -7 c0 -8 -5 -12 -10 -9 -6 4 -8 11 -5 16 9 14 15 11 15 -7z
184
+ m0 -36 c0 -6 -6 -5 -15 2 -8 7 -15 14 -15 16 0 2 7 1 15 -2 8 -4 15 -11 15
185
+ -16z m-5560 -28 c0 -22 -4 -40 -10 -40 -5 0 -10 18 -10 40 0 22 5 40 10 40 6
186
+ 0 10 -18 10 -40z m143 23 c-13 -2 -33 -2 -45 0 -13 2 -3 4 22 4 25 0 35 -2 23
187
+ -4z m-323 -38 c0 -38 0 -38 -24 -29 -19 7 -21 35 -4 52 20 20 28 14 28 -23z
188
+ m323 8 c-13 -2 -33 -2 -45 0 -13 2 -3 4 22 4 25 0 35 -2 23 -4z m4717 -18 c0
189
+ -8 3 -15 8 -15 4 0 7 -11 7 -24 0 -13 -3 -22 -7 -19 -5 2 -8 -3 -8 -11 0 -9 5
190
+ -16 10 -16 6 0 10 -5 10 -10 0 -13 -38 10 -45 28 -2 7 -1 10 4 7 5 -3 13 5 17
191
+ 17 4 13 2 24 -5 26 -14 5 -15 32 -1 32 6 0 10 -7 10 -15z m-4344 -85 c-17 -37
192
+ -33 -63 -35 -58 -2 5 9 32 23 60 21 40 24 53 14 59 -9 5 -6 8 8 7 21 -2 20 -4
193
+ -10 -68z m4405 33 c-9 -16 -10 -14 -11 12 0 21 3 26 11 18 8 -8 8 -16 0 -30z
194
+ m698 -23 c0 -10 -3 -8 -9 5 -12 27 -12 43 0 25 5 -8 9 -22 9 -30z m-5716 23
195
+ c-13 -2 -33 -2 -45 0 -13 2 -3 4 22 4 25 0 35 -2 23 -4z m-144 -46 c0 -21 -1
196
+ -21 -9 -2 -7 17 -9 16 -10 -10 -2 -30 -2 -30 -10 -5 -7 22 -8 21 -9 -12 -1
197
+ -42 5 -47 25 -20 15 19 19 5 5 -17 -5 -8 -16 -11 -25 -8 -21 8 -21 70 0 91 19
198
+ 20 34 12 33 -17z m5877 -33 c-4 -14 -9 -24 -12 -21 -3 2 -2 17 2 31 3 15 9 25
199
+ 11 22 3 -3 2 -17 -1 -32z m-756 -17 c0 -16 -18 3 -23 25 -6 22 -5 22 8 4 8
200
+ -11 15 -24 15 -29z m771 -50 c-8 -8 -11 -7 -11 4 0 9 3 19 7 23 4 4 9 2 11 -4
201
+ 3 -7 -1 -17 -7 -23z m-5207 7 c3 -8 2 -12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11
202
+ 14 -7z m29 -1 c-3 -7 -6 -13 -8 -13 -2 0 -5 6 -8 13 -3 8 1 14 8 14 7 0 11 -6
203
+ 8 -14z m4436 -23 c5 -17 6 -28 2 -25 -5 3 -14 19 -20 35 -5 17 -6 28 -2 25 5
204
+ -3 14 -19 20 -35z m22 26 c12 7 11 -7 -1 -26 -6 -9 -10 -10 -10 -3 0 6 -2 17
205
+ -3 25 -2 7 -2 10 0 5 3 -4 9 -5 14 -1z m-4518 -46 c3 -11 1 -18 -4 -14 -5 3
206
+ -9 12 -9 20 0 20 7 17 13 -6z m27 -36 c-10 -27 -19 -43 -20 -37 0 16 31 95 36
207
+ 90 2 -2 -5 -25 -16 -53z m4510 26 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8
208
+ 10 11 10 2 0 4 -4 4 -10z m-10 -59 c0 -14 2 -14 10 -1 8 11 9 7 4 -15 -4 -16
209
+ -7 -31 -8 -32 -1 -1 -9 22 -18 50 -13 41 -14 48 -3 33 8 -11 15 -27 15 -35z
210
+ m750 14 c0 -8 -7 -15 -16 -15 -14 0 -14 3 -4 15 7 8 14 15 16 15 2 0 4 -7 4
211
+ -15z m-6020 -98 c0 -18 -2 -19 -11 -7 -7 11 -9 0 -5 -40 5 -49 4 -51 -5 -21
212
+ -12 38 -4 105 12 96 5 -4 9 -16 9 -28z m5299 -27 c0 -9 -4 -8 -9 5 -5 11 -9
213
+ 27 -9 35 0 9 4 8 9 -5 5 -11 9 -27 9 -35z m736 10 c3 -5 1 -10 -4 -10 -6 0
214
+ -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m-5348 -32 c-3 -8 -6 -5 -6 6 -1
215
+ 11 2 17 5 13 3 -3 4 -12 1 -19z m35 -5 c-2 -12 -6 -23 -7 -23 -1 0 -5 11 -7
216
+ 23 -3 14 0 24 7 24 7 0 10 -10 7 -24z m4601 -38 c-3 -9 -8 -14 -10 -11 -3 3
217
+ -2 9 2 15 9 16 15 13 8 -4z m-4636 -17 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3
218
+ -3 4 -12 1 -19z m20 0 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z
219
+ m-740 -35 c-3 -10 -5 -4 -5 12 0 17 2 24 5 18 2 -7 2 -21 0 -30z m730 -5 c-3
220
+ -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m5350 0 c-3 -8 -6 -5 -6 6
221
+ -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-702 -38 c10 -46 -4 -32 -15 15 -5 21 -5
222
+ 34 0 29 4 -5 11 -25 15 -44z m-4664 -7 c-12 -20 -14 -14 -5 12 4 9 9 14 11 11
223
+ 3 -2 0 -13 -6 -23z m4682 -118 c4 -60 3 -69 -3 -35 -9 46 -13 127 -6 119 2 -2
224
+ 6 -40 9 -84z m-4698 15 c-4 -7 148 -10 448 -10 262 0 477 -4 508 -10 173 -32
225
+ 339 -151 418 -299 43 -82 63 -171 64 -286 2 -182 -46 -301 -168 -416 -30 -30
226
+ -62 -57 -70 -62 -8 -4 -15 -14 -15 -21 0 -8 64 -103 142 -212 78 -110 171
227
+ -242 205 -294 l64 -95 -263 -3 c-144 -1 -269 0 -276 3 -8 3 -11 12 -8 21 3 8
228
+ 2 13 -3 9 -8 -4 -148 192 -279 390 -15 22 -31 43 -37 47 -5 4 -72 8 -147 8
229
+ l-138 0 0 -133 c0 -74 -3 -182 -7 -240 l-6 -107 -227 0 -227 0 -8 828 c-5 601
230
+ -10 829 -19 834 -8 6 -8 8 2 8 6 0 12 9 12 19 0 18 12 28 33 30 5 1 5 -3 2 -9z
231
+ m4712 -162 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m10 -180 c-2
232
+ -18 -4 -6 -4 27 0 33 2 48 4 33 2 -15 2 -42 0 -60z m0 -175 c-3 -10 -5 -2 -5
233
+ 17 0 19 2 27 5 18 2 -10 2 -26 0 -35z m552 -115 c-5 -10 -11 -18 -12 -18 -2 0
234
+ -3 8 -3 18 0 10 6 19 13 19 8 0 9 -6 2 -19z m-1266 -14 c335 -75 545 -426 458
235
+ -765 -24 -92 -56 -149 -127 -229 -30 -34 -54 -66 -52 -70 2 -5 48 -57 103
236
+ -115 113 -121 135 -154 135 -206 0 -81 -97 -158 -182 -144 -39 6 -59 23 -195
237
+ 158 l-152 151 -83 -3 c-317 -10 -574 188 -647 501 -6 26 -11 82 -11 126 0 339
238
+ 264 609 598 611 46 1 115 -6 155 -15z m1207 -48 c0 -2 -7 -7 -16 -10 -8 -3
239
+ -12 -2 -9 4 6 10 25 14 25 6z m-2370 -1670 c0 -233 -3 -431 -6 -440 -5 -14
240
+ -59 -16 -505 -16 l-499 0 0 440 0 440 505 0 505 0 0 -424z"/>
241
+ <path d="M7300 6220 c6 -11 13 -20 16 -20 2 0 0 9 -6 20 -6 11 -13 20 -16 20
242
+ -2 0 0 -9 6 -20z"/>
243
+ <path d="M7336 6173 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
244
+ <path d="M3141 6214 c-10 -12 -10 -19 -2 -27 8 -8 11 -6 11 7 0 9 4 14 10 11
245
+ 6 -3 7 1 4 9 -7 19 -6 19 -23 0z"/>
246
+ <path d="M3337 4883 c-3 -60 -5 -150 -4 -200 l1 -93 196 0 c175 0 200 3 240
247
+ 21 83 38 120 88 120 165 0 73 -19 122 -62 158 -57 49 -94 56 -301 56 l-185 0
248
+ -5 -107z"/>
249
+ <path d="M6665 4376 c-126 -59 -179 -199 -121 -321 28 -61 56 -87 119 -115
250
+ 120 -53 271 -1 326 113 29 60 28 146 -3 212 -53 116 -202 167 -321 111z"/>
251
+ <path d="M2865 7121 c-3 -5 -2 -12 3 -15 5 -3 9 1 9 9 0 17 -3 19 -12 6z"/>
252
+ <path d="M4013 7107 c-4 -6 -1 -7 7 -2 7 4 15 2 20 -4 5 -9 9 -9 18 1 8 10 5
253
+ 13 -14 14 -13 1 -27 -3 -31 -9z"/>
254
+ <path d="M2821 7066 c-9 -11 -9 -16 1 -22 7 -4 10 -4 6 1 -4 4 -3 14 3 22 6 7
255
+ 9 13 6 13 -2 0 -10 -6 -16 -14z"/>
256
+ <path d="M3955 7069 c-11 -17 1 -21 15 -4 8 9 8 15 2 15 -6 0 -14 -5 -17 -11z"/>
257
+ <path d="M7626 7067 c3 -10 9 -15 12 -12 3 3 0 11 -7 18 -10 9 -11 8 -5 -6z"/>
258
+ <path d="M3847 7029 c7 -7 15 -10 18 -7 3 3 -2 9 -12 12 -14 6 -15 5 -6 -5z"/>
259
+ <path d="M3869 7003 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z"/>
260
+ <path d="M7680 7016 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
261
+ 13z"/>
262
+ <path d="M3681 6974 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
263
+ <path d="M7706 6972 c-3 -5 1 -9 9 -9 8 0 12 4 9 9 -3 4 -7 8 -9 8 -2 0 -6 -4
264
+ -9 -8z"/>
265
+ <path d="M2786 6957 c3 -10 9 -15 12 -12 3 3 0 11 -7 18 -10 9 -11 8 -5 -6z"/>
266
+ <path d="M7684 6939 c0 -13 3 -15 13 -7 7 6 13 12 13 13 0 2 -6 5 -13 8 -7 3
267
+ -13 -3 -13 -14z"/>
268
+ <path d="M3770 6946 c0 -2 7 -7 16 -10 8 -3 12 -2 9 4 -6 10 -25 14 -25 6z"/>
269
+ <path d="M6686 6941 c-7 -11 22 -36 31 -27 3 3 1 6 -6 6 -8 0 -11 7 -7 15 6
270
+ 16 -9 21 -18 6z"/>
271
+ <path d="M7727 6943 c-4 -3 -7 -11 -7 -17 0 -6 4 -5 9 2 6 10 12 7 25 -13 9
272
+ -14 15 -29 12 -34 -3 -4 1 -8 9 -8 12 0 11 6 -3 29 -21 36 -37 50 -45 41z"/>
273
+ <path d="M7700 6906 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
274
+ 13z"/>
275
+ <path d="M3643 6873 c-26 -9 -12 -22 17 -16 20 3 30 1 30 -6 0 -8 4 -8 14 1 8
276
+ 7 13 14 11 16 -5 6 -60 10 -72 5z"/>
277
+ <path d="M6765 6870 c-3 -5 9 -18 27 -29 18 -11 44 -30 57 -43 l23 -23 -12 23
278
+ c-9 19 -9 27 4 41 9 10 16 22 16 27 -1 5 -9 -1 -19 -13 l-19 -22 -38 19 c-42
279
+ 21 -42 26 0 10 16 -6 27 -6 31 0 4 6 0 10 -7 11 -7 0 -23 2 -35 5 -12 2 -25
280
+ -1 -28 -6z"/>
281
+ <path d="M2662 6848 c-7 -9 -6 -17 3 -25 10 -9 13 -7 11 13 -1 28 -1 28 -14
282
+ 12z"/>
283
+ <path d="M2690 6841 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
284
+ <path d="M3588 6843 c-22 -5 -23 -19 -3 -27 9 -3 12 -12 9 -23 -5 -15 -4 -16
285
+ 5 -3 6 8 8 24 4 35 -5 18 -5 18 12 2 14 -15 15 -20 3 -34 -12 -15 -11 -15 9
286
+ -4 22 11 22 13 7 36 -9 14 -19 24 -23 24 -3 -1 -14 -3 -23 -6z"/>
287
+ <path d="M3650 6829 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
288
+ -5 -10 -11z"/>
289
+ <path d="M7795 6810 c-3 -5 3 -7 12 -5 10 1 25 -2 33 -8 12 -9 13 -9 3 3 -15
290
+ 16 -41 22 -48 10z"/>
291
+ <path d="M3526 6788 c3 -10 2 -18 -3 -17 -18 3 -33 -2 -33 -11 0 -16 50 -12
292
+ 56 5 4 8 13 15 21 15 8 0 12 4 8 10 -3 5 -13 6 -22 3 -10 -4 -14 -2 -10 4 3 5
293
+ 0 10 -9 10 -9 0 -12 -7 -8 -19z"/>
294
+ <path d="M7750 6800 c-9 -6 -10 -10 -3 -10 6 0 15 5 18 10 8 12 4 12 -15 0z"/>
295
+ <path d="M3448 6793 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
296
+ <path d="M6922 6778 c5 -15 28 -23 28 -10 0 5 -7 13 -16 16 -10 4 -14 1 -12
297
+ -6z"/>
298
+ <path d="M7520 6769 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
299
+ -5 -10 -11z"/>
300
+ <path d="M7855 6749 c2 -26 7 -33 26 -35 13 -2 18 0 12 2 -7 3 -13 11 -13 17
301
+ 0 7 -7 20 -14 30 -12 16 -13 15 -11 -14z"/>
302
+ <path d="M6911 6739 c11 -11 23 -18 26 -15 9 8 -17 36 -33 36 -10 0 -7 -7 7
303
+ -21z"/>
304
+ <path d="M7585 6750 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
305
+ -8 -4 -11 -10z"/>
306
+ <path d="M3345 6720 c11 -5 27 -9 35 -9 9 0 8 4 -5 9 -11 5 -27 9 -35 9 -9 0
307
+ -8 -4 5 -9z"/>
308
+ <path d="M3425 6720 c28 -12 45 -12 45 0 0 6 -15 10 -32 9 -28 0 -30 -2 -13
309
+ -9z"/>
310
+ <path d="M7748 6723 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
311
+ <path d="M6982 6703 c29 -18 45 -43 28 -43 -15 0 -12 -26 4 -39 10 -9 15 -8
312
+ 19 3 4 10 1 13 -9 9 -7 -3 -14 0 -14 6 0 6 6 11 14 11 8 0 13 9 12 24 0 13 -4
313
+ 22 -8 19 -5 -2 -18 3 -30 11 -12 9 -27 16 -33 16 -5 0 2 -8 17 -17z"/>
314
+ <path d="M6946 6695 c7 -18 44 -40 44 -27 0 6 -11 17 -25 26 -21 14 -24 14
315
+ -19 1z"/>
316
+ <path d="M7903 6676 c0 -30 12 -42 23 -25 5 8 3 9 -6 4 -9 -6 -12 -4 -8 7 4 8
317
+ 3 21 -2 27 -5 9 -7 4 -7 -13z"/>
318
+ <path d="M7835 6660 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
319
+ <path d="M7867 6657 c-3 -8 1 -14 8 -14 7 0 11 6 8 14 -3 7 -6 13 -8 13 -2 0
320
+ -5 -6 -8 -13z"/>
321
+ <path d="M2865 6650 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
322
+ -8 -4 -11 -10z"/>
323
+ <path d="M7335 6641 l-60 -6 50 -6 c33 -4 57 -1 70 8 11 7 15 12 10 11 -6 -1
324
+ -37 -4 -70 -7z"/>
325
+ <path d="M2920 6630 l-45 -7 40 -1 c22 0 49 3 60 8 23 10 9 10 -55 0z"/>
326
+ <path d="M7098 6633 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
327
+ <path d="M7927 6634 c-3 -4 0 -18 7 -33 8 -14 12 -45 10 -68 -2 -25 1 -45 8
328
+ -49 6 -4 8 -3 5 3 -4 6 -3 32 2 57 5 28 5 46 -1 46 -5 0 -6 5 -3 10 3 6 -1 13
329
+ -9 16 -9 3 -13 10 -10 15 6 10 0 12 -9 3z"/>
330
+ <path d="M7740 6610 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
331
+ -10 -4 -10 -10z"/>
332
+ <path d="M3010 6600 c0 -5 7 -10 15 -10 8 0 15 5 15 10 0 6 -7 10 -15 10 -8 0
333
+ -15 -4 -15 -10z"/>
334
+ <path d="M7037 6604 c-4 -4 -4 -10 -1 -15 6 -10 34 0 34 12 0 10 -24 12 -33 3z"/>
335
+ <path d="M2898 6593 c12 -2 32 -2 45 0 12 2 2 4 -23 4 -25 0 -35 -2 -22 -4z"/>
336
+ <path d="M7415 6591 c-6 -6 -39 -14 -75 -19 l-65 -10 68 -1 c39 0 67 3 67 9 0
337
+ 6 7 10 15 10 8 0 15 5 15 10 0 13 -13 13 -25 1z"/>
338
+ <path d="M7922 6560 c1 -33 6 -34 13 -2 2 12 0 24 -5 27 -5 3 -8 -8 -8 -25z"/>
339
+ <path d="M7082 6558 c-7 -10 -2 -23 19 -48 16 -19 29 -29 29 -23 0 7 -4 14 -9
340
+ 18 -6 3 -8 14 -6 25 2 12 0 18 -5 15 -5 -3 -11 -1 -14 4 -4 5 2 12 11 14 15 4
341
+ 15 5 2 6 -9 0 -21 -5 -27 -11z"/>
342
+ <path d="M7688 6563 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
343
+ <path d="M7970 6567 c0 -11 39 -87 45 -87 6 0 -15 49 -32 75 -7 11 -13 16 -13
344
+ 12z"/>
345
+ <path d="M7150 6550 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
346
+ -4 -4 -4 -10z"/>
347
+ <path d="M7218 6533 c12 -2 32 -2 45 0 12 2 2 4 -23 4 -25 0 -35 -2 -22 -4z"/>
348
+ <path d="M7971 6504 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
349
+ <path d="M2456 6493 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
350
+ <path d="M2501 6476 c-8 -10 -8 -16 3 -25 11 -9 15 -6 18 14 6 28 -3 32 -21
351
+ 11z"/>
352
+ <path d="M3300 6465 c0 -5 5 -17 10 -25 5 -8 10 -10 10 -5 0 6 -5 17 -10 25
353
+ -5 8 -10 11 -10 5z"/>
354
+ <path d="M8015 6455 c4 -11 9 -31 10 -43 4 -26 15 -43 15 -23 0 7 5 9 10 6 14
355
+ -9 -10 46 -28 65 -13 13 -14 13 -7 -5z"/>
356
+ <path d="M2530 6446 c0 -2 7 -9 15 -16 12 -10 15 -10 15 4 0 9 -7 16 -15 16
357
+ -8 0 -15 -2 -15 -4z"/>
358
+ <path d="M2422 6423 c-12 -23 1 -63 13 -43 5 9 4 15 -3 18 -9 3 -9 9 -2 23 6
359
+ 10 8 19 6 19 -3 0 -9 -8 -14 -17z"/>
360
+ <path d="M7190 6404 c0 -6 8 -19 19 -30 10 -11 21 -30 25 -41 3 -11 13 -20 21
361
+ -20 11 0 9 8 -8 31 -31 44 -57 71 -57 60z"/>
362
+ <path d="M8011 6373 c-1 -28 8 -53 21 -53 7 0 7 4 0 13 -5 6 -12 23 -15 37 -4
363
+ 22 -4 22 -6 3z"/>
364
+ <path d="M8061 6370 c0 -8 6 -23 13 -33 8 -10 12 -28 9 -40 -4 -19 -3 -20 7
365
+ -5 8 14 6 26 -9 55 -11 21 -20 31 -20 23z"/>
366
+ <path d="M2435 6350 c-8 -13 5 -13 25 0 13 8 13 10 -2 10 -9 0 -20 -4 -23 -10z"/>
367
+ </g>
368
+ </svg>)
369
+ }