pdfdancer-client-typescript 2.0.6 → 2.0.7

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.
Files changed (40) hide show
  1. package/README.md +10 -4
  2. package/dist/models.d.ts +9 -2
  3. package/dist/models.d.ts.map +1 -1
  4. package/dist/models.js +23 -1
  5. package/dist/models.js.map +1 -1
  6. package/dist/pdfdancer_v1.d.ts +5 -0
  7. package/dist/pdfdancer_v1.d.ts.map +1 -1
  8. package/dist/pdfdancer_v1.js +54 -1
  9. package/dist/pdfdancer_v1.js.map +1 -1
  10. package/dist/types.d.ts +38 -3
  11. package/dist/types.d.ts.map +1 -1
  12. package/dist/types.js +158 -2
  13. package/dist/types.js.map +1 -1
  14. package/dist/version.d.ts +1 -1
  15. package/dist/version.js +1 -1
  16. package/package.json +1 -1
  17. package/dist/__tests__/assertions.d.ts +0 -2
  18. package/dist/__tests__/assertions.d.ts.map +0 -1
  19. package/dist/__tests__/assertions.js +0 -11
  20. package/dist/__tests__/assertions.js.map +0 -1
  21. package/dist/__tests__/e2e/pdf-assertions.d.ts +0 -36
  22. package/dist/__tests__/e2e/pdf-assertions.d.ts.map +0 -1
  23. package/dist/__tests__/e2e/pdf-assertions.js +0 -218
  24. package/dist/__tests__/e2e/pdf-assertions.js.map +0 -1
  25. package/dist/__tests__/e2e/test-drawing-helpers.d.ts +0 -148
  26. package/dist/__tests__/e2e/test-drawing-helpers.d.ts.map +0 -1
  27. package/dist/__tests__/e2e/test-drawing-helpers.js +0 -343
  28. package/dist/__tests__/e2e/test-drawing-helpers.js.map +0 -1
  29. package/dist/__tests__/e2e/test-helpers.d.ts +0 -44
  30. package/dist/__tests__/e2e/test-helpers.d.ts.map +0 -1
  31. package/dist/__tests__/e2e/test-helpers.js +0 -233
  32. package/dist/__tests__/e2e/test-helpers.js.map +0 -1
  33. package/dist/client-v1.d.ts +0 -157
  34. package/dist/client-v1.d.ts.map +0 -1
  35. package/dist/client-v1.js +0 -576
  36. package/dist/client-v1.js.map +0 -1
  37. package/dist/client-v2.d.ts +0 -129
  38. package/dist/client-v2.d.ts.map +0 -1
  39. package/dist/client-v2.js +0 -696
  40. package/dist/client-v2.js.map +0 -1
package/dist/client-v1.js DELETED
@@ -1,576 +0,0 @@
1
- "use strict";
2
- /**
3
- * PDFDancer TypeScript Client V1
4
- *
5
- * A TypeScript client that provides session-based PDF manipulation operations with strict validation.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.ClientV1 = void 0;
9
- const exceptions_1 = require("./exceptions");
10
- const models_1 = require("./models");
11
- const paragraph_builder_1 = require("./paragraph-builder");
12
- /**
13
- * REST API client for interacting with the PDFDancer PDF manipulation service.
14
- * This client provides a convenient TypeScript interface for performing PDF operations
15
- * including session management, object searching, manipulation, and retrieval.
16
- * Handles authentication, session lifecycle, and HTTP communication transparently.
17
- *
18
- */
19
- class ClientV1 {
20
- /**
21
- * Creates a new client with PDF data.
22
- * This constructor initializes the client, uploads the PDF data to create
23
- * a new session, and prepares the client for PDF manipulation operations.
24
- */
25
- constructor(token, pdfData, baseUrl = "http://localhost:8080", readTimeout = 30000) {
26
- if (!token || !token.trim()) {
27
- throw new exceptions_1.ValidationException("Authentication token cannot be null or empty");
28
- }
29
- this._token = token.trim();
30
- this._baseUrl = baseUrl.replace(/\/$/, ''); // Remove trailing slash
31
- this._readTimeout = readTimeout;
32
- // Process PDF data with validation
33
- this._pdfBytes = this._processPdfData(pdfData);
34
- }
35
- /**
36
- * Initialize the client by creating a session.
37
- * Must be called after constructor before using the client.
38
- */
39
- async init() {
40
- this._sessionId = await this._createSession();
41
- return this;
42
- }
43
- static async create(token, pdfData, baseUrl, timeout = 0) {
44
- const client = new ClientV1(token, pdfData, baseUrl, timeout);
45
- return await client.init();
46
- }
47
- /**
48
- * Process PDF data from various input types with strict validation.
49
- */
50
- _processPdfData(pdfData) {
51
- if (!pdfData) {
52
- throw new exceptions_1.ValidationException("PDF data cannot be null");
53
- }
54
- try {
55
- if (pdfData instanceof Uint8Array) {
56
- if (pdfData.length === 0) {
57
- throw new exceptions_1.ValidationException("PDF data cannot be empty");
58
- }
59
- return pdfData;
60
- }
61
- else if (pdfData instanceof ArrayBuffer) {
62
- const uint8Array = new Uint8Array(pdfData);
63
- if (uint8Array.length === 0) {
64
- throw new exceptions_1.ValidationException("PDF data cannot be empty");
65
- }
66
- return uint8Array;
67
- }
68
- else if (pdfData instanceof File) {
69
- // Note: File reading will be handled asynchronously in the session creation
70
- return new Uint8Array(); // Placeholder, will be replaced in _createSession
71
- }
72
- else {
73
- throw new exceptions_1.ValidationException(`Unsupported PDF data type: ${typeof pdfData}`);
74
- }
75
- }
76
- catch (error) {
77
- if (error instanceof exceptions_1.ValidationException) {
78
- throw error;
79
- }
80
- throw new exceptions_1.PdfDancerException(`Failed to process PDF data: ${error}`, error);
81
- }
82
- }
83
- /**
84
- * Extract meaningful error messages from API response.
85
- * Parses JSON error responses with _embedded.errors structure.
86
- */
87
- async _extractErrorMessage(response) {
88
- if (!response) {
89
- return "Unknown error";
90
- }
91
- try {
92
- const errorData = await response.json();
93
- // Check for embedded errors structure
94
- if (errorData._embedded?.errors) {
95
- const errors = errorData._embedded.errors;
96
- if (Array.isArray(errors)) {
97
- const messages = errors
98
- .filter(error => error.message)
99
- .map(error => error.message);
100
- if (messages.length > 0) {
101
- return messages.join("; ");
102
- }
103
- }
104
- }
105
- // Check for top-level message
106
- if (errorData.message) {
107
- return errorData.message;
108
- }
109
- // Fallback to response text or status
110
- return await response.text() || `HTTP ${response.status}`;
111
- }
112
- catch {
113
- // If JSON parsing fails, return response text or status
114
- try {
115
- return await response.text() || `HTTP ${response.status}`;
116
- }
117
- catch {
118
- return `HTTP ${response.status}`;
119
- }
120
- }
121
- }
122
- /**
123
- * Creates a new PDF processing session by uploading the PDF data.
124
- */
125
- async _createSession() {
126
- try {
127
- const formData = new FormData();
128
- // Handle File objects by reading their content
129
- if (this._pdfBytes instanceof File) {
130
- formData.append('pdf', this._pdfBytes, 'document.pdf');
131
- }
132
- else {
133
- const blob = new Blob([this._pdfBytes.buffer], { type: 'application/pdf' });
134
- formData.append('pdf', blob, 'document.pdf');
135
- }
136
- const response = await fetch(`${this._baseUrl}/session/create`, {
137
- method: 'POST',
138
- headers: {
139
- 'Authorization': `Bearer ${this._token}`
140
- },
141
- body: formData,
142
- signal: this._readTimeout > 0 ? AbortSignal.timeout(this._readTimeout) : undefined
143
- });
144
- if (!response.ok) {
145
- const errorMessage = await this._extractErrorMessage(response);
146
- throw new exceptions_1.HttpClientException(`Failed to create session: ${errorMessage}`, response);
147
- }
148
- const sessionId = (await response.text()).trim();
149
- if (!sessionId) {
150
- throw new exceptions_1.SessionException("Server returned empty session ID");
151
- }
152
- return sessionId;
153
- }
154
- catch (error) {
155
- if (error instanceof exceptions_1.HttpClientException || error instanceof exceptions_1.SessionException) {
156
- throw error;
157
- }
158
- const errorMessage = error instanceof Error ? error.message : String(error);
159
- throw new exceptions_1.HttpClientException(`Failed to create session: ${errorMessage}`, undefined, error);
160
- }
161
- }
162
- /**
163
- * Make HTTP request with session headers and error handling.
164
- */
165
- async _makeRequest(method, path, data, params) {
166
- const url = new URL(`${this._baseUrl}${path}`);
167
- if (params) {
168
- Object.entries(params).forEach(([key, value]) => {
169
- url.searchParams.append(key, value);
170
- });
171
- }
172
- const headers = {
173
- 'Authorization': `Bearer ${this._token}`,
174
- 'X-Session-Id': this._sessionId,
175
- 'Content-Type': 'application/json'
176
- };
177
- try {
178
- const response = await fetch(url.toString(), {
179
- method,
180
- headers,
181
- body: data ? JSON.stringify(data) : undefined,
182
- signal: this._readTimeout > 0 ? AbortSignal.timeout(this._readTimeout) : undefined
183
- });
184
- // Handle FontNotFoundException
185
- if (response.status === 404) {
186
- try {
187
- const errorData = await response.json();
188
- if (errorData.error === 'FontNotFoundException') {
189
- throw new exceptions_1.FontNotFoundException(errorData.message || 'Font not found');
190
- }
191
- }
192
- catch (e) {
193
- if (e instanceof exceptions_1.FontNotFoundException) {
194
- throw e;
195
- }
196
- // Continue with normal error handling if JSON parsing fails
197
- }
198
- }
199
- if (!response.ok) {
200
- const errorMessage = await this._extractErrorMessage(response);
201
- throw new exceptions_1.HttpClientException(`API request failed: ${errorMessage}`, response);
202
- }
203
- return response;
204
- }
205
- catch (error) {
206
- if (error instanceof exceptions_1.FontNotFoundException || error instanceof exceptions_1.HttpClientException) {
207
- throw error;
208
- }
209
- const errorMessage = error instanceof Error ? error.message : String(error);
210
- throw new exceptions_1.HttpClientException(`API request failed: ${errorMessage}`, undefined, error);
211
- }
212
- }
213
- // Search Operations
214
- /**
215
- * Searches for PDF objects matching the specified criteria.
216
- * This method provides flexible search capabilities across all PDF content,
217
- * allowing filtering by object type and position constraints.
218
- */
219
- async find(objectType, position) {
220
- const requestData = new models_1.FindRequest(objectType, position).toDict();
221
- const response = await this._makeRequest('POST', '/pdf/find', requestData);
222
- const objectsData = await response.json();
223
- return objectsData.map((objData) => this._parseObjectRef(objData));
224
- }
225
- /**
226
- * Searches for paragraph objects at the specified position.
227
- */
228
- async findParagraphs(position) {
229
- return this.find(models_1.ObjectType.PARAGRAPH, position);
230
- }
231
- /**
232
- * Searches for image objects at the specified position.
233
- */
234
- async findImages(position) {
235
- return this.find(models_1.ObjectType.IMAGE, position);
236
- }
237
- /**
238
- * Searches for form X objects at the specified position.
239
- */
240
- async findFormXObjects(position) {
241
- return this.find(models_1.ObjectType.FORM_X_OBJECT, position);
242
- }
243
- /**
244
- * Searches for vector path objects at the specified position.
245
- */
246
- async findPaths(position) {
247
- return this.find(models_1.ObjectType.PATH, position);
248
- }
249
- /**
250
- * Searches for text line objects at the specified position.
251
- */
252
- async findTextLines(position) {
253
- return this.find(models_1.ObjectType.TEXT_LINE, position);
254
- }
255
- /**
256
- * Searches for form fields at the specified position.
257
- * Returns FormFieldRef objects with name and value properties.
258
- */
259
- async findFormFields(position) {
260
- const requestData = new models_1.FindRequest(models_1.ObjectType.FORM_FIELD, position).toDict();
261
- const response = await this._makeRequest('POST', '/pdf/find', requestData);
262
- const objectsData = await response.json();
263
- return objectsData.map((objData) => this._parseFormFieldRef(objData));
264
- }
265
- // Page Operations
266
- /**
267
- * Retrieves references to all pages in the PDF document.
268
- */
269
- async getPages() {
270
- const response = await this._makeRequest('POST', '/pdf/page/find');
271
- const pagesData = await response.json();
272
- return pagesData.map((pageData) => this._parseObjectRef(pageData));
273
- }
274
- /**
275
- * Retrieves a reference to a specific page by its page index.
276
- */
277
- async getPage(pageIndex) {
278
- if (pageIndex < 0) {
279
- throw new exceptions_1.ValidationException(`Page index must be >= 0, got ${pageIndex}`);
280
- }
281
- const params = { pageIndex: pageIndex.toString() };
282
- const response = await this._makeRequest('POST', '/pdf/page/find', undefined, params);
283
- const pagesData = await response.json();
284
- if (!pagesData || pagesData.length === 0) {
285
- return null;
286
- }
287
- return this._parseObjectRef(pagesData[0]);
288
- }
289
- /**
290
- * Deletes a page from the PDF document.
291
- */
292
- async deletePage(pageRef) {
293
- if (!pageRef) {
294
- throw new exceptions_1.ValidationException("Page reference cannot be null");
295
- }
296
- const requestData = pageRef.toDict();
297
- const response = await this._makeRequest('DELETE', '/pdf/page/delete', requestData);
298
- return await response.json();
299
- }
300
- // Manipulation Operations
301
- /**
302
- * Deletes the specified PDF object from the document.
303
- */
304
- async delete(objectRef) {
305
- if (!objectRef) {
306
- throw new exceptions_1.ValidationException("Object reference cannot be null");
307
- }
308
- const requestData = new models_1.DeleteRequest(objectRef).toDict();
309
- const response = await this._makeRequest('DELETE', '/pdf/delete', requestData);
310
- return await response.json();
311
- }
312
- /**
313
- * Moves a PDF object to a new position within the document.
314
- */
315
- async move(objectRef, position) {
316
- if (!objectRef) {
317
- throw new exceptions_1.ValidationException("Object reference cannot be null");
318
- }
319
- if (!position) {
320
- throw new exceptions_1.ValidationException("Position cannot be null");
321
- }
322
- const requestData = new models_1.MoveRequest(objectRef, position).toDict();
323
- const response = await this._makeRequest('PUT', '/pdf/move', requestData);
324
- return await response.json();
325
- }
326
- /**
327
- * Changes the value of a form field.
328
- */
329
- async changeFormField(formFieldRef, newValue) {
330
- if (!formFieldRef) {
331
- throw new exceptions_1.ValidationException("Form field reference cannot be null");
332
- }
333
- const requestData = new models_1.ChangeFormFieldRequest(formFieldRef, newValue).toDict();
334
- const response = await this._makeRequest('PUT', '/pdf/modify/formField', requestData);
335
- return await response.json();
336
- }
337
- // Add Operations
338
- /**
339
- * Adds an image to the PDF document.
340
- */
341
- async addImage(image, position) {
342
- if (!image) {
343
- throw new exceptions_1.ValidationException("Image cannot be null");
344
- }
345
- if (position) {
346
- image.setPosition(position);
347
- }
348
- if (!image.getPosition()) {
349
- throw new exceptions_1.ValidationException("Image position is null");
350
- }
351
- return this._addObject(image);
352
- }
353
- /**
354
- * Adds a paragraph to the PDF document.
355
- */
356
- async addParagraph(paragraph) {
357
- if (!paragraph) {
358
- throw new exceptions_1.ValidationException("Paragraph cannot be null");
359
- }
360
- if (!paragraph.getPosition()) {
361
- throw new exceptions_1.ValidationException("Paragraph position is null");
362
- }
363
- if (paragraph.getPosition().pageIndex === undefined) {
364
- throw new exceptions_1.ValidationException("Paragraph position page index is null");
365
- }
366
- if (paragraph.getPosition().pageIndex < 0) {
367
- throw new exceptions_1.ValidationException("Paragraph position page index is less than 0");
368
- }
369
- return this._addObject(paragraph);
370
- }
371
- /**
372
- * Internal method to add any PDF object.
373
- */
374
- async _addObject(pdfObject) {
375
- const requestData = new models_1.AddRequest(pdfObject).toDict();
376
- const response = await this._makeRequest('POST', '/pdf/add', requestData);
377
- return await response.json();
378
- }
379
- // Modify Operations
380
- /**
381
- * Modifies a paragraph object or its text content.
382
- */
383
- async modifyParagraph(objectRef, newParagraph) {
384
- if (!objectRef) {
385
- throw new exceptions_1.ValidationException("Object reference cannot be null");
386
- }
387
- if (newParagraph === null || newParagraph === undefined) {
388
- throw new exceptions_1.ValidationException("New paragraph cannot be null");
389
- }
390
- if (typeof newParagraph === 'string') {
391
- // Text modification
392
- const requestData = new models_1.ModifyTextRequest(objectRef, newParagraph).toDict();
393
- const response = await this._makeRequest('PUT', '/pdf/text/paragraph', requestData);
394
- return await response.json();
395
- }
396
- else {
397
- // Object modification
398
- const requestData = new models_1.ModifyRequest(objectRef, newParagraph).toDict();
399
- const response = await this._makeRequest('PUT', '/pdf/modify', requestData);
400
- return await response.json();
401
- }
402
- }
403
- /**
404
- * Modifies a text line object.
405
- */
406
- async modifyTextLine(objectRef, newText) {
407
- if (!objectRef) {
408
- throw new exceptions_1.ValidationException("Object reference cannot be null");
409
- }
410
- if (newText === null || newText === undefined) {
411
- throw new exceptions_1.ValidationException("New text cannot be null");
412
- }
413
- const requestData = new models_1.ModifyTextRequest(objectRef, newText).toDict();
414
- const response = await this._makeRequest('PUT', '/pdf/text/line', requestData);
415
- return await response.json();
416
- }
417
- // Font Operations
418
- /**
419
- * Finds available fonts matching the specified name and size.
420
- */
421
- async findFonts(fontName, fontSize) {
422
- if (!fontName || !fontName.trim()) {
423
- throw new exceptions_1.ValidationException("Font name cannot be null or empty");
424
- }
425
- if (fontSize <= 0) {
426
- throw new exceptions_1.ValidationException(`Font size must be positive, got ${fontSize}`);
427
- }
428
- const params = { fontName: fontName.trim() };
429
- const response = await this._makeRequest('GET', '/font/find', undefined, params);
430
- const fontNames = await response.json();
431
- return fontNames.map((name) => new models_1.Font(name, fontSize));
432
- }
433
- /**
434
- * Registers a custom font for use in PDF operations.
435
- */
436
- async registerFont(ttfFile) {
437
- if (!ttfFile) {
438
- throw new exceptions_1.ValidationException("TTF file cannot be null");
439
- }
440
- try {
441
- let fontData;
442
- let filename;
443
- if (ttfFile instanceof Uint8Array) {
444
- if (ttfFile.length === 0) {
445
- throw new exceptions_1.ValidationException("Font data cannot be empty");
446
- }
447
- fontData = ttfFile;
448
- filename = 'font.ttf';
449
- }
450
- else if (ttfFile instanceof File) {
451
- if (ttfFile.size === 0) {
452
- throw new exceptions_1.ValidationException("Font file is empty");
453
- }
454
- fontData = new Uint8Array(await ttfFile.arrayBuffer());
455
- filename = ttfFile.name;
456
- }
457
- else {
458
- throw new exceptions_1.ValidationException(`Unsupported font file type: ${typeof ttfFile}`);
459
- }
460
- // Upload font file
461
- const formData = new FormData();
462
- const blob = new Blob([fontData.buffer], { type: 'font/ttf' });
463
- formData.append('ttfFile', blob, filename);
464
- const response = await fetch(`${this._baseUrl}/font/register`, {
465
- method: 'POST',
466
- headers: {
467
- 'Authorization': `Bearer ${this._token}`,
468
- 'X-Session-Id': this._sessionId
469
- },
470
- body: formData,
471
- signal: AbortSignal.timeout(30000)
472
- });
473
- if (!response.ok) {
474
- const errorMessage = await this._extractErrorMessage(response);
475
- throw new exceptions_1.HttpClientException(`Font registration failed: ${errorMessage}`, response);
476
- }
477
- return (await response.text()).trim();
478
- }
479
- catch (error) {
480
- if (error instanceof exceptions_1.ValidationException || error instanceof exceptions_1.HttpClientException) {
481
- throw error;
482
- }
483
- const errorMessage = error instanceof Error ? error.message : String(error);
484
- throw new exceptions_1.PdfDancerException(`Failed to read font file: ${errorMessage}`, error);
485
- }
486
- }
487
- // Document Operations
488
- /**
489
- * Downloads the current state of the PDF document with all modifications applied.
490
- */
491
- async getPdfFile() {
492
- const response = await this._makeRequest('GET', `/session/${this._sessionId}/pdf`);
493
- return new Uint8Array(await response.arrayBuffer());
494
- }
495
- async getXmlFile() {
496
- const response = await fetch(`${this._baseUrl}/xml`, {
497
- method: 'GET',
498
- headers: {
499
- 'Authorization': `Bearer ${this._token}`,
500
- 'X-Session-Id': this._sessionId
501
- },
502
- signal: AbortSignal.timeout(30000)
503
- });
504
- return response.text();
505
- }
506
- /**
507
- * Saves the current PDF to a file (browser environment).
508
- * Downloads the PDF in the browser.
509
- */
510
- async savePdf(filename = 'document.pdf') {
511
- if (!filename) {
512
- throw new exceptions_1.ValidationException("Filename cannot be null or empty");
513
- }
514
- try {
515
- const pdfData = await this.getPdfFile();
516
- // Create blob and download link
517
- const blob = new Blob([pdfData.buffer], { type: 'application/pdf' });
518
- const url = URL.createObjectURL(blob);
519
- const link = document.createElement('a');
520
- link.href = url;
521
- link.download = filename;
522
- document.body.appendChild(link);
523
- link.click();
524
- document.body.removeChild(link);
525
- URL.revokeObjectURL(url);
526
- }
527
- catch (error) {
528
- const errorMessage = error instanceof Error ? error.message : String(error);
529
- throw new exceptions_1.PdfDancerException(`Failed to save PDF file: ${errorMessage}`, error);
530
- }
531
- }
532
- // Utility Methods
533
- /**
534
- * Parse JSON object data into ObjectRef instance.
535
- */
536
- _parseObjectRef(objData) {
537
- const positionData = objData.position || {};
538
- const position = positionData ? this._parsePosition(positionData) : new models_1.Position();
539
- const objectType = objData.type;
540
- return new models_1.ObjectRef(objData.internalId, position, objectType);
541
- }
542
- _parseFormFieldRef(objData) {
543
- const positionData = objData.position || {};
544
- const position = positionData ? this._parsePosition(positionData) : new models_1.Position();
545
- const objectType = objData.type;
546
- return new models_1.FormFieldRef(objData.internalId, position, objectType, objData.name || undefined, objData.value !== undefined ? objData.value : null);
547
- }
548
- /**
549
- * Parse JSON position data into Position instance.
550
- */
551
- _parsePosition(posData) {
552
- const position = new models_1.Position();
553
- position.pageIndex = posData.pageIndex;
554
- position.textStartsWith = posData.textStartsWith;
555
- if (posData.shape) {
556
- position.shape = models_1.ShapeType[posData.shape];
557
- }
558
- if (posData.mode) {
559
- position.mode = models_1.PositionMode[posData.mode];
560
- }
561
- if (posData.boundingRect) {
562
- const rectData = posData.boundingRect;
563
- position.boundingRect = new models_1.BoundingRect(rectData.x, rectData.y, rectData.width, rectData.height);
564
- }
565
- return position;
566
- }
567
- // Builder Pattern Support
568
- /**
569
- * Creates a new ParagraphBuilder for fluent paragraph construction.
570
- */
571
- paragraphBuilder() {
572
- return new paragraph_builder_1.ParagraphBuilder(this);
573
- }
574
- }
575
- exports.ClientV1 = ClientV1;
576
- //# sourceMappingURL=client-v1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-v1.js","sourceRoot":"","sources":["../src/client-v1.ts"],"names":[],"mappings":"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"}