dmd-to-pdf 0.1.4
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/CHANGELOG.md +61 -0
- package/DMD_API.md +117 -0
- package/LICENSE +158 -0
- package/README.md +167 -0
- package/dist/dmd.umd.js +1 -0
- package/package.json +68 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to DMD will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.1.4] - 2026-03-13
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Runtime license validation system
|
|
9
|
+
- License API with domain validation for client licenses
|
|
10
|
+
- `DMD.setLicense()` for activating Pro features
|
|
11
|
+
- `DMD.getLicenseState()` for checking license status
|
|
12
|
+
- `DMD.isPro()` helper function
|
|
13
|
+
- 24-hour license validation caching
|
|
14
|
+
- CDN distribution at cdn.dmdlang.dev
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Switched from build-time to runtime Pro feature detection
|
|
18
|
+
- Single unified bundle for all users
|
|
19
|
+
|
|
20
|
+
## [0.1.3] - 2026-03-10
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Font CDN with 114 Google Fonts available
|
|
24
|
+
- Font preview in documentation
|
|
25
|
+
- Global styles support
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- Column content parsing for block elements
|
|
29
|
+
|
|
30
|
+
## [0.1.2] - 2026-03-05
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- Custom font loading with `DMD.loadFonts()`
|
|
34
|
+
- Image preloading with `DMD.loadImages()`
|
|
35
|
+
- Watermark support
|
|
36
|
+
- Headers and footers
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- Improved table rendering
|
|
40
|
+
- Better error messages
|
|
41
|
+
|
|
42
|
+
## [0.1.1] - 2026-02-28
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
- Basic table support
|
|
46
|
+
- List nesting
|
|
47
|
+
- Config block for document metadata
|
|
48
|
+
- Styles block for custom styling
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
- Paragraph spacing issues
|
|
52
|
+
- Bold/italic rendering in nested contexts
|
|
53
|
+
|
|
54
|
+
## [0.1.0] - 2026-02-20
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- Initial release
|
|
58
|
+
- Basic markdown parsing (headings, paragraphs, bold, italic)
|
|
59
|
+
- PDF generation via pdfmake
|
|
60
|
+
- Browser and Node.js support
|
|
61
|
+
- UMD bundle
|
package/DMD_API.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# DMD Internal API Documentation
|
|
2
|
+
|
|
3
|
+
The DMD (Document Markdown) library exposes a simple and intuitive API for converting specialized markdown syntax into PDF documents. It relies internally on `pdfmake` and handles fonts, images, and configuration caching cleanly.
|
|
4
|
+
|
|
5
|
+
## API Methods (Available on the `DMD` object)
|
|
6
|
+
|
|
7
|
+
### `DMD.createPdf(source, format = 'blob')`
|
|
8
|
+
Parses and generates a PDF document from the given DMD source string.
|
|
9
|
+
- **Arguments**:
|
|
10
|
+
- `source` (String): The full DMD formatted markdown document string.
|
|
11
|
+
- `format` (String, Optional): The format to output. Values can be `'blob'` (default for browser), `'base64'`, `'dataUrl'`, or `'stream'` (Node.js only).
|
|
12
|
+
- **Returns**: A `Promise` resolving to the output format (`Blob` in browsers, `Buffer` in Node, or base64 String).
|
|
13
|
+
|
|
14
|
+
### `DMD.extractConfig(source)`
|
|
15
|
+
A fast, lightweight extraction function to pull metadata and configs from the top of the DMD file without parsing the whole AST or generating the document.
|
|
16
|
+
- **Arguments**:
|
|
17
|
+
- `source` (String): The full DMD formatted markdown document string.
|
|
18
|
+
- **Returns**: An `Object` shaped like: `{ body, config, styles, watermark }`.
|
|
19
|
+
|
|
20
|
+
### `DMD.loadImages(imageMap)`
|
|
21
|
+
Preloads images into the internal memory cache to be used across multiple `.createPdf()` executions, greatly improving performance for repeated image generation and avoiding duplicate URL requests.
|
|
22
|
+
- **Arguments**:
|
|
23
|
+
- `imageMap` (Object): A dictionary matching alias keys to image URLs or relative file paths (e.g. `{ logo: "https://example.com/logo.png" }`).
|
|
24
|
+
- **Returns**: A `Promise` resolving when all images are successfully fetched and base64 cached.
|
|
25
|
+
|
|
26
|
+
### `DMD.clearImages()`
|
|
27
|
+
Clears the internal, preloaded image cache.
|
|
28
|
+
|
|
29
|
+
### `DMD.loadFonts(fontMap)` (Pro Edition Only)
|
|
30
|
+
Preloads custom fonts definitions so that they can be invoked cleanly from a document's `:::styles` block.
|
|
31
|
+
- **Arguments**:
|
|
32
|
+
- `fontMap` (Object): A dictionary defining fonts and styles to local URLs, e.g.
|
|
33
|
+
`{ 'MyFont': { normal: 'url/font.ttf', bold: 'url/font-bold.ttf', italics: '...', bolditalics: '...' } }`.
|
|
34
|
+
- **Returns**: A `Promise` resolving when all fonts are prepared for insertion into the `pdfmake` VFS context.
|
|
35
|
+
|
|
36
|
+
### `DMD.clearFonts()`
|
|
37
|
+
Clears all dynamically loaded custom fonts, excluding defaults like Roboto.
|
|
38
|
+
|
|
39
|
+
### `DMD.configureLogger(options)`
|
|
40
|
+
Customizes logging for debugging purposes.
|
|
41
|
+
- **Arguments**:
|
|
42
|
+
- `options` (Object): Shaped `{ level: number|string, handler: function }`.
|
|
43
|
+
|
|
44
|
+
### `DMD.getLogs()`
|
|
45
|
+
Retrieves all logged messages for debugging.
|
|
46
|
+
- **Returns**: An `Array` of log entries.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Licensing API
|
|
51
|
+
|
|
52
|
+
DMD uses a runtime license validation system. Pro features require a valid license key obtained from [dmdlang.dev/pricing](https://dmdlang.dev/pricing).
|
|
53
|
+
|
|
54
|
+
### `DMD.setLicense(key)`
|
|
55
|
+
Sets and validates a license key against the licensing API.
|
|
56
|
+
- **Arguments**:
|
|
57
|
+
- `key` (String): The license key (format: `DMD-XXXX-XXXX-XXXX-XXXX`).
|
|
58
|
+
- **Returns**: A `Promise` resolving to an object:
|
|
59
|
+
```js
|
|
60
|
+
{
|
|
61
|
+
valid: boolean, // Whether the license is valid
|
|
62
|
+
tier: string, // 'free' or 'pro'
|
|
63
|
+
type: string|null, // 'server' or 'client'
|
|
64
|
+
error: string|null // Error message if invalid
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
- **Example**:
|
|
68
|
+
```js
|
|
69
|
+
const result = await DMD.setLicense('DMD-XXXX-XXXX-XXXX-XXXX');
|
|
70
|
+
if (result.valid) {
|
|
71
|
+
console.log('Pro features enabled!');
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### `DMD.getLicenseState()`
|
|
76
|
+
Returns the current license state without making an API call.
|
|
77
|
+
- **Returns**: An `Object` with the current license information:
|
|
78
|
+
```js
|
|
79
|
+
{
|
|
80
|
+
key: string|null, // The license key
|
|
81
|
+
valid: boolean, // Whether it's valid
|
|
82
|
+
tier: string, // 'free' or 'pro'
|
|
83
|
+
type: string|null, // 'server' or 'client'
|
|
84
|
+
checked: boolean, // Whether validation has occurred
|
|
85
|
+
checkedAt: number|null, // Timestamp of last check
|
|
86
|
+
error: string|null // Any error message
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### `DMD.isPro()`
|
|
91
|
+
Quick check if Pro features are currently enabled.
|
|
92
|
+
- **Returns**: `boolean` - `true` if a valid Pro license is active.
|
|
93
|
+
|
|
94
|
+
### `DMD.PRO_FEATURES`
|
|
95
|
+
A constant array listing all Pro-only features:
|
|
96
|
+
```js
|
|
97
|
+
[
|
|
98
|
+
'custom-fonts',
|
|
99
|
+
'watermarks',
|
|
100
|
+
'background-layers',
|
|
101
|
+
'toc-bookmarks',
|
|
102
|
+
'qr-codes',
|
|
103
|
+
'block-styling'
|
|
104
|
+
]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Note:** Block styling includes `::style-name` blocks, table styling via `::table:style`, list bullet/marker styling, column styling, and blockquote styling. Free edition supports inline styling with `[text]{::style}` syntax.
|
|
108
|
+
|
|
109
|
+
### License Types
|
|
110
|
+
|
|
111
|
+
- **Server License** (`type: 'server'`): For Node.js/server-side use. No domain restriction. Validates against the API but allows graceful degradation if the API is unreachable.
|
|
112
|
+
|
|
113
|
+
- **Client License** (`type: 'client'`): For browser use. Requires domain validation - the license is tied to specific domains (supports wildcards like `*.example.com`).
|
|
114
|
+
|
|
115
|
+
### Caching Behavior
|
|
116
|
+
|
|
117
|
+
License validation results are cached for 24 hours to minimize API calls. The cache key includes the domain for client licenses to ensure proper domain validation on each unique domain.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
DMD (Document Markdown) Software License Agreement
|
|
2
|
+
Copyright (c) 2026-present JSA DESENVOLVIMENTO DE SOFTWARES LTDA. All rights reserved.
|
|
3
|
+
|
|
4
|
+
This Software License Agreement ("Agreement") is a legal agreement between you
|
|
5
|
+
("Licensee") and JSA DESENVOLVIMENTO DE SOFTWARES LTDA ("Licensor") for the DMD software, including
|
|
6
|
+
all source code, compiled code, documentation, and associated files ("Software").
|
|
7
|
+
|
|
8
|
+
By installing, copying, or using the Software, you agree to be bound by the
|
|
9
|
+
terms of this Agreement. If you do not agree, do not install or use the Software.
|
|
10
|
+
|
|
11
|
+
================================================================================
|
|
12
|
+
1. DEFINITIONS
|
|
13
|
+
================================================================================
|
|
14
|
+
|
|
15
|
+
"Free Features" means the basic functionality of the Software that operates
|
|
16
|
+
without a valid License Key, as documented at https://dmdlang.dev.
|
|
17
|
+
|
|
18
|
+
"Pro Features" means the advanced functionality of the Software that requires
|
|
19
|
+
a valid License Key to operate, as documented at https://dmdlang.dev.
|
|
20
|
+
|
|
21
|
+
"License Key" means a unique alphanumeric code provided by Licensor upon
|
|
22
|
+
purchase that enables Pro Features.
|
|
23
|
+
|
|
24
|
+
"Commercial Use" means any use of the Software intended for or directed toward
|
|
25
|
+
commercial advantage or monetary compensation.
|
|
26
|
+
|
|
27
|
+
================================================================================
|
|
28
|
+
2. GRANT OF LICENSE
|
|
29
|
+
================================================================================
|
|
30
|
+
|
|
31
|
+
2.1 FREE FEATURES LICENSE
|
|
32
|
+
|
|
33
|
+
Subject to the terms of this Agreement, Licensor grants Licensee a limited,
|
|
34
|
+
non-exclusive, non-transferable, revocable license to:
|
|
35
|
+
|
|
36
|
+
(a) Use the Free Features for personal, educational, or commercial purposes
|
|
37
|
+
(b) Integrate the Software into Licensee's applications
|
|
38
|
+
(c) Distribute applications that incorporate the Software's Free Features
|
|
39
|
+
|
|
40
|
+
2.2 PRO FEATURES LICENSE
|
|
41
|
+
|
|
42
|
+
Use of Pro Features requires a valid License Key. Upon purchasing a License Key,
|
|
43
|
+
Licensor grants Licensee a limited, non-exclusive, non-transferable license to:
|
|
44
|
+
|
|
45
|
+
(a) Use the Pro Features according to the license type purchased:
|
|
46
|
+
- "Client License": For browser/client-side use on specified domains
|
|
47
|
+
- "Server License": For server-side use without domain restrictions
|
|
48
|
+
(b) Integrate the Pro Features into Licensee's applications
|
|
49
|
+
(c) Distribute applications that incorporate the Pro Features, provided the
|
|
50
|
+
License Key is not exposed to end users
|
|
51
|
+
|
|
52
|
+
================================================================================
|
|
53
|
+
3. RESTRICTIONS
|
|
54
|
+
================================================================================
|
|
55
|
+
|
|
56
|
+
Licensee SHALL NOT:
|
|
57
|
+
|
|
58
|
+
(a) Reverse engineer, decompile, disassemble, or attempt to derive the source
|
|
59
|
+
code of the Software
|
|
60
|
+
(b) Modify, adapt, translate, or create derivative works based on the Software
|
|
61
|
+
(c) Remove, alter, or obscure any proprietary notices, labels, or marks on
|
|
62
|
+
the Software
|
|
63
|
+
(d) Redistribute, sublicense, rent, lease, or lend the Software as a
|
|
64
|
+
standalone product
|
|
65
|
+
(e) Share, publish, or expose License Keys to unauthorized parties
|
|
66
|
+
(f) Circumvent, disable, or interfere with any license validation, security
|
|
67
|
+
features, or access controls in the Software
|
|
68
|
+
(g) Use the Software to create a competing product or service
|
|
69
|
+
(h) Use Pro Features without a valid License Key
|
|
70
|
+
(i) Transfer a License Key to another party without written consent from
|
|
71
|
+
Licensor
|
|
72
|
+
|
|
73
|
+
================================================================================
|
|
74
|
+
4. INTELLECTUAL PROPERTY
|
|
75
|
+
================================================================================
|
|
76
|
+
|
|
77
|
+
The Software is protected by copyright and other intellectual property laws.
|
|
78
|
+
Licensor retains all right, title, and interest in and to the Software,
|
|
79
|
+
including all copyrights, patents, trade secrets, trademarks, and other
|
|
80
|
+
intellectual property rights. This Agreement does not grant Licensee any
|
|
81
|
+
rights to Licensor's trademarks or service marks.
|
|
82
|
+
|
|
83
|
+
================================================================================
|
|
84
|
+
5. LICENSE KEY TERMS
|
|
85
|
+
================================================================================
|
|
86
|
+
|
|
87
|
+
5.1 License Keys are personal to the Licensee and may not be shared or transferred.
|
|
88
|
+
|
|
89
|
+
5.2 License Keys may be revoked if Licensee violates this Agreement.
|
|
90
|
+
|
|
91
|
+
5.3 License Keys may have expiration dates. Continued use of Pro Features after
|
|
92
|
+
expiration requires renewal.
|
|
93
|
+
|
|
94
|
+
5.4 Licensor reserves the right to validate License Keys through online
|
|
95
|
+
verification systems.
|
|
96
|
+
|
|
97
|
+
================================================================================
|
|
98
|
+
6. DISCLAIMER OF WARRANTIES
|
|
99
|
+
================================================================================
|
|
100
|
+
|
|
101
|
+
THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
102
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
103
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. LICENSOR DOES NOT
|
|
104
|
+
WARRANT THAT THE SOFTWARE WILL BE ERROR-FREE OR UNINTERRUPTED.
|
|
105
|
+
|
|
106
|
+
================================================================================
|
|
107
|
+
7. LIMITATION OF LIABILITY
|
|
108
|
+
================================================================================
|
|
109
|
+
|
|
110
|
+
IN NO EVENT SHALL LICENSOR BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
|
|
111
|
+
CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
112
|
+
PROFITS, DATA, OR USE, ARISING OUT OF OR RELATED TO THIS AGREEMENT OR THE
|
|
113
|
+
SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
114
|
+
|
|
115
|
+
LICENSOR'S TOTAL LIABILITY UNDER THIS AGREEMENT SHALL NOT EXCEED THE AMOUNT
|
|
116
|
+
PAID BY LICENSEE FOR THE LICENSE KEY, IF ANY.
|
|
117
|
+
|
|
118
|
+
================================================================================
|
|
119
|
+
8. TERMINATION
|
|
120
|
+
================================================================================
|
|
121
|
+
|
|
122
|
+
8.1 This Agreement is effective until terminated.
|
|
123
|
+
|
|
124
|
+
8.2 Licensor may terminate this Agreement immediately if Licensee breaches any
|
|
125
|
+
term of this Agreement.
|
|
126
|
+
|
|
127
|
+
8.3 Upon termination, Licensee must cease all use of the Software and destroy
|
|
128
|
+
all copies in Licensee's possession.
|
|
129
|
+
|
|
130
|
+
8.4 Sections 3, 4, 6, 7, and 9 shall survive termination.
|
|
131
|
+
|
|
132
|
+
================================================================================
|
|
133
|
+
9. GENERAL
|
|
134
|
+
================================================================================
|
|
135
|
+
|
|
136
|
+
9.1 This Agreement constitutes the entire agreement between the parties
|
|
137
|
+
concerning the Software.
|
|
138
|
+
|
|
139
|
+
9.2 This Agreement shall be governed by the laws of Brazil, without regard to
|
|
140
|
+
its conflict of laws principles.
|
|
141
|
+
|
|
142
|
+
9.3 If any provision of this Agreement is held to be unenforceable, the
|
|
143
|
+
remaining provisions shall continue in full force and effect.
|
|
144
|
+
|
|
145
|
+
9.4 Licensor's failure to enforce any right or provision shall not constitute
|
|
146
|
+
a waiver of such right or provision.
|
|
147
|
+
|
|
148
|
+
9.5 Licensor reserves the right to modify this Agreement at any time. Continued
|
|
149
|
+
use of the Software after modifications constitutes acceptance of the
|
|
150
|
+
modified terms.
|
|
151
|
+
|
|
152
|
+
================================================================================
|
|
153
|
+
CONTACT
|
|
154
|
+
================================================================================
|
|
155
|
+
|
|
156
|
+
For licensing inquiries: jizreel_alencar@hotmail.com
|
|
157
|
+
Website: https://dmdlang.dev
|
|
158
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# DMD - Document Markdown
|
|
2
|
+
|
|
3
|
+
A specialized markdown language for generating professional PDF documents. DMD extends markdown with powerful features for document layout, styling, and formatting.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/dmd-to-pdf)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install dmd-to-pdf pdfmake
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
**CDN (Browser):**
|
|
15
|
+
```html
|
|
16
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.3.0-beta.6/pdfmake.min.js"></script>
|
|
17
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.3.0-beta.6/vfs_fonts.min.js"></script>
|
|
18
|
+
<script src="https://cdn.dmdlang.dev/dmd.umd.js"></script>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
```javascript
|
|
24
|
+
const DMD = require('dmd-to-pdf');
|
|
25
|
+
|
|
26
|
+
const document = `
|
|
27
|
+
:::config
|
|
28
|
+
title: My Document
|
|
29
|
+
author: John Doe
|
|
30
|
+
:::
|
|
31
|
+
|
|
32
|
+
# Hello World
|
|
33
|
+
|
|
34
|
+
This is a **DMD** document with *rich formatting*.
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- Simple markdown syntax
|
|
39
|
+
- Professional PDF output
|
|
40
|
+
- Tables, lists, and more
|
|
41
|
+
`;
|
|
42
|
+
|
|
43
|
+
// Generate PDF
|
|
44
|
+
const pdfBlob = await DMD.createPdf(document);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Free vs Pro Features
|
|
48
|
+
|
|
49
|
+
| Feature | Free | Pro |
|
|
50
|
+
|---------|:----:|:---:|
|
|
51
|
+
| Basic markdown (headings, text, lists) | ✓ | ✓ |
|
|
52
|
+
| Document config (title, margins, page size) | ✓ | ✓ |
|
|
53
|
+
| Basic tables | ✓ | ✓ |
|
|
54
|
+
| Multi-column layouts | ✓ | ✓ |
|
|
55
|
+
| Images & SVG | ✓ | ✓ |
|
|
56
|
+
| Links | ✓ | ✓ |
|
|
57
|
+
| Headers & footers | ✓ | ✓ |
|
|
58
|
+
| Inline styling `[text]{::style}` | ✓ | ✓ |
|
|
59
|
+
| **Custom fonts** (non-Roboto) | - | ✓ |
|
|
60
|
+
| **Watermarks** | - | ✓ |
|
|
61
|
+
| **Background layers** | - | ✓ |
|
|
62
|
+
| **Table of contents & bookmarks** | - | ✓ |
|
|
63
|
+
| **QR codes** | - | ✓ |
|
|
64
|
+
| **Block styling** `::style-name` | - | ✓ |
|
|
65
|
+
| **Table/list/column styling** | - | ✓ |
|
|
66
|
+
|
|
67
|
+
### Enabling Pro Features
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
// Set your license key to enable Pro features
|
|
71
|
+
const result = await DMD.setLicense('DMD-XXXX-XXXX-XXXX-XXXX');
|
|
72
|
+
|
|
73
|
+
if (result.valid) {
|
|
74
|
+
console.log('Pro features enabled!');
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Get a license at [dmdlang.dev/pricing](https://dmdlang.dev/pricing)
|
|
79
|
+
|
|
80
|
+
## API Reference
|
|
81
|
+
|
|
82
|
+
### `DMD.createPdf(source, format?)`
|
|
83
|
+
Generate a PDF from DMD source.
|
|
84
|
+
- `source` - DMD formatted string
|
|
85
|
+
- `format` - Output format: `'blob'` (default), `'base64'`, `'dataUrl'`, `'buffer'` (Node.js)
|
|
86
|
+
|
|
87
|
+
### `DMD.extractConfig(source)`
|
|
88
|
+
Extract metadata and config without generating PDF.
|
|
89
|
+
|
|
90
|
+
### `DMD.loadImages(imageMap)`
|
|
91
|
+
Preload images for better performance.
|
|
92
|
+
```javascript
|
|
93
|
+
await DMD.loadImages({
|
|
94
|
+
logo: 'https://example.com/logo.png',
|
|
95
|
+
banner: '/images/banner.jpg'
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### `DMD.loadFonts(fontMap)`
|
|
100
|
+
Load custom fonts. **(Pro)**
|
|
101
|
+
```javascript
|
|
102
|
+
await DMD.loadFonts({
|
|
103
|
+
'MyFont': {
|
|
104
|
+
normal: 'https://example.com/font.ttf',
|
|
105
|
+
bold: 'https://example.com/font-bold.ttf'
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### `DMD.setLicense(key)`
|
|
111
|
+
Set and validate a license key.
|
|
112
|
+
|
|
113
|
+
### `DMD.isPro()`
|
|
114
|
+
Check if Pro features are enabled.
|
|
115
|
+
|
|
116
|
+
See full API documentation at [DMD_API.md](DMD_API.md)
|
|
117
|
+
|
|
118
|
+
## DMD Syntax
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
:::config
|
|
122
|
+
title: Document Title
|
|
123
|
+
author: Author Name
|
|
124
|
+
pageSize: A4
|
|
125
|
+
margins: 40
|
|
126
|
+
:::
|
|
127
|
+
|
|
128
|
+
:::styles
|
|
129
|
+
heading1:
|
|
130
|
+
fontSize: 24
|
|
131
|
+
bold: true
|
|
132
|
+
color: #333333
|
|
133
|
+
:::
|
|
134
|
+
|
|
135
|
+
# Main Heading
|
|
136
|
+
|
|
137
|
+
Regular paragraph with **bold** and *italic* text.
|
|
138
|
+
|
|
139
|
+
## Lists
|
|
140
|
+
|
|
141
|
+
- Item one
|
|
142
|
+
- Item two
|
|
143
|
+
- Nested item
|
|
144
|
+
|
|
145
|
+
## Tables
|
|
146
|
+
|
|
147
|
+
| Name | Age | City |
|
|
148
|
+
|-------|-----|----------|
|
|
149
|
+
| Alice | 30 | New York |
|
|
150
|
+
| Bob | 25 | London |
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Documentation
|
|
154
|
+
|
|
155
|
+
- **Website**: [dmdlang.dev](https://dmdlang.dev)
|
|
156
|
+
- **Playground**: [dmdlang.dev/playground](https://dmdlang.dev/playground)
|
|
157
|
+
- **API Reference**: [DMD_API.md](DMD_API.md)
|
|
158
|
+
- **LLM Context**: [dmdlang.dev/llms.txt](https://dmdlang.dev/llms.txt)
|
|
159
|
+
|
|
160
|
+
## License
|
|
161
|
+
|
|
162
|
+
This software is proprietary. See [LICENSE](LICENSE) for details.
|
|
163
|
+
|
|
164
|
+
- **Free Features**: Available for personal and commercial use
|
|
165
|
+
- **Pro Features**: Require a valid license key
|
|
166
|
+
|
|
167
|
+
Copyright (c) 2026-present JSA DESENVOLVIMENTO DE SOFTWARES LTDA. All rights reserved.
|
package/dist/dmd.umd.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("fs"),require("path"),require("pdfmake")):"function"==typeof define&&define.amd?define(["fs","path","pdfmake"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).DMD=n(t.fs,t.path,t.pdfmake)}(this,function(t,n,e){"use strict";function r(t,n){t-=351;const e=o();let s=e[t];if(void 0===r.iQOOHq){r.YKMXQx=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},r.FFpPFu={},r.iQOOHq=!0}const i=t+e[0],u=r.FFpPFu[i];return u?s=u:(s=r.YKMXQx(s),r.FFpPFu[i]=s),s}function o(){const t=["Aw5KzxHpzG","A2v5","EhfYug8","DMfSDwu","ngzPAwzuvW","sw1SCLK","wLrNvKS","zw5KC1DPDgG","mta4mJK4ohnMBe5hBW","mZaWuKLqy0zv","C3rHCNrZv2L0Aa","mJfLtNvtzuy","mtC5nJeZnNL1s3b4tG","BgvUz3rO","mJe5nZe5n0rSBvLqsW","DhjPBq","BwfW","nJyYmJj3CKfdDgO","zMfSC2u","mtvhDKX0qKC","mtfItwT6BMu","C2XPy2u","mJi2mdu0qxriyKLo","mJe1mhrzCLzsra","mtC5ndy1swfrteLs","C3vIC3rYAw5N","mJCWntqWnJzzyLnTCvO","C3bSAxq"];return(o=function(){return t})()}function s(t){const n=r,e=function(t,n){return t<n},o=function(t,n){return t(n)},s={},u=t[n(373)]("\n");let c=null,a=null;for(let t=0;e(t,u[n(359)]);t++){const e=u[t];if(!e[n(361)]()||e[n(361)]()[n(356)]("#"))continue;const r=e.match(/^(\s*)/);if((r?r[1][n(359)]:0)>=2&&c){!a&&(a={},s[c]=a);const t=o(i,e[n(361)]());t&&(a[t[n(375)]]=t[n(377)]);continue}const f=o(i,e[n(361)]());f&&(null===f[n(377)]?(c=f[n(375)],a=null):(s[f[n(375)]]=f[n(377)],c=f[n(375)],a=null))}return s}function i(t){const n=r,e={uEFLQ:function(t,n){return t+n},ZTgVK:function(t,n){return t(n)}},o=t[n(374)](":");if(-1===o)return null;const s=t[n(371)](0,o).trim(),i=t.substring(e.uEFLQ(o,1))[n(361)]();return s?i?{key:s,value:e[n(352)](u,i)}:{key:s,value:null}:null}function u(t){const n=r,e={DbGNb:"true",xqrPo:n(364),ImlrY:function(t,n){return t===n},oMCUU:"null",YTNwE:function(t,n){return t(n)},Gikkz:function(t,n){return t!==n}};if(t[n(356)]('"')&&t[n(353)]('"')||t[n(356)]("'")&&t.endsWith("'"))return t[n(367)](1,-1);if(t===e.DbGNb)return!0;if(t===e[n(376)])return!1;if(e[n(351)](t,e.oMCUU)||"~"===t)return null;if(t[n(356)]("[")&&t[n(353)]("]"))return function(t){const n=r;return t.trim()?t[n(373)](",")[n(362)](t=>u(t.trim())):[]}(t[n(367)](1,-1));if(t[n(356)]("{")&&t.endsWith("}"))return e.YTNwE(c,t.slice(1,-1));const o=Number(t);return!isNaN(o)&&e.Gikkz(t,"")?o:t}function c(t){const n=r,e=function(t,n){return t(n)},o=function(t,n){return t!==n},s={};if(!t.trim())return s;const u=t.split(",");for(const t of u){const r=e(i,t.trim());r&&o(r[n(377)],null)&&(s[r[n(375)]]=r[n(377)])}return s}function a(){const t=["nZaZmdrlALDzr2y","ndm0mJa3owHQweXuzG","ogDgsfbcDq","otK3ntGXDuvIDw9j","mtm2mdeXmfvUufPJBG","mtCYmJbtDMjpEha","ndy5otzUD2TzCMK","ota2mZD4qNrdr3C"];return(a=function(){return t})()}function f(t,n){t-=221;const e=a();let r=e[t];if(void 0===f.ovKcwk){f.iSdZBQ=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},f.kXtoin={},f.ovKcwk=!0}const o=t+e[0],s=f.kXtoin[o];return s?r=s:(r=f.iSdZBQ(r),f.kXtoin[o]=r),r}!function(t){const n=r,e=t();for(;;)try{if(818956===parseInt(n(366))/1*(parseInt(n(368))/2)+-parseInt(n(360))/3*(parseInt(n(378))/4)+parseInt(n(365))/5*(parseInt(n(354))/6)+-parseInt(n(357))/7*(-parseInt(n(358))/8)+-parseInt(n(363))/9*(-parseInt(n(369))/10)+-parseInt(n(370))/11*(parseInt(n(355))/12)+-parseInt(n(372))/13)break;e.push(e.shift())}catch(t){e.push(e.shift())}}(o),function(t){const n=f,e=t();for(;;)try{if(195179===parseInt(n(227))/1+parseInt(n(228))/2+-parseInt(n(223))/3+parseInt(n(226))/4+-parseInt(n(225))/5+-parseInt(n(224))/6+parseInt(n(221))/7*(parseInt(n(222))/8))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(a);const l={configBlock:/^(:::(\w[\w-]*)\n)([\s\S]*?)(\n:::[ \t]*(?:\n|$))/,contentBlockOpen:/^::(\w[\w-]*)(?::(\w[\w-]*))?\s*\n/,contentBlockClose:/^::[ \t]*(?:\n|$)/,heading:/^(#{1,3}) +([^\n]+?)(?:\n|$)/,pageBreak:/^===[ \t]*(?:\n|$)/,hr:/^---[ \t]*(?:\n|$)/,fences:/^```([^\n]*)\n([\s\S]*?)```[ \t]*(?:\n|$)/,blockquote:/^(?:> ?[^\n]*(?:\n|$))+/,listUnordered:/^( *)([-]) [^\n]+(?:\n(?!\1[-] |\n)[^\n]+)*/,listOrderedNumeric:/^( *)(\d{1,9})\. [^\n]+(?:\n(?!\1\d{1,9}\. |\n)[^\n]+)*/,listOrderedAlpha:/^( *)([a-z])\. [^\n]+(?:\n(?!\1[a-z]\. |\n)[^\n]+)*/,emptyParagraph:/^(\++)[ \t]*(?:\n|$)/,newline:/^(?:[ \t]*\n)+/,paragraph:/^([^\n]+(?:\n(?!:::|\:\:|#{1,3} |===|---[ \t]*(?=\n|$)|\++[ \t]*(?=\n|$)|```|> |[-] |\d{1,9}\. |[a-z]\. )[^\n]+)*)/},g={escape:/^\\([\\`*_{}\[\]()#+\-.!|~^:>])/,strong:/^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\*([^\s*][\s\S]*?[^\s*]|[^\s*])\*/,underline:/^__([^\n_]+?)__/,strikethrough:/^--([^\n-]+?)--/,subscript:/^~([^\n~]+?)~/,superscript:/^\^([^\n^]+?)\^/,codeSpan:/^`([^`\n]+?)`/,lineBreak:/^\\n/,bracket:/^\[([^\]]*)\]\{([^}]+)\}/,text:/^[^\\\n*_`~^\[\-]+|^[-](?!-)|^[_](?!_)/},d=/\r\n|\r/g,h=v;function v(t,n){t-=336;const e=b();let r=e[t];if(void 0===v.ajAFtb){v.pCYLAT=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},v.aJNBTo={},v.ajAFtb=!0}const o=t+e[0],s=v.aJNBTo[o];return s?r=s:(r=v.pCYLAT(r),v.aJNBTo[o]=r),r}!function(t){const n=v,e=t();for(;;)try{if(547490===-parseInt(n(352))/1*(-parseInt(n(340))/2)+parseInt(n(347))/3*(-parseInt(n(346))/4)+-parseInt(n(357))/5*(-parseInt(n(349))/6)+-parseInt(n(354))/7+-parseInt(n(360))/8*(-parseInt(n(348))/9)+-parseInt(n(339))/10*(parseInt(n(336))/11)+-parseInt(n(355))/12*(-parseInt(n(356))/13))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(b);const y=h(350),w="paragraph",m="hr",p=h(344),z=h(341),C=h(338),B="list";function b(){const t=["nte2oty4zgLhBKfL","C3vIC2nYAxb0","mta1mti3Bu9prgzl","C3rYB25N","yMXVy2TXDw90zq","otCWrenxvgDV","mKHLrwDssa","y29KzujSB2nR","C3bHy2u","zxnJyxbL","CgfNzujYzwfR","CxjdB2rL","mJeYmdiYohjwvejXtW","m3D3CxHbAG","mZzyyLP6Egm","nMLQuwLpqG","AgvHzgLUzW","y29UDgvUDejSB2nR","otuXodC1D1HYsMPQ","Dw5KzxjSAw5L","mZmXmtaZnxb5u1nxsa","mZe0nZzhEgPSD1a","mZKXm3buzwPesq","mJm4odq5nvbjzuX2wq","DgfIBgu","C3rYAwTLDgHYB3vNAa"];return(b=function(){return t})()}const D=h(358),x=h(351),A=h(342),L="emptyParagraph",M="text",q=h(337),I="em",j=h(353),S=h(359),k=h(361),Y="superscript",N="codeSpan",W="link",K="image",H=h(345),Z="toc",G="styledText",P=h(343),U="lineBreak";var O=Object.freeze({__proto__:null,BLOCKQUOTE:C,CODE_BLOCK:z,CODE_SPAN:N,COLUMN:"column",CONTENT_BLOCK:x,EM:I,EMPTY_PARAGRAPH:L,ESCAPE:P,HEADING:y,HR:m,IMAGE:K,LINE_BREAK:U,LINK:W,LIST:B,LIST_ITEM:"listItem",PAGE_BREAK:p,PARAGRAPH:w,QR_CODE:H,SPACE:A,STRIKETHROUGH:S,STRONG:q,STYLED_TEXT:G,SUBSCRIPT:k,SUPERSCRIPT:Y,TABLE:D,TEXT:M,TOC:Z,UNDERLINE:j});function X(t){const n=E,e={yBsJC:function(t,n){return t(n)},ECFUg:function(t,n){return t(n)},PYtIl:function(t,n){return t!==n},AAayH:function(t,n){return t+n},fomcl:function(t,n){return t(n)},qHcjV:function(t,n){return t===n},bLTgA:function(t,n){return t>n}};t=t.replace(d,"\n");const r=[];for(;t;){let o;if(o=l.pageBreak[n(396)](t))t=t.substring(o[0].length),r[n(413)]({type:p,raw:o[0]});else if(o=l.hr.exec(t))t=t.substring(o[0].length),r.push({type:m,raw:o[0]});else if(o=l[n(414)].exec(t))t=t.substring(o[0].length),r[n(413)]({type:O[n(395)],raw:o[0],depth:o[1][n(399)],text:o[2][n(409)](),tokens:[]});else if(o=l[n(418)].exec(t))t=t.substring(o[0][n(399)]),r[n(413)]({type:O[n(389)],raw:o[0],lang:o[1].trim()||null,text:o[2]});else{if(o=l[n(372)].exec(t)){const s=o[1],i=o[2]||null,u=t.substring(o[0][n(399)]),c=e.ECFUg(V,u);if(e[n(358)](c,-1)){const a=u.substring(0,c),f=u.substring(c).match(l[n(367)]),g=f?f[0].length:3,d=e[n(373)](o[0][n(399)],c)+g;t=t.substring(d);const h=F(s),v={type:h,raw:t.substring(0,d),name:s,style:i,innerContent:a.trim(),tokens:[]};h===O[n(370)]?v[n(402)]=_(a):h===O[n(360)]?v[n(408)]=e.ECFUg(Q,a)[n(363)](t=>({text:t,tokens:e.yBsJC(X,t)})):v[n(390)]=X(a[n(409)]()),r[n(413)](v);continue}}if(o=l.blockquote.exec(t)){t=t.substring(o[0][n(399)]);const s=o[0][n(398)](/^> ?/gm,"");r[n(413)]({type:O[n(381)],raw:o[0],text:s,tokens:e.fomcl(X,s)});continue}{const o=e[n(365)](J,t);if(o){t=t[n(400)](o[n(356)].length),r[n(413)](o);continue}}if(o=l.emptyParagraph[n(396)](t)){t=t.substring(o[0][n(399)]);const s=o[1][n(399)];for(let t=0;t<s;t++)r.push({type:O[n(371)],raw:e[n(404)](t,0)?o[0]:"+"});continue}if(o=l[n(403)].exec(t)){t=t.substring(o[0].length);(o[0].match(/\n/g)||[]).length>=3?r.push({type:L,raw:o[0]}):e[n(359)](o[0].length,1)&&r[n(413)]({type:O[n(415)],raw:o[0]});continue}if(o=l[n(368)].exec(t))t=t.substring(o[0].length),r.push({type:w,raw:o[0],text:o[1],tokens:[]});else if(t){const e=t[n(380)]("\n")[0];t=t.substring(e.length+1),r[n(413)]({type:O[n(417)],raw:e+"\n",text:e,tokens:[]})}}}return r}function J(t){const n=E,e={SdhVl:function(t,n){return t(n)},xpGwF:n(375),Uzkut:function(t,n){return t===n},XBJdV:function(t,n,e){return t(n,e)},ywfqo:function(t,n){return t>n},nHAtf:function(t,n){return t+n},OQxuL:function(t,n,e){return t(n,e)}},r=/^([ \t]*)- (.+)/.exec(t),o=/^([ \t]*)(\d{1,9})\. (.+)/[n(396)](t),s=/^([ \t]*)([a-z])\. (.+)/[n(396)](t);let i=null,u=null,c=null;if(r?(i=r,u="ul",c=/^([ \t]*)- /):o?(i=o,u="ol-num",c=/^([ \t]*)\d{1,9}\. /):s&&(i=s,u=e[n(387)],c=/^([ \t]*)[a-z]\. /),!i)return null;const a=i[1].length,f=t[n(380)]("\n"),l=[];let g="",d=null;for(let t=0;t<f.length;t++){const r=f[t],o=r[n(401)](/^([ \t]*)([-]|\d{1,9}\.|[a-z]\.) (.*)$/);if(o){const t=o[1].length,s=o[2],i=o[3];if(e.Uzkut(t,a)&&e.XBJdV(T,s,u)){d&&l.push(d),d={text:i,indent:t,raw:r,children:[]},g+=r+"\n";continue}if(e.ywfqo(t,a)&&d){d.children[n(413)](r),g+=r+"\n";continue}break}if(!r.trim()){const n=f[e.nHAtf(t,1)];if(n&&c.test(n)){g+=r+"\n";continue}break}if(!d||!r.startsWith(" ")&&!r[n(386)]("\t"))break;d.text+="\n"+r.trim(),g+=e.nHAtf(r,"\n")}if(d&&l.push(d),e[n(388)](l.length,0))return null;const h="ul"!==u,v=l.map(t=>{const r=n,o={type:O[r(397)],raw:t[r(356)],text:t[r(412)],tokens:[]};if(t[r(379)].length>0){const n=t[r(379)][r(374)]("\n"),s=e.SdhVl(J,n);s&&(o[r(357)]=s)}return o}),y={type:B,raw:g,ordered:h,listType:u,items:v};if(h&&e.Uzkut(u,n(411))){const r=t[n(401)](/^[ \t]*(\d+)\./);y.start=r?e[n(376)](parseInt,r[1],10):1}else if(h&&e[n(388)](u,n(375))){const e=t.match(/^[ \t]*([a-z])\./);y[n(385)]=e?e[1]:"a"}return y}function T(t,n){const e=E,r={UmTDu:function(t,n){return t===n},EFACm:"ol-num",IRKtl:"ol-alpha"};return r.UmTDu(n,"ul")?"-"===t:n===r[e(394)]?/^\d{1,9}\.$/[e(416)](t):n===r[e(384)]&&/^[a-z]\.$/.test(t)}function E(t,n){t-=356;const e=R();let r=e[t];if(void 0===E.hCNABo){E.dquiwJ=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},E.eGfXEH={},E.hCNABo=!0}const o=t+e[0],s=E.eGfXEH[o];return s?r=s:(r=E.dquiwJ(r),E.eGfXEH[o]=r),r}function R(){const t=["CuHJALy","mZyZB2rhAvz3","zMLSDgvY","nJHAsgrJuem","y29SDw1UCW","DhjPBq","q09ovevovf9cte9dsW","B2WTBNvT","Dgv4Da","ChvZAa","AgvHzgLUzW","u1bbq0u","DgvZDa","uefsquDsqvbi","zMvUy2vZ","CMf3","BMvZDgvKtgLZDa","ufL0swW","yKXuz0e","q09mvu1o","zMfSsxy","mtbtA0TXAhC","BwfW","odu4mtqYmM9htKzLva","zM9Ty2W","otmYnJfzD216tKG","y29UDgvUDejSB2nRq2XVC2u","CgfYywDYyxbO","mZi1ndCWnKfHt2TszW","vefcteu","ru1qvfLFuefsquDsqvbi","y29UDgvUDejSB2nRt3bLBG","qufHEuG","AM9PBG","B2WTywXWAge","t1f4DuW","mJi0mtKZmgLpyu5yrq","ndy2nZbIufDQwui","y2HPBgrYzw4","C3bSAxq","qKXpq0Trvu9urq","neT4v0PbBq","nZC2Eevxy0PX","svjlDgW","C3rHCNq","C3rHCNrZv2L0Aa","EhbhD0y","vxPRDxq","q09erv9cte9dsW","Dg9Rzw5Z","DMnSsfO","mte5mdyXndvqELDus2y","odiYmJuYrwfiBgH1","ruzbq20","sevbreLorW","zxHLyW","teLtvf9jvevn","CMvWBgfJzq","BgvUz3rO","C3vIC3rYAw5N","Bwf0y2G","CM93CW","BMv3BgLUzq"];return(R=function(){return t})()}function V(t){const n=E,e={falIv:function(t,n){return t+n}},r=t.split("\n");let o=0;for(let t=0;t<r[n(399)];t++){const s=r[t][n(409)]();if(/^::\w/.test(s)&&o++,/^::[\s]*$/[n(416)](s)){if(0===o){let o=0;for(let s=0;s<t;s++)o+=e[n(361)](r[s][n(399)],1);return o}o--}}return-1}function F(t){const n=E,e={dGIoP:"column",vclHZ:"header",sXjOh:"footer"};switch(t){case"table":return O[n(370)];case e.dGIoP:return O[n(360)];case e[n(391)]:case e.sXjOh:case"background":return x;default:return O[n(410)]}}function _(t){const n=E;return t.trim()[n(380)]("\n")[n(406)](t=>t.trim()).map(t=>{const e=n;return t[e(380)]("|").map(t=>{const n=e,r=t[n(409)](),o=r.match(/^\{::(\S+)\}\s*(.*)/);return o?{text:o[2][n(409)](),style:o[1]}:{text:r,style:null}})})}function Q(t){const n=E,e=t.trim(),r=e.split("\n");if(r.some(t=>"|"===t[n(409)]())){const t=[];let e=[];for(const o of r)"|"===o.trim()?(t[n(413)](e.join("\n")[n(409)]()),e=[]):e.push(o);return e[n(399)]>0&&t.push(e[n(374)]("\n").trim()),t}return 1===r.length?e[n(380)]("|").map(t=>t.trim()):[e]}function $(t,n){t-=154;const e=et();let r=e[t];if(void 0===$.GszeSR){$.MiOZzw=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},$.EEwWPK={},$.GszeSR=!0}const o=t+e[0],s=$.EEwWPK[o];return s?r=s:(r=$.MiOZzw(r),$.EEwWPK[o]=r),r}function tt(t){const n=$,e=function(t,n,e,r){return t(n,e,r)},r=function(t,n){return t-n},o=[];for(;t;){let s;if(s=g.escape[n(171)](t))t=t[n(169)](s[0][n(157)]),o[n(160)]({type:O[n(176)],raw:s[0],text:s[1]});else if(s=g.lineBreak.exec(t))t=t.substring(s[0].length),o.push({type:U,raw:s[0]});else{if(s=g.bracket[n(171)](t)){t=t.substring(s[0][n(157)]);const r=s[1],i=s[2][n(159)]();o.push(e(nt,s[0],r,i));continue}if(s=g.codeSpan.exec(t))t=t[n(169)](s[0].length),o[n(160)]({type:N,raw:s[0],text:s[1]});else if(s=g.strong[n(171)](t))t=t.substring(s[0][n(157)]),o.push({type:q,raw:s[0],text:s[1],tokens:tt(s[1])});else if(s=g.underline.exec(t))t=t.substring(s[0][n(157)]),o.push({type:O[n(168)],raw:s[0],text:s[1],tokens:tt(s[1])});else if(s=g[n(175)].exec(t))t=t[n(169)](s[0].length),o[n(160)]({type:O[n(166)],raw:s[0],text:s[1],tokens:tt(s[1])});else if(s=g.em.exec(t))t=t.substring(s[0][n(157)]),o.push({type:I,raw:s[0],text:s[1],tokens:tt(s[1])});else if(s=g.subscript[n(171)](t))t=t[n(169)](s[0][n(157)]),o.push({type:O[n(155)],raw:s[0],text:s[1]});else if(s=g.superscript[n(171)](t))t=t[n(169)](s[0].length),o.push({type:Y,raw:s[0],text:s[1]});else{if(s=g.text[n(171)](t)){t=t.substring(s[0][n(157)]);const e=o[r(o.length,1)];e&&e[n(173)]===O[n(170)]?(e[n(154)]+=s[0],e.text+=s[0]):o.push({type:O[n(170)],raw:s[0],text:s[0]});continue}if(t){const e=t[0];t=t[n(169)](1);const r=o[o[n(157)]-1];r&&r[n(173)]===O[n(170)]?(r[n(154)]+=e,r.text+=e):o[n(160)]({type:M,raw:e,text:e})}}}}return o}function nt(t,n,e){const r=$,o=e[r(163)](/^url:\s*(.+?)(?:,\s*::(\S+))?$/);if(o)return{type:W,raw:t,text:n,href:o[1][r(159)](),style:o[2]||null};const s=e.match(/^img:\s*(.+?)(?:,\s*::(\S+))?$/);if(s)return{type:K,raw:t,text:n,src:s[1][r(159)](),style:s[2]||null};const i=e[r(163)](/^qr:\s*(.+?)(?:,\s*::(\S+))?$/);if(i)return{type:O[r(167)],raw:t,text:n,data:i[1][r(159)](),style:i[2]||null};if(e.match(/^toc(?:,\s*::(\S+))?$/)){const r=e.match(/^toc(?:,\s*::(\S+))?$/);return{type:Z,raw:t,text:n,style:r[1]||null}}const u=e.match(/^::(\S+)$/);return u?{type:O[r(179)],raw:t,text:n,style:u[1],tokens:(c=tt,a=n,c(a))}:{type:M,raw:t,text:t};var c,a}function et(){const t=["u1rztevex1rfwfq","CMf3","u1vcu0nssvbu","ota0mtfNAhnJEMq","BgvUz3rO","mtj6vg5zuM4","DhjPBq","ChvZAa","mty2nty1nvnkz0LvrG","mtiZodq0n3DwrLPhAW","Bwf0y2G","mtGXmZeWCMrTCxjh","oti3Be5sAMPl","u1rssuTfveHst1vhsa","uvjFq09erq","vu5ervjmsu5f","C3vIC3rYAw5N","vevyva","zxHLyW","mtCWodi5nMzzzMPbtq","DhLWzq","nJK0ntG0svHlzevP","C3rYAwTLDgHYB3vNAa","rvndqvbf","nKXeDhHKva","ntK5odi4og9xB1HgBq"];return(et=function(){return t})()}!function(t){const n=E,e=t();for(;;)try{if(915022===parseInt(n(378))/1*(parseInt(n(407))/2)+-parseInt(n(369))/3+-parseInt(n(382))/4*(parseInt(n(377))/5)+-parseInt(n(364))/6+-parseInt(n(366))/7*(parseInt(n(383))/8)+parseInt(n(392))/9*(parseInt(n(362))/10)+parseInt(n(405))/11*(parseInt(n(393))/12))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(R),function(t){const n=$,e=t();for(;;)try{if(506421===-parseInt(n(156))/1*(-parseInt(n(177))/2)+parseInt(n(174))/3+-parseInt(n(172))/4+-parseInt(n(161))/5+parseInt(n(158))/6*(-parseInt(n(162))/7)+-parseInt(n(178))/8+parseInt(n(165))/9*(parseInt(n(164))/10))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(et);const rt=at;function ot(){const t=["DhLWzq","y3vZDg9TlwzVBNrZ","mtG4ntm5mNHWCxzkyG","yMfZAwmTC3r5BgvZ","yMfJA2DYB3vUzc1SyxLLCNm","DMfSAwq","otGXne5xzuL3Dq","iIbMzwf0DxjLihjLCxvPCMvZigeGuhjVigXPy2vUC2uUia","zxjYB3i","CgfYywDYyxbOCW","mZy4ofLLAvz1wa","Aezuweu","r0vu","mtjsqvvtvwe","zNjLzq","qwXSB3DPBMCGChjVigzLyxr1CMvZicHZzxj2zxiPlG","C3rHDhvZ","nte3ndCWvNnAyNvn","Aw5JBhvKzxm","qw94A3m","mtjkChHbtfa","CgfNzs1ICMvHA3m","y2HLy2TLzef0","Ag9ZDg5HBwu","otq2nZiWuNfIDwnl","Dg9JlwjVB2TTyxjRCW","uNDvALG","BM93","s2nXDu0","mJyZnZe0ANnUDNPo","vMHbwxK","yxbWBgLJyxrPB24VANnVBG","zg9JDw1LBNq","C2vYDMvY","mZa2mZi1mKPbDezOEa","AePcve8","D2f0zxjTyxjRCW","Ahr0Chm6lY9SAwnLBNnLlMrTzgXHBMCUzgv2","oduYmZm4Evbdquf5","vLfVzNe","yvrRsgm","C2v0","BwvZC2fNzq","yMfZAwmTDgfIBgvZ"];return(ot=function(){return t})()}!function(t){const n=at,e=t();for(;;)try{if(672292===-parseInt(n(242))/1+-parseInt(n(233))/2*(parseInt(n(224))/3)+parseInt(n(238))/4+-parseInt(n(228))/5*(-parseInt(n(261))/6)+-parseInt(n(254))/7*(-parseInt(n(258))/8)+parseInt(n(250))/9+parseInt(n(265))/10)break;e.push(e.shift())}catch(t){e.push(e.shift())}}(ot);const st=rt(241),it="undefined"!=typeof window&&void 0!==window[rt(236)];let ut={key:null,valid:!1,tier:"free",type:null,checked:!1,checkedAt:null,error:null};const ct=new Map;function at(t,n){t-=222;const e=ot();let r=e[t];if(void 0===at.hLmmuW){at.XWcJkb=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},at.KzjuDl={},at.hLmmuW=!0}const o=t+e[0],s=at.KzjuDl[o];return s?r=s:(r=at.XWcJkb(r),at.KzjuDl[o]=r),r}function ft(){const t=rt;if(!it)return null;try{return window.location[t(227)]}catch{return null}}async function lt(t){const n=rt,e={yYJDI:"free",ROkho:function(t){return t()},hFTXE:function(t,n,e){return t(n,e)},RwUjX:"pro",aTkHc:function(t,n){return t&&n}};if(!t)return ut={key:null,valid:!1,tier:e.yYJDI,type:null,checked:!0,checkedAt:Date.now(),error:null},{valid:!1,tier:n(262)};const r=e.ROkho(ft),o=it&&r?t+":"+r:t,s=ct.get(o);if(s&&Date.now()-s[n(226)]<864e5)return ut={...s,key:t},{valid:s.valid,tier:s.tier,type:s[n(248)],error:s[n(256)]};try{const s=await e[n(259)](gt,t,r);return ut={key:t,valid:s.valid,tier:s[n(253)]?s.tier||e.RwUjX:e.yYJDI,type:s.type||null,checked:!0,checkedAt:Date[n(231)](),error:s.valid?null:s[n(256)]},ct[n(245)](o,{...ut}),{valid:ut.valid,tier:ut.tier,type:ut.type,error:ut.error}}catch(r){const o=e[n(244)](!it,t)&&t.length>=16;return ut={key:t,valid:o,tier:o?e[n(230)]:e.yYJDI,type:o?n(237):null,checked:!0,checkedAt:Date[n(231)](),error:"Validation failed: "+r[n(246)]+". "+(o?n(263):"")},{valid:ut[n(253)],tier:ut.tier,type:ut[n(248)],error:ut[n(256)]}}}async function gt(t,n){const e=rt,r={fBryP:e(260),KcquM:e(235)};let o=st+"/v/"+encodeURIComponent(t);n&&(o+="?d="+encodeURIComponent(n));const s=await fetch(o,{method:r.fBryP,headers:{Accept:r[e(232)]}});if(!s.ok)throw new Error("HTTP "+s[e(264)]);return await s.json()}function dt(){return{...ut}}function ht(){const t=rt,n={Aoxks:function(t,n){return t!==n},otGhB:t(262)};return ut.valid&&n[t(223)](ut.tier,n.otGhB)}function vt(t){const n=rt,e={hJBTO:function(t){return t()},VQofq:n(225)};if(e[n(239)](ht))return!0;return["basic-text","headings",n(257),"lists",n(247),e[n(243)],n(251)][n(222)](t)}const yt=[rt(249),rt(240),rt(252),rt(229),"qr-codes","block-styling"];function wt(t){const n=rt,e={ZXqLe:function(t){return t()},VhAYy:function(t,n){return t+n}};if(!e.ZXqLe(ht))throw new Error(e[n(234)]('[DMD] The "'+t+n(255),"Get yours at https://dmdlang.dev/pricing"))}function mt(){const t={lAiya:rt(262)};ut={key:null,valid:!1,tier:t.lAiya,type:null,checked:!1,checkedAt:null,error:null},ct.clear()}var pt={setLicense:lt,getLicenseState:dt,isPro:ht,hasFeature:vt,requirePro:wt,clearLicense:mt,PRO_FEATURES:yt},zt=Object.freeze({__proto__:null,PRO_FEATURES:yt,clearLicense:mt,default:pt,getLicenseState:dt,hasFeature:vt,isPro:ht,requirePro:wt,setLicense:lt});const Ct=bt;function Bt(t,n={}){const e=bt,r=function(t,n,e){return t(n,e)},o=[];for(const s of t){const t=r(Dt,s,n);null!=t&&o[e(550)](t)}return o}function bt(t,n){t-=458;const e=Mt();let r=e[t];if(void 0===bt.hGwqsl){bt.WDZpXW=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},bt.xAomie={},bt.hGwqsl=!0}const o=t+e[0],s=bt.xAomie[o];return s?r=s:(r=bt.WDZpXW(r),bt.xAomie[o]=r),r}function Dt(t,n){const e=bt,r={AeeVk:function(t,n,e){return t(n,e)},sAAdg:function(t){return t()},BRoka:function(t){return t()},SFkrh:function(t){return t()},EPKqd:function(t,n,e){return t(n,e)}};switch(t[e(580)]){case y:return s=n,xt((i=Yt,u=(o=t)[bt(555)],i(u,{},s)),{style:"h"+o.depth,tocItem:!0,tocMargin:[0,0,0,0]});case O[e(515)]:return r.AeeVk(At,t,n);case m:return r[e(532)](Lt);case p:return r.BRoka(ht)?r[e(583)](qt):null;case O[e(492)]:return function(t){const n=bt;return{text:t.text,style:n(499),preserveLeadingSpaces:!0,background:n(470),margin:[0,5,0,5]}}(t);case C:return function(t,n){const e=bt,r={uWVsc:function(t,n){return t===n},goIBe:function(t){return t()},tuAoH:e(467),hZOEj:"#f9f9f9",DCJdo:function(t,n,e){return t(n,e)}},o={...n,_inBlockquote:!0},s=(r[e(472)](ht)&&n._currentBlockStyle?n[n[e(570)]]:null)||n[e(543)]||{},i=s[e(523)]??3,u=s.quoteBorderColor??r.tuAoH,c=s[e(562)]??r[e(563)],a=s.quotePadding,f=s.quotePaddingLeft??a??12,l=s.quotePaddingRight??a??8,g=s[e(564)]??a??8,d=s[e(473)]??a??8,h=s[e(541)]??[0,5,0,5];return{table:{widths:["*"],body:[[{stack:r.DCJdo(Bt,t[e(555)],o),style:e(543)}]]},layout:{hLineWidth:()=>0,vLineWidth:t=>r.uWVsc(t,0)?i:0,vLineColor:()=>u,fillColor:()=>c,paddingLeft:()=>f,paddingRight:()=>l,paddingTop:()=>g,paddingBottom:()=>d},margin:h}}(t,n);case O[e(471)]:return It(t,n);case O[e(509)]:return function(t,n){const e=Ct,r={XvYGf:function(t,n,e,r){return t(n,e,r)},YmVki:function(t,n){return t===n},DNkbF:function(t){return t()},piqEQ:function(t,n){return t!==n},NMXjm:e(540),aFPGd:function(t,n){return t!==n},ViaOp:function(t,n){return t>n},fApxc:function(t,n){return t===n},FMqca:e(575),mmYxS:function(t,n,e,r,o){return t(n,e,r,o)},BlFYb:"headerBorderBottomWidth",aDkrf:e(481),MkreT:function(t,n,e,r,o){return t(n,e,r,o)},BSHtB:function(t,n){return t-n},gfpjy:function(t,n){return t!==n},XJego:"borderLeftWidth",bigtG:function(t,n){return t===n},VEQad:"borderRightWidth",xxYfp:function(t,n){return t*n},RMyxe:"borderColor",zRRCN:"#cccccc",WgfDt:e(554),hqLMV:e(537),IrIAz:function(t,n){return t<n},HQywG:function(t,n){return t>n}},{rows:o,style:s}=t;if(!o||r.fApxc(o[e(547)],0))return null;const i=ht()&&s&&n[s]?n[s]:{},u={...jt,...i},c=u[e(476)]||0,a=o[e(547)],f=o[e(475)]((t,e)=>{const o=e<c;return t.map((s,i)=>{const f=bt,l=r.XvYGf(Yt,s._tokens||[{type:O[f(578)],text:s.text,raw:s.text}],{},n);if(r[f(460)](l,"")&&!s.style)return{};const g=xt(l);o?(u.headerBold&&(g.bold=!0),u.headerFontSize&&(g.fontSize=u.headerFontSize),u.headerColor&&(g.color=u.headerColor),u[f(494)]&&(g.alignment=u.headerAlignment)):u[f(528)]&&(g[f(586)]=u[f(528)]);let d=!1;if(r.DNkbF(ht)&&s.style&&n[s.style]){const t=n[s.style];if(Object.assign(g,t),void 0!==t[f(575)]){g._dmdBorderWidth=t.borderWidth,d=!0;const n=t.borderWidth>0;g[f(549)]=[n,n,n,n]}r[f(459)](t.borderColor,void 0)&&(g._dmdBorderColor=t.borderColor,d=!0,g[f(483)]=[t[f(483)],t[f(483)],t.borderColor,t[f(483)]])}if(!o&&r[f(460)](St(u,r.NMXjm,f(575))??1,0)&&!d){const n=r[f(460)](i,0),o=r[f(460)](i,t.length-1),s=r.YmVki(e,c),u=e===a-1;g[f(549)]=[n,s,o,u]}return g})}),l=Math.max(...f.map(t=>t.length));for(const t of f)for(;r.IrIAz(t.length,l);)t.push({});const g={table:{body:f,widths:u.widths?u[e(493)][e(475)](t=>"expand"===t?"*":"fit"===t?e(524):t):Array(l).fill("*")}};return r[e(464)](c,0)&&(g.table[e(476)]=c),g.layout={hLineWidth(t,n){const o=e;let s=0;if(t>0)for(const e of n[o(582)][o(585)][t-1])r.aFPGd(e._dmdBorderWidth,void 0)&&(s=Math.max(s,e._dmdBorderWidth));if(t<n.table[o(585)].length)for(const e of n[o(582)].body[t])void 0!==e[o(482)]&&(s=Math.max(s,e[o(482)]));if(r[o(466)](s,0))return s;const i=n.table.body[o(547)];return 0===t?St(u,o(496),"borderWidth")??1:r[o(514)](t,i)?r.XvYGf(St,u,o(565),r[o(485)])??1:t===c?r[o(573)](St,u,r[o(491)],r.aDkrf,r[o(485)])??1:r.MkreT(St,u,"bodyBorderBottomWidth","bodyBorderWidth","borderWidth")??1},vLineWidth(t,n){const o=e;let s=0;for(const e of n.table.body)t>0&&e[r[o(484)](t,1)]&&r.gfpjy(e[t-1][o(482)],void 0)&&(s=Math.max(s,e[r[o(484)](t,1)]._dmdBorderWidth)),t<e[o(547)]&&e[t]&&r.gfpjy(e[t]._dmdBorderWidth,void 0)&&(s=Math.max(s,e[t]._dmdBorderWidth));if(s>0)return s;const i=n.table[o(493)].length;if(0===t)return St(u,r.XJego,"borderWidth")??1;if(r.bigtG(t,i))return r.XvYGf(St,u,r[o(508)],r.FMqca)??1;const c=St(u,r.NMXjm,r[o(485)])??1;return Math[o(510)](r[o(539)](c,.5),c>0?.5:0)},hLineColor(t,n){const o=e,s=n.table.body[o(547)];return r.fApxc(t,0)||r.bigtG(t,s)?St(u,r.RMyxe)??r[o(526)]:r.bigtG(t,c)?St(u,"headerBorderBottomColor",o(501),o(483))??o(467):r[o(573)](St,u,o(480),"bodyBorderColor",o(483))??r.zRRCN},vLineColor(){const t=e;return St(u,t(483))??t(467)},fillColor(t){const n=e;if(t<c)return u[n(520)]||null;const o=r.BSHtB(t,c);return u[n(463)]?o%2==1?u.bodyAlternateFillColor:u[n(542)]||null:u.bodyFillColor||null},paddingLeft:()=>St(u,"paddingLeft",r[e(495)])??4,paddingRight:()=>St(u,"paddingRight","padding")??4,paddingTop(){const t=e;return r[t(461)](St,u,"paddingTop",t(554))??2},paddingBottom(){const t=e;return St(u,r[t(505)],t(554))??2}},g}(t,n);case O[e(486)]:return function(t,n){const e=Ct,r={uNlJF:function(t,n,e){return t(n,e)},HHGjf:function(t,n){return t===n},NGbSC:function(t,n,e,r){return t(n,e,r)},hChDJ:function(t,n){return t(n)}},o={columns:t.columns[e(475)](t=>{const o=e;let s;if(t.tokens&&t.tokens[o(547)]>0){const e=r[o(522)](Bt,t.tokens,n);s=r.HHGjf(e[o(547)],1)?e[0]:{stack:e}}else{const e=t.text||"",i=r.NGbSC(Yt,t[o(531)]||[{type:O[o(578)],text:e,raw:e}],{},n);s=r[o(561)](xt,i)}return s[o(577)]="*",s})};return ht()&&t[e(468)]&&n[t.style]&&Object[e(518)](o,n[t.style]),o}(t,n);case O[e(567)]:return r[e(572)](kt,t,n);case O[e(584)]:return{text:""};case O[e(581)]:return null;default:return t.text?{text:t[e(525)]}:null}var o,s,i,u}function xt(t,n={}){const e=bt,r={Rdysf:function(t,n){return t>n}};if("string"==typeof t||!Array.isArray(t))return{text:t,...n};let o=!1;for(const n of t)if(n&&(n.image||n.qr||n.toc||n.svg)){o=!0;break}if(!o)return{text:t,...n};const s=[];let i=[];for(const o of t)o&&(o[e(544)]||o.qr||o[e(478)]||o[e(502)])?(r[e(513)](i[e(547)],0)&&(s.push({text:i,...n}),i=[]),s.push(o)):i[e(550)](o);return r[e(513)](i.length,0)&&s.push({text:i,...n}),1===s.length?s[0]:{stack:s}}function At(t,n){const e=bt,r={VCsxc:function(t,n,e,r){return t(n,e,r)},bNxUM:"object"},o=xt(r[e(497)](Yt,t.tokens,{},n));return o&&typeof o===r.bNxUM&&!Array[e(535)](o)&&!n?._inBlockquote&&!o.margin&&(o[e(546)]=n?.[e(517)]?.[e(546)]||[0,0,0,4]),o}function Lt(){const t=bt;return{canvas:[{type:{ybfVt:"line"}[t(487)],x1:0,y1:0,x2:515,y2:0,lineWidth:1,lineColor:t(467)}],margin:[0,10,0,10]}}function Mt(){const t=["sff5D0C","w1fsienVzgvD","vMLHt3a","i2nJy2nJyW","C3r5Bgu","ndmWmg5MD0XOwG","i2y1zJvMnq","teLtva","z29jqMu","CxvVDgvqywrKAw5NqM90Dg9T","ywz0zxi","BwfW","AgvHzgvYuM93CW","vgLsqvK","Dg9J","yNvSBgv0vhLWzq","yM9KEujVCMrLCKjVDhrVBunVBg9Y","AgvHzgvYqM9YzgvYv2LKDgG","x2rTzejVCMrLCLDPzhrO","yM9YzgvYq29SB3i","qLniDei","rK1Xy2e","q09mvu1o","EwjMvNq","y292zxi","C3rYAw5N","Dw5KzxjSAw5L","qMXgwwi","q09erv9cte9dsW","D2LKDgHZ","AgvHzgvYqwXPz25Tzw50","v2DMrhq","yM9YzgvYvg9Wv2LKDgG","vKnZEgm","twrksM8","y29Kzq","AxrLBxm","AgvHzgvYqM9YzgvYq29SB3i","C3zN","y2vUDgvY","teLosW","Ahfmtvy","zM9VDgvY","uKv1C2u","vKvrywq","vefcteu","Bwf4","ode4mJi2wunzvwvn","mJaXmZi4AgDLALnt","uMr5C2y","zKfWEgm","uefsquDsqvbi","B3b4sw4","zgvMyxvSDa","yxnZAwDU","rLLVCwy","AgvHzgvYrMLSBenVBg9Y","BwfYA2vYq29SB3i","Du5SsKy","CxvVDgvcB3jKzxjxAwr0Aa","yxv0BW","Dgv4Da","ELjsq04","mtrYCgjeDuy","yM9KEufSAwDUBwvUDa","AgvHzgvY","AgvPz2H0","x3rVA2vUCW","C0fbzgC","zxzLCNK","CMDnrKm","AxnbCNjHEq","mxPszuHfCa","CgfKzgLUz0jVDhrVBq","u1vqrvjtq1jjufq","EhHzzNa","yM9KEujVCMrLCLDPzhrO","CxvVDgvnyxjNAw4","yM9KEuzPBgXdB2XVCG","yMXVy2TXDw90zq","Aw1Hz2u","u1vcu0nssvbu","BwfYz2LU","BgvUz3rO","C3rHCNq","yM9YzgvY","ChvZAa","zML0","Bhzrr3u","AhjLzG","CgfKzgLUzW","Dg9Rzw5Z","q09erv9tuefo","zgf0yq","nhb6r0fwBa","mJC3mZK1B1LZtKHu","BfvUqNO","AenOreO","CxvVDgvgAwXSq29SB3i","AfPprwO","CxvVDgvqywrKAw5Nvg9W","yM9YzgvYqM90Dg9Tv2LKDgG","nZjyrNrNz1C","q09ovevovf9cte9dsW","i2yYzJjMmG","mJuYnJe3nLbxu2HJtW","x2n1CNjLBNrcBg9JA1n0EwXL","mtaWnty0mLPRuuv6Bq","rvblCwq","Bw1zEfm","teLorv9cuKvbsW","yM9YzgvYv2LKDgG","C3jJ","D2LKDgG","vevyva","u1rssuTfveHst1vhsa","DhLWzq","u1bbq0u","DgfIBgu","u0zRCMG","ru1qvfLFuefsquDsqvbi","yM9KEq","ywXPz25Tzw50","mZiWne5UzM1fvG","CgLXrve","ww1wA2K","whzzr2y","mJeXnJiXm2XJrgvzDa","yM9KEufSDgvYBMf0zuzPBgXdB2XVCG"];return(Mt=function(){return t})()}function qt(){return{text:"",pageBreak:bt(474)}}function It(t,n){const e=bt,r={lUnBz:function(t,n,e){return t(n,e)},TiRAY:function(t){return t()},rqZUd:"lower-alpha",lvQGu:function(t,n){return t===n},QxAbK:e(489),vzSfG:function(t,n){return t-n}},o=r[e(477)](ht)?n._currentBlockStyle:null,s=o&&n[o]||{},i=t[e(500)][e(475)](t=>{const o=e,s=xt(Yt(t.tokens,{},n));return t.nestedList?[s,r[o(560)](It,t.nestedList,n)]:s});if(t.ordered){const n={ol:i};return"ol-alpha"===t.listType&&(n.type=r.rqZUd),void 0!==t.start&&1!==t[e(548)]&&"a"!==t[e(548)]&&(n.start=r[e(552)](typeof t[e(548)],r.QxAbK)?r.vzSfG(t.start.charCodeAt(0),96):t[e(548)]),s[e(521)]&&(n[e(521)]=s[e(521)]),n}const u={ul:i};return s[e(479)]&&(u.type=s[e(479)]),s[e(521)]&&(u.markerColor=s[e(521)]),u}!function(t){const n=bt,e=t();for(;;)try{if(227507===-parseInt(n(536))/1*(parseInt(n(512))/2)+-parseInt(n(511))/3+-parseInt(n(558))/4*(parseInt(n(559))/5)+parseInt(n(571))/6*(-parseInt(n(527))/7)+-parseInt(n(569))/8+parseInt(n(458))/9*(parseInt(n(469))/10)+-parseInt(n(462))/11*(-parseInt(n(566))/12))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(Mt);const jt={headerRows:1,borderWidth:1,borderColor:Ct(467),headerFillColor:Ct(568),headerBold:!0,headerBorderBottomWidth:2,headerBorderBottomColor:"#999999",bodyFillColor:"#fafafa",padding:6,paddingLeft:8,paddingRight:8};function St(t,...n){const e=function(t,n){return t!==n};for(const r of n)if(e(t[r],void 0))return t[r]}function kt(t,n){const e=Ct,r={REuse:e(506),CIXst:function(t,n){return t===n},CKEAJ:"background",opxIn:function(t,n){return t||n},HavRn:function(t){return t()},RljYy:function(t,n,e){return t(n,e)}},{name:o,style:s}=t;if(o===e(529)||o===r[e(507)]||r.CIXst(o,r.CKEAJ))return{_pageLayer:o,content:Bt(t.tokens,n),style:r[e(516)](s,null)};if(!r.HavRn(ht))return{stack:Bt(t.tokens,n)};const i=s||o,u=n[i]?{...n,_currentBlockStyle:i}:n,c={stack:r.RljYy(Bt,t[e(555)],u)};return n[o]&&Object.assign(c,n[o]),s&&n[s]&&Object.assign(c,n[s]),c}function Yt(t,n={},e={}){const r=Ct,o={rgMFC:function(t,n){return t>n},ZMASl:function(t,n){return t!==n}};if(!t||0===t.length)return"";const s=o[r(534)](Object.keys(n).length,0);if(1===t[r(547)]&&t[0][r(580)]===O[r(578)]&&!s)return t[0][r(525)];const i=[];for(const s of t){const t=Nt(s,n,e);o.ZMASl(t,null)&&void 0!==t&&(Array[r(535)](t)?i[r(550)](...t):i[r(550)](t))}return!s&&i[r(533)](t=>"string"==typeof t)?i.join(""):i}function Nt(t,n={},e={}){const r=Ct,o={FYoqf:function(t,n,e,r){return t(n,e,r)},Wyfvg:r(490),jPXXd:"#f0f0f0",SVgjG:"#0563C1",MdJJo:function(t,n){return t!==n},mskYZ:function(t,n){return t!==n},CurXL:r(503),IyoNo:function(t){return t()}},s=Object.keys(n).length>0;switch(t[r(580)]){case O[r(578)]:case P:return s?{text:t.text,...n}:t[r(525)];case O[r(574)]:return s?{text:"\n",...n}:"\n";case q:return Yt(t.tokens,{...n,bold:!0},e);case I:return o.FYoqf(Yt,t.tokens,{...n,italics:!0},e);case j:return Yt(t.tokens,{...n,decoration:o.Wyfvg},e);case O[r(579)]:return o[r(519)](Yt,t[r(555)],{...n,decoration:"lineThrough"},e);case O[r(545)]:return{text:t.text,sub:!0,...n};case O[r(538)]:return{text:t[r(525)],sup:!0,...n};case O[r(556)]:return{text:t[r(525)],background:o.jPXXd,fontSize:10,...n};case O[r(504)]:return{text:t.text,link:t[r(553)],color:o.SVgjG,decoration:"underline",...n};case K:const i={image:t[r(576)],...n};if(t[r(468)]){if(i[r(468)]=t.style,e[t[r(468)]]){const n=e[t[r(468)]];void 0!==n.width&&(i.width=n[r(577)]),o[r(498)](n.height,void 0)&&(i[r(530)]=n[r(530)]),void 0!==n[r(586)]&&(i.alignment=n.alignment),o.mskYZ(n[r(551)],void 0)&&(i.fit=n[r(551)]),void 0!==n.cover&&(i[r(488)]=n.cover)}}else i[r(577)]=460,i.alignment=o.CurXL;return i;case H:return ht()?{qr:t[r(557)],...n}:{text:r(465)};case Z:return o.IyoNo(ht)?{toc:{title:{text:t.text,style:"tocTitle"}}}:{text:t[r(525)]};case G:return Yt(t.tokens,{...n,style:t.style},e);default:return s?{text:t.text||"",...n}:t[r(525)]||""}}!function(t){const n=Kt,e=t();for(;;)try{if(597332===-parseInt(n(146))/1*(parseInt(n(166))/2)+-parseInt(n(151))/3*(parseInt(n(152))/4)+-parseInt(n(165))/5+parseInt(n(153))/6*(parseInt(n(155))/7)+parseInt(n(154))/8+-parseInt(n(158))/9*(parseInt(n(156))/10)+-parseInt(n(172))/11*(-parseInt(n(148))/12))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(Gt);const Wt={DEBUG:0,INFO:1,WARN:2,ERROR:3,NONE:4};function Kt(t,n){t-=146;const e=Gt();let r=e[t];if(void 0===Kt.jKmTGY){Kt.mOsnRS=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},Kt.HgVYXr={},Kt.jKmTGY=!0}const o=t+e[0],s=Kt.HgVYXr[o];return s?r=s:(r=Kt.mOsnRS(r),Kt.HgVYXr[o]=r),r}const Ht={level:Wt.WARN,handler:(t,...n)=>{const e=Kt,r={pveir:function(t,n){return t===n},MrISX:"ERROR",pKyvj:function(t,n){return t===n}},o="[DMD] ["+t+"]";r[e(161)](t,r.MrISX)?console.error(o,...n):"WARN"===t?console[e(150)](o,...n):r.pKyvj(t,"INFO")?console.info(o,...n):console[e(162)](o,...n)}};const Zt={debug:(...t)=>{const n=Kt;({NfWPc:function(t,n){return t<=n}})[n(159)](Ht[n(147)],Wt[n(167)])&&Ht[n(164)](n(167),...t)},info:(...t)=>{const n=Kt,e={NjvqS:n(171)};Ht[n(147)]<=Wt[n(171)]&&Ht.handler(e[n(160)],...t)},warn:(...t)=>{const n=Kt,e={jytfp:n(169)};Ht[n(147)]<=Wt[n(169)]&&Ht[n(164)](e.jytfp,...t)},error:(...t)=>{const n=Kt,e={ZlLFA:function(t,n){return t<=n},EScQU:"ERROR"};e[n(157)](Ht[n(147)],Wt.ERROR)&&Ht.handler(e[n(168)],...t)}};function Gt(){const t=["Bgv2zwW","nJbrtuDSA0K","zNvUy3rPB24","D2fYBG","nZK0mxPWsNrowa","odeYshDcAfH2","mtjlA2rZAxC","odu2mdu2mg93AgvhCW","mJa4ndaXouz5C3f6DG","mJmZmhbTwLvnsa","wMXmrKe","ndiZwxr1yLj4","tMzxugm","tMP2Cvm","ChzLAxi","Bg9N","C3rYAw5N","AgfUzgXLCG","ntu4nty0nw5WyxLjEG","ndKXnJrozuTTuwO","revcvuC","rvnJuvu","v0fstG","Dg9vChbLCKnHC2u","su5gtW","mJaXnJK5m2fsDvzxBa","mtnYDKvsEfK"];return(Gt=function(){return t})()}function Pt(){const t=["BgvUz3rO","mZmZodq5mgjZrKPbsa","ANnVBG","Aw5JBhvKzxm","AxrHBgLJCW","igzVBNrZ","w0zVBNrZxsbgB250ici","ndaZndvWs01Tr0K","lujVBgrjDgfSAwmUDhrM","odi5mZC2rMfcqMTW","BM9YBwfS","yM9Sza","mZu0ntmXwK5mr0TS","iIbUB3qGyxzHAwXHyMXLlcb3AwXSigzHBgWGyMfJAYb0BYbsB2jVDg8","mJHws3PNALO","luL0ywXPyY50Dgy","w0zVBNrZxsbfCNjVCIbSB2fKAw5Nig1HBMLMzxn0oG","ngLAuwP2tG","l21HBMLMzxn0lMPZB24","tMH4zvK","w0zVBNrZxsbmB2fKzwqGBwfUAwzLC3qGD2L0Aca","nZm0mtbjvxbwAvq","tMfOBNe","mtjwDMvLsvO","zgvIDwC","yM9SzgL0ywXPy3m","nde5otuYwuHdqxbu","mJi5ntm1mw9xALvjrW","D2fYBG","Ahr0Chm6lY9WDwiTyZa2ngu4mwm5mwmWngq2owiXmZLHmZe5nwnMzgnJzMeUCJiUzgv2","lujVBgqUDhrM","w0zVBNrZxsbnyw5PzMvZDcbUB3qGyxzHAwXHyMXLlcbJyw5UB3qGBg9HzcaI","BwvZC2fNzq"];return(Pt=function(){return t})()}const Ut=Tt;!function(t){const n=Tt,e=t();for(;;)try{if(220297===parseInt(n(258))/1+-parseInt(n(255))/2+-parseInt(n(234))/3*(parseInt(n(263))/4)+-parseInt(n(253))/5*(-parseInt(n(236))/6)+-parseInt(n(260))/7*(-parseInt(n(239))/8)+-parseInt(n(240))/9+parseInt(n(247))/10)break;e.push(e.shift())}catch(t){e.push(e.shift())}}(Pt);const Ot=Ut(242);let Xt=null;async function Jt(){const t=Ut,n="[Fonts] Failed to load font manifest";if(Xt)return Xt;try{const e=await fetch(Ot+t(264));return e.ok?(Xt=await e[t(248)](),Zt.debug(t(233)+Object.keys(Xt)[t(246)]+t(251)),Xt):(Zt[t(241)](n),null)}catch(n){return Zt[t(241)](t(262),n[t(245)]),null}}function Tt(t,n){t-=232;const e=Pt();let r=e[t];if(void 0===Tt.hVjtOS){Tt.XMsdqt=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},Tt.ismoVs={},Tt.hVjtOS=!0}const o=t+e[0],s=Tt.ismoVs[o];return s?r=s:(r=Tt.XMsdqt(r),Tt.ismoVs[o]=r),r}async function Et(t){const n=Ut,e={swAAl:function(t){return t()},Nahnq:n(256),NhxeY:n(257),KXkIK:n(250)};Zt.debug("[Fonts] Fetching font: "+t);const r=await e.swAAl(Jt);if(!r)return Zt.warn(n(244)+t+'"'),null;const o=r[t];if(!o)return Zt[n(241)](n(252)+t+n(259)),null;const{folder:s,styles:i}=o,u=s.toLowerCase(),c=Ot+"/"+u,a=c+"/"+s+"-Regular.ttf";if(!i[n(249)](e[n(235)]))return Zt[n(241)](n(252)+t+'" has no regular weight'),null;const f={normal:a,bold:i.includes(e[n(232)])?c+"/"+s+n(243):a,italics:i.includes(e.KXkIK)?c+"/"+s+n(261):a,bolditalics:i[n(249)]("bolditalics")?c+"/"+s+n(254):a};return!i.includes(n(238))&&i.includes(e.NhxeY)&&(f[n(238)]=f[n(257)]),Zt[n(237)]('[Fonts] Font "'+t+'" ready with '+i[n(246)]+" styles"),f}const Rt=_t;function Vt(){const t=["Dw5KzwzPBMvK","mteZnJC2menxwwXfqG","yM9Sza","Bg9N","sujLuxa","vgfRsxe","D2fYBG","tg9HzgvKifjVyM90BYbMB250CYbMCM9TienetIaOtM9Kzs5QCYbMywXSyMfJAYK","B2jQzwn0","mtaWnZK5ndLbuNz1De8","Ahr0Chm6lY9WDwiTyZa2ngu4mwm5mwmWngq2owiXmZLHmZe5nwnMzgnJzMeUCJiUzgv2","tg9HzgvKifjVyM90BYbMB250CYbMCM9TienetG","mZy0nZu5Cfjvug5S","mJeYEKD1swPi","yxnZAwDU","CgrMtwfRzq","vw5ZDxbWB3j0zwqGzw52AxjVBM1LBNqGB3iGCgf0AcbMB3jTyxq","mtGWmJi5D1zzrgTl","y2XLyxi","nteYntvNsfHWEgu","teLAC2C","Ahr0Chm6lY8","z2v0","DMfSDwvZ","uM9IB3rVlu1LzgL1Bs50Dgy","uM9IB3rV","C3rHCNrZv2L0Aa","igzYB20G","BwfW","w0rnrcbgB250xsbgywXSyMfJAYb0BYbdre4GzMv0y2G","D1zgtxO","Bxv5zg4","BM9YBwfS","tg9HzgLUzYbMB250ia","w0rnrcbgB250xsb2zNngB250CYbSB2fKzwq6","mKXtAfLyrq","otmXntC1q2nfA1vd","qxv0BY1SB2fKzwqGzM9UDdOG","AM9YAxK","zgvIDwC","q2XLyxjLzcbWCMvSB2fKzwqGzM9UDhm","ywXS","A2v5CW","DMzZ","q291BgqGBM90igf1Dg8TBg9HzcbMB250ici","uM9IB3rVluL0ywXPyY50Dgy","Ahr0CdOVlW","mJDxvwryvhu","rM9UDcaI","yxjYyxLcDwzMzxi","nLjHCfDstq","C2XPy2u","BwvZC2fNzq","igzVCIa","A3rtA2W","qxv0BY1SB2fKAw5NigzVBNq6ia","uM9IB3rVlvjLz3vSyxiUDhrM","vwL3Egm","ChvZAa","tgDqsgy","re1ex0Ltx05preu","u3HUq20","C3rHDhvZ","mtGWmda0mfzNtgnluW","BgvUz3rO","yM9SzgL0ywXPy3m"];return(Vt=function(){return t})()}!function(t){const n=_t,e=t();for(;;)try{if(391980===-parseInt(n(470))/1*(-parseInt(n(493))/2)+parseInt(n(494))/3+parseInt(n(471))/4*(-parseInt(n(477))/5)+parseInt(n(442))/6*(parseInt(n(475))/7)+-parseInt(n(459))/8+parseInt(n(439))/9*(-parseInt(n(455))/10)+parseInt(n(467))/11)break;e.push(e.shift())}catch(t){e.push(e.shift())}}(Vt);const Ft=void 0!==globalThis[Rt(452)]||"undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node;function _t(t,n){t-=436;const e=Vt();let r=e[t];if(void 0===_t.txwpWJ){_t.IMhbsd=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},_t.HnYCFY={},_t.txwpWJ=!0}const o=t+e[0],s=_t.HnYCFY[o];return s?r=s:(r=_t.IMhbsd(r),_t.HnYCFY[o]=r),r}const Qt=!Ft&&typeof window!==Rt(458),$t=new Map,tn={},nn=Rt(468),en={"Roboto-Regular.ttf":"roboto/Roboto-Regular.ttf","Roboto-Medium.ttf":"roboto/Roboto-Bold.ttf","Roboto-Italic.ttf":"roboto/Roboto-Italic.ttf","Roboto-MediumItalic.ttf":"roboto/Roboto-BoldItalic.ttf"},rn={normal:Rt(448),bold:Rt(482),italics:Rt(437),bolditalics:"Roboto-MediumItalic.ttf"};let on=null;async function sn(){const t=Rt,n={LHxhl:function(t,n){return t(n)},LfpMD:function(t,n){return t(n)},PuLQc:t(458),lvoep:"pdfmake/build/vfs_fonts",wVFMz:"none",Icfsc:t(466),HzVii:function(t,n){return t>n},dwhXO:"[DMD Font] Loaded from vfs_fonts, keys:",muydn:function(t,n){return t===n},WxWWE:t(465),RheLb:"Could not load Roboto fonts from CDN:"},e={Roboto:rn};if(on)return{vfs:{...on},fonts:e};const r={};if(Ft)try{let e=null;try{const t=typeof require!==n.PuLQc?require:null;t&&(e=n.LfpMD(t,n.lvoep))}catch(t){}const o=e?.[t(473)]?.vfs||e?.[t(501)]||e;if(console.log(t(492),!!e),console.log("[DMD Font] pdfmakeVfs keys:",o?Object.keys(o)[t(443)](0,5):n[t(488)]),o&&typeof o===n.Icfsc&&n.HzVii(Object.keys(o).length,0)){for(const n of Object[t(481)](rn))o[n]&&(r[n]=o[n]);on=r,console[t(461)](n.dwhXO,Object[t(500)](r).length)}if(n[t(489)](Object.keys(r).length,0)){console.log(t(487));const e=Object.entries(en).map(async([e,r])=>{const o=t,s=nn+"/"+r,i=await n.LHxhl(fetch,s);if(!i.ok)throw new Error("HTTP "+i[o(454)]+o(445)+e);const u=await i.arrayBuffer();return{filename:e,data:Buffer.from(u)}}),o=await Promise.all(e);for(const{filename:t,data:n}of o)r[t]=n;on=r,Zt.debug(n.WxWWE)}}catch(n){Zt[t(464)]("Could not load Roboto fonts:",n[t(444)])}else if(Qt)try{const e=Object.entries(en).map(async([e,r])=>{const o=t,s=nn+"/"+r,i=await fetch(s);if(!i.ok)throw new Error("HTTP "+i[o(454)]+o(445)+e);const u=await i[o(441)](),c=new Uint8Array(u);let a="";for(let t=0;t<c[o(456)];t++)a+=String.fromCharCode(c[t]);return{filename:e,data:n.LfpMD(btoa,a)}}),o=await Promise[t(499)](e);for(const{filename:t,data:n}of o)r[t]=n;on=r,Zt[t(497)](t(469))}catch(t){Zt.warn(n.RheLb,t.message)}return{vfs:r,fonts:e}}async function un(t,n,e){const r=Rt,o={dNrFy:function(t,n){return t!==n},TakIq:"string",cUTLT:function(t,n){return t(n)},SxnCm:function(t,n){return t>n}};for(const[s,i]of Object.entries(t)){if(o.dNrFy(typeof i,r(466))||null===i)continue;const t={};for(const[e,u]of Object.entries(i)){if(!u||typeof u!==o[r(463)])continue;const i=s+"-"+e;if($t.has(i)){const o=s+"-"+e+".ttf";n[o]=$t[r(480)](i),t[e]=o;continue}try{Zt.debug(r(491)+s+" "+e+r(485)+u);const c=await o.cUTLT(cn,u),a=s+"-"+e+".ttf";n[a]=c,t[e]=a,$t.set(i,c)}catch(t){Zt[r(464)]("Could not load font "+s+" "+e+r(485)+u+":",t[r(444)])}}o[r(453)](Object[r(500)](t).length,0)&&(t[r(460)]||(t.bold=t.normal),t.italics||(t.italics=t.normal),t[r(457)]||(t.bolditalics=t.bold||t[r(490)]),e[s]=t)}}async function cn(e){const r=Rt,o={ZLUnv:r(479),joriy:function(t,n){return t(n)},YEYpp:function(t,n){return t<n},LIZsg:function(t,n){return t(n)},MtuqD:function(t,n){return t(n)},BOvpG:r(474)};if(e[r(484)](r(438))||e.startsWith(o.ZLUnv)){const t=await o[r(496)](fetch,e);if(!t.ok)throw new Error("HTTP "+t.status);const n=await t.arrayBuffer();if(Qt){const t=new Uint8Array(n);let e="";for(let n=0;o.YEYpp(n,t[r(456)]);n++)e+=String.fromCharCode(t[n]);return btoa(e)}return Buffer.from(n)}if(Ft)return o[r(478)](t.readFileSync,o.MtuqD(n.resolve,e));throw new Error(o.BOvpG)}async function an(t){const n=Rt;var e,r,o,s;await(e=un,r=t,o={},s={},e(r,o,s)),Object[n(472)](tn,t),Zt[n(497)]("Preloaded fonts: "+Object.keys(t).join(", "))}function fn(){const t=Rt,n={Uiwxc:t(498)};for(const n of Object[t(500)](tn))delete tn[n];$t[t(476)](),Zt.debug(n[t(449)])}async function ln(t){const n=Rt,e={zwSSI:n(483),LgPHf:function(t,n){return t(n)}};if(tn[t])return Zt.debug(n(440)+t+'" already preloaded'),!0;if(t===e.zwSSI)return!0;Zt[n(497)](n(447)+t);try{const r=await e[n(451)](Et,t);return r?(tn[t]=r,Zt.debug(n(495)+t),!0):(Zt[n(464)](n(436)+t+'"'),!1)}catch(e){return Zt[n(464)]('Error auto-loading font "'+t+'":',e[n(444)]),!1}}const gn=pn;!function(t){const n=pn,e=t();for(;;)try{if(503700===-parseInt(n(443))/1*(parseInt(n(484))/2)+-parseInt(n(437))/3+parseInt(n(445))/4+-parseInt(n(452))/5*(-parseInt(n(486))/6)+-parseInt(n(498))/7*(-parseInt(n(439))/8)+-parseInt(n(462))/9*(-parseInt(n(459))/10)+parseInt(n(458))/11)break;e.push(e.shift())}catch(t){e.push(e.shift())}}(mn);const dn=new Map,hn={".png":gn(442),".jpg":"image/jpeg",".jpeg":gn(492),".gif":"image/gif",".bmp":"image/bmp",".svg":gn(454)};function vn(t){const n=gn,e={IJCEo:"string",YRlIN:n(438)};if(typeof t===e.IJCEo){if(t[n(474)](e.YRlIN))return!0;if(t.trim()[n(457)](n(487))||t.trim()[n(457)]("<?xml"))return!0}return!1}async function yn(t,n){const e=gn,r={MFSJU:e(447),bzAIP:function(t,n){return t(n)},WslQH:function(t,n){return t(n)},XJFoi:e(487),RIWKA:e(465),wyDCn:function(t,n){return t!==n},uBces:e(473),FvbAD:function(t,n,e){return t(n,e)},jozUd:function(t,n,e){return t(n,e)}};if(Array.isArray(t))for(let o=0;o<t.length;o++){const s=t[o];if(s&&typeof s===r.MFSJU){if(s[e(468)]&&typeof s.image===e(473)&&!s[e(468)].startsWith(e(446)))try{const i=await r.bzAIP(wn,s[e(468)]);r[e(494)](vn,s[e(468)])||"string"==typeof i&&(i[e(455)]()[e(457)](r[e(470)])||i.trim().startsWith(r.RIWKA))?(t[o]={svg:i},s.width&&(r.wyDCn(typeof s.width,e(473))||!s[e(448)].includes("%"))&&(t[o][e(448)]=s[e(448)]),s.height&&(r[e(453)](typeof s[e(488)],r[e(432)])||!s[e(488)][e(477)]("%"))&&(t[o][e(488)]=s[e(488)]),s.style&&(t[o][e(485)]=s.style)):!n.images[s[e(468)]]&&(n[e(499)][s[e(468)]]=i)}catch(n){Zt.warn('Could not resolve image "'+s[e(468)]+'":',n.message),t[o]={text:e(440)+s[e(468)]+"]",color:e(450),italics:!0}}if(s[e(480)]&&Array.isArray(s[e(480)])&&await yn(s.text,n),s[e(444)]&&await r[e(451)](yn,s[e(444)],n),s[e(463)]&&await yn(s.columns,n),s.table&&s.table.body)for(const t of s[e(478)].body)await r.FvbAD(yn,t,n);s.ul&&await r.FvbAD(yn,s.ul,n),s.ol&&await r[e(433)](yn,s.ol,n)}}}async function wn(e){const r=gn,o={DacdX:r(483)};if(dn.has(e))return Zt[r(502)](r(469)+e),dn.get(e);let s;if(Zt[r(502)](r(460)+e),Ft)s=await async function(e){const r=gn,o={kPhTU:r(466),YRtdK:"https://",SevIi:r(501),rMNqN:function(t,n){return t(n)},OucIT:function(t,n){return t===n},msFlv:r(497),DGJEc:"image/png"};if(e.startsWith(o.kPhTU)||e[r(457)](o.YRtdK)){const t=await fetch(e);if(!t.ok)throw new Error(r(467)+t.status);const n=t.headers[r(431)](o[r(464)])||"";if(o.rMNqN(vn,e)||n[r(477)](r(500)))return await t.text();const s=await t.arrayBuffer(),i=Buffer.from(s),u=n?n.split(";")[0][r(455)]():"image/png",c=i.toString("base64");return r(446)+u+r(456)+c}const s=o[r(461)](n.resolve,e),i=n.extname(s).toLowerCase();if(o[r(476)](i,r(438)))return t.readFileSync(s,o.msFlv);const u=t.readFileSync(s),c=hn[i]||o.DGJEc,a=u.toString("base64");return r(446)+c+r(456)+a}(e);else{if(!Qt)throw new Error(o.DacdX);s=await async function(t){const n=gn,e=await fetch(t);if(!e.ok)throw new Error(n(467)+e[n(435)]);const r=e.headers[n(431)](n(501))||"";if(vn(t)||r[n(477)]("image/svg"))return await e.text();const o=await e[n(482)]();return new Promise((t,e)=>{const r=n,s=new FileReader;s[r(481)]=()=>t(s.result),s[r(471)]=e,s[r(493)](o)})}(e)}return dn[r(490)](e,s),s}function mn(){const t=["AgvPz2H0","AxnbCNjHEq","C2v0","D2fYBG","Aw1Hz2uVANbLzW","CMvHzefZrgf0yvvsta","v3nSuuG","yMfJA2DYB3vUza","q2XLyxjLzcbPBwfNzsbJywnOzq","DxrMltG","mJfRCfjzBvm","Aw1Hz2vZ","Aw1Hz2uVC3zN","y29UDgvUDc10ExbL","zgvIDwC","z2v0","DujJzxm","AM96vwq","zw50CMLLCW","C3rHDhvZ","BwvZC2fNzq","mJG5nJG2m2PVD2vKqG","lNn2zW","mJa3nde2ohfmzwLZvW","w0LTywDLoIa","y29UDgvUDa","Aw1Hz2uVCg5N","mZq0nte1tKvXtw9i","C3rHy2S","ndyZntm2tMjYvKnm","zgf0ytO","B2jQzwn0","D2LKDgG","C0rXDMq","iZK5otK5oq","rNzIquq","nxHOugnKua","D3Leq24","Aw1Hz2uVC3zNk3HTBa","DhjPBq","o2jHC2u2ncW","C3rHCNrZv2L0Aa","mtuYmZqWmvPizxDOsW","odyZmfb0vMzOEq","uMvZB2X2Aw5NigLTywDLoIa","CK1oCu4","mJK5n3L4qMfArW","y29SDw1UCW","u2v2swK","pd94BwW","Ahr0CdOVlW","sfruuca","Aw1Hz2u","sw1Hz2uGy2fJAguGAgL0oIa","wePgB2K","B25LCNjVCG","uxHlsM0","C3rYAw5N","zw5KC1DPDgG","uhjLBg9HzgvKigLTywDLoIa","t3vJsvq","Aw5JBhvKzxm","DgfIBgu","ruTJseu","Dgv4Da","B25SB2fKzw5K","yMXVyG","vw5ZDxbWB3j0zwqGzw52AxjVBM1LBNqGzM9YigLTywDLihjLC29SDxrPB24","mMDguwvxta","C3r5Bgu","mJK2ntyXnhzUA2PrAG","phn2zW"];return(mn=function(){return t})()}function pn(t,n){t-=431;const e=mn();let r=e[t];if(void 0===pn.BhVxNd){pn.SHUYMf=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},pn.iWlfoT={},pn.BhVxNd=!0}const o=t+e[0],s=pn.iWlfoT[o];return s?r=s:(r=pn.SHUYMf(r),pn.iWlfoT[o]=r),r}function zn(){const t=gn,n={QxKJm:t(496)};dn.clear(),Zt.debug(n[t(472)])}const Cn=Sn;function Bn(){return zt[Sn(321)]()}!function(t){const n=Sn,e=t();for(;;)try{if(212037===-parseInt(n(242))/1*(-parseInt(n(262))/2)+parseInt(n(337))/3+-parseInt(n(322))/4+parseInt(n(335))/5+-parseInt(n(319))/6*(-parseInt(n(279))/7)+-parseInt(n(298))/8*(-parseInt(n(328))/9)+-parseInt(n(283))/10*(parseInt(n(272))/11))break;e.push(e.shift())}catch(t){e.push(e.shift())}}(kn);const bn=[];function Dn(t){const n=Sn,e="["+Date[n(233)]()+"] "+t;bn[n(300)](e)}function xn(){return[...bn]}function An(t){const n=Sn,e={wedPW:"config",usaZd:function(t,n){return t(n)},goFFe:function(t,n){return t===n},Qlcly:"object",UIiqJ:function(t,n){return t in n},BoUhx:"highlight"},r={body:t,config:{},styles:{},watermark:null},o=/:::(\w[\w-]*)\n([\s\S]*?)\n:::/g;let i;for(;null!==(i=o.exec(t));){const t=i[1],o=i[2];switch(t){case e.wedPW:r[n(252)]=e[n(244)](s,o);break;case n(230):const t=s(o);for(const r in t)t[r]&&e.goFFe(typeof t[r],e[n(249)])&&(e.UIiqJ(e[n(329)],t[r])&&(t[r].background=t[r][n(264)],delete t[r].highlight),n(323)in t[r]&&(t[r].unbreakable=t[r].keepTogether,delete t[r].keepTogether));Object[n(225)](r[n(230)],t);break;case n(235):Zt[n(238)](n(326));break;case n(237):Bn()&&(r[n(237)]=s(o))}}return r[n(306)]=t[n(317)](o,"").trim(),r}function Ln(t){const n=Sn,e={ABTol:function(t,n){return t(n)},ujcSB:function(t,n){return t(n)},jbfIP:n(332),vqOlv:function(t,n,e){return t(n,e)},kidly:"Roboto",SPMga:"#f5f5f5",MlZMZ:n(296),XKUsj:function(t,n){return t(n)},tWuzp:n(305),FmEiB:n(259),ByARa:"DMD Library",EWZme:function(t){return t()}};Zt.info(n(286));const{body:r,config:o,styles:s,watermark:i}=e[n(243)](An,t);Zt.debug(n(295)+Object.keys(o)[n(227)]+n(274)+Object[n(309)](s)[n(227)]+n(265));const u=e[n(224)](X,r);Zt[n(232)](n(226)+u[n(227)]+" blocks"),e[n(224)](Mn,u),Zt[n(232)](e.jbfIP);const c=e[n(303)](Bt,u,s),a=[];let f=null,l=null,g=null;for(const t of c)if(t&&t[n(304)])switch(t[n(304)]){case"header":f=t.content;break;case"footer":l=t.content;break;case n(316):g=t[n(250)]}else a[n(300)](t);const d={content:a,defaultStyle:{font:e[n(324)],fontSize:12,lineHeight:1.15,...s[n(320)]||{}},styles:{h1:{fontSize:24,bold:!0,margin:[0,10,0,5]},h2:{fontSize:20,bold:!0,margin:[0,8,0,4]},h3:{fontSize:16,bold:!0,margin:[0,6,0,3]},code:{fontSize:10,background:e[n(341)],margin:[0,5,0,5]},blockquote:{italics:!0,color:e.MlZMZ},tocTitle:{fontSize:16,bold:!0,margin:[0,0,0,10]},...e.XKUsj(jn,s)}};o[n(273)]&&(d[n(273)]=o.pageSize),o[n(234)]&&(d.pageOrientation=o.pageOrientation),o[n(340)]&&(d[n(340)]=o[n(340)]);const h={title:o.title||e.tWuzp,author:o.author||e.FmEiB,creator:o[n(253)]||e[n(248)],producer:o[n(268)]||n(290)};o.subject&&(h[n(256)]=o.subject),o.keywords&&(h[n(236)]=o.keywords),o[n(282)]&&(h[n(282)]=o.fileName),d.info=h,Bn()&&i&&(d.watermark=i);const v=[40,10,40,10];return f&&(d[n(251)]={stack:f,margin:v}),l&&(d[n(299)]=function(t,n){return{stack:qn(l,t,n),margin:v}}),e.EWZme(Bn)&&g&&(d.background=g),d}function Mn(t){const n=Sn,e={BxvOa:function(t,n){return t===n},MyCVO:function(t,n){return t(n)},HmIrf:function(t,n){return t(n)},SLmxt:function(t,n){return t<n}};for(const r of t){if((e.BxvOa(r.type,O[n(241)])||r.type===w)&&r.text&&(r.tokens=tt(r[n(247)])),e[n(330)](r.type,O[n(292)])&&r.items)for(const t of r[n(261)])if(t[n(247)]&&(t.tokens=e[n(327)](tt,t[n(247)])),t.nestedList&&(e[n(275)](Mn,[t.nestedList]),t.nestedList.items))for(const e of t.nestedList[n(261)])e.text&&(!e.tokens||!e[n(291)].length)&&(e[n(291)]=tt(e[n(247)]));if(r[n(291)]&&Array[n(297)](r.tokens)&&(e.BxvOa(r[n(229)],C)||e[n(330)](r[n(229)],x))&&Mn(r.tokens),r.type===D&&r.rows)for(const t of r[n(257)])for(const e of t)e[n(302)]=tt(e[n(247)]);if(e[n(330)](r[n(229)],O[n(269)])&&r.columns)for(let t=0;e[n(301)](t,r.columns.length);t++){const o=r[n(258)][t];o[n(291)]&&e.MyCVO(Mn,o.tokens)}}}function qn(t,n,e){const r={DNLup:function(t,n){return t(n)}};return t?JSON.parse(JSON.stringify(t),(t,o)=>{const s=Sn;return"string"==typeof o?o.replace(/\{pageNumber\}/g,r[s(278)](String,n))[s(317)](/\{pageCount\}/g,String(e)):o}):t}const In=[Cn(339),Cn(276),"quoteFillColor","quotePadding",Cn(308),Cn(284),Cn(228),"quotePaddingBottom","quoteMargin"];function jn(t){const n=Cn,e={tLwxV:n(307)},r={};for(const[o,s]of Object[n(270)](t))if(typeof s===e[n(293)]&&null!==s){const t={...s};for(const n of In)delete t[n];r[o]=t}return r}function Sn(t,n){t-=224;const e=kn();let r=e[t];if(void 0===Sn.PYLwHm){Sn.JeHctu=function(t){let n="",e="";for(let e,r,o=0,s=0;r=t.charAt(s++);~r&&(e=o%4?64*e+r:r,o++%4)?n+=String.fromCharCode(255&e>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let t=0,r=n.length;t<r;t++)e+="%"+("00"+n.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(e)},Sn.PpcWhf={},Sn.PYLwHm=!0}const o=t+e[0],s=Sn.PpcWhf[o];return s?r=s:(r=Sn.JeHctu(r),Sn.PpcWhf[o]=r),r}function kn(){const t=["q3vZDg9TigzVBNrZihjLCxvPCMuGre1eifbYBYbLzgL0Aw9UlIbvC2LUzYbsB2jVDg8GAw5ZDgvHzcbVzJOG","sevbreLorW","mZq2ndu3tNnvsgLJ","qujuB2W","DxnHwMq","AM9PBG","z2v0qMXVyG","Dgv4Da","qNLbuMe","uwXJBhK","y29UDgvUDa","AgvHzgvY","y29UzMLN","y3jLyxrVCG","yMXVyG","ufjpx0zfqvrvuKvt","C3vIAMvJDa","CM93CW","y29SDw1UCW","re1eieDLBMvYyxrVCG","igzVBNqOCYK6ia","AxrLBxm","mM1OqxvyBq","ywrKvMLYDhvHBezPBgvtExn0zw0","AgLNAgXPz2H0","ihn0EwXLCW","ExnjtLu","z2v0rgvMyxvSDezVBNrZoIa","ChjVzhvJzxi","q09mvu1o","zw50CMLLCW","zgf0yvvYBa","mtCXotnhvgncsgq","CgfNzvnPEMu","igTLExmSia","sg1jCMy","CxvVDgvcB3jKzxjdB2XVCG","qKXpqG","re5mDxa","mJa4mJeYmKnnAxztBa","yMfZzty0","refuqv9vuKW","zMLSzu5HBwu","nJC4mfD1BfLkBq","CxvVDgvqywrKAw5NuMLNAhq","z2v0qMfZzty0","u3rHCNrPBMCGre1eihbHCNnPBMC","DMLYDhvHBgzZ","q3vZDg9TigzVBNrZihjLCxvPCMuGre1eifbYBYbLzgL0Aw9U","qKftrty0","re1eieXPyNjHCNK","Dg9Rzw5Z","teLtva","DeX3Efy","C3rVCMfNzq","rxH0CMfJDgvKignVBMzPzZOG","iZu1ntu1nq","AxnbCNjHEq","mZK1mtjOv1LiEwG","zM9VDgvY","ChvZAa","u0XTEhq","x3rVA2vUCW","DNfpBhy","x3bHz2vmyxLLCG","vw50AxrSzwqGrg9JDw1LBNq","yM9KEq","B2jQzwn0","CxvVDgvqywrKAw5NtgvMDa","A2v5CW","u1rsrufn","D0fYDwm","ktOG","zMLSDgvY","y3jLyxrLugrM","Aeryz00","yMfJA2DYB3vUza","CMvWBgfJzq","qxv0BY1SB2fKAw5Nia","nKPSsNrAAG","zgvMyxvSDa","AxnqCM8","mte3ndmYtfffAujU","A2vLCfrVz2v0AgvY","A2LKBhK","z2v0rgf0yvvYBa","oJO6zM9UDhmGyMXVy2SGAxmGzgvWCMvJyxrLzc4GvxnLiernrc5SB2fKrM9UDhmOksbbueKGAw5ZDgvHzc4","txLdvK8","mZy5s3PMC0Lm","qM9vAhG","qNH2t2e","z2v0u3rYzwfT","uMvUzgvYAw5Nieftvcb0BYbWzgzTywTLignVBNrLBNq","rxHLy3v0Aw5NiejYB3DZzxiGzw52AxjVBM1LBNqGuergigDLBMvYyxrPB24","u3rYzwfTig91Dhb1DcbUB3qGC3vWCg9YDgvKigLUigjYB3DZzxiSihjLDhvYBMLUzYbcBg9I","mty0mdC0nxLysfvXwq","zM9UDa","mZC5nJC0yNfrEMjw","Aw5MBW","CxvVDgvcB3jKzxjxAwr0Aa","CgfNzu1HCMDPBNm","u1bnz2e","z2v0tgLJzw5Zzvn0yxrL","DwPJu0i","yxnZAwDU","uhjVy2vZC2LUzYbPBMXPBMuGDg9Rzw5ZigzVCIa","BgvUz3rO","CxvVDgvqywrKAw5Nvg9W","DhLWzq","C3r5BgvZ","z2vUzxjHDgvqzgzoB2rLoIa","zgvIDwC","BM93","CgfNzu9YAwvUDgf0Aw9U","zM9UDhm","A2v5D29Yzhm","D2f0zxjTyxjR","D2fYBG","D2rkBLa"];return(kn=function(){return t})()}async function Yn(t){const n=Cn,e=function(t){const n=Cn,e=function(t,n){return t===n},r=function(t,n){return t!==n},o=new Set;for(const[s,i]of Object.entries(t))e(typeof i,n(307))&&r(i,null)&&i[n(336)]&&o.add(i.font);return Array.from(o)}(t)[n(313)](t=>"Roboto"!==t);if(!Bn())return e.length>0&&Zt.warn(n(240)+e.join(", ")),{loaded:[],failed:e};const r=e.filter(t=>!function(t){const n=Rt,e={jzKUn:function(t,n){return t===n},IBeQp:n(483)};return e.jzKUn(t,e[n(462)])||!!tn[t]}(t));return 0===r.length?{loaded:[],failed:[]}:(Zt[n(338)](n(318)+r.length+n(260)+r[n(245)](", ")),async function(t){const n=Rt,e=function(t,n){return t(n)},r=[],o=[],s=await Promise[n(499)](t[n(486)](async t=>({fontName:t,success:await e(ln,t)})));for(const{fontName:t,success:e}of s)e?r[n(450)](t):o.push(t);return{loaded:r,failed:o}}(r))}const Nn={BLOB:Cn(254),BASE64:Cn(280),DATA_URL:Cn(271),STREAM:"stream"};async function Wn(t,n=Nn[Cn(277)]){const r=Cn,o={uSukj:function(t,n){return t(n)},Istfv:function(t){return t()},wdJnP:function(t,n){return t(n)},hDXgM:function(t,n){return t-n},HJekt:function(t,n){return t>n},qEQlC:function(t,n,e,r){return t(n,e,r)},TTvvj:function(t,n){return t-n},Pybwv:function(t,n,e,r,o){return t(n,e,r,o)}};bn.length=0,o.uSukj(Dn,"generatePdf start");const s=Date[r(233)](),{vfs:i,fonts:u}=await o.Istfv(sn);o.wdJnP(Dn,r(267)+o[r(315)](Date.now(),s)+"ms");const c={...tn};if(o.HJekt(Object.keys(c)[r(227)],0)){const t=Date.now();await o.qEQlC(un,c,i,u),o[r(239)](Dn,"loadDocumentFonts ("+Object.keys(c).length+r(312)+(Date.now()-t)+"ms")}const a=Date.now();if(await async function(t,n={}){const e=gn,r={EKcHE:"Starting image resolution pass",oORkZ:function(t,n,e){return t(n,e)}};Zt.debug(r[e(479)]);for(const[t,e]of Object.entries(n))dn.set(t,e);return!t.images&&(t[e(499)]={}),await yn(t[e(441)],t),Array[e(489)](t.header)&&await r.oORkZ(yn,t.header,t),Array[e(489)](t[e(495)])&&await yn(t.background,t),t}(t),Dn("resolveImages: "+o.TTvvj(Date.now(),a)+"ms"),Ft){const e=Date[r(233)](),c=await o.Pybwv(Kn,t,i,u,n);return Dn(r(231)+(Date.now()-e)+"ms"),o.uSukj(Dn,"total: "+(Date[r(233)]()-s)+"ms"),c}return Zt[r(338)](r(333)),await async function(t,n,r,o){const s=Cn;Object.keys(n)[s(227)]>0&&e[s(263)](n),e[s(235)]={...e[s(235)],...r};const i=e.createPdf(t);switch(o){case Nn.BASE64:return await i[s(285)]();case Nn[s(281)]:return await i.getDataUrl();case Nn.STREAM:return Zt[s(238)](s(334)),await i[s(246)]();case Nn[s(277)]:default:return await i.getBlob()}}(t,i,u,n)}async function Kn(t,n,r,o){const s=Cn;for(const[t,r]of Object.entries(n))e[s(287)][s(294)][t]=r;e.fonts=r;const i=e[s(314)](t);switch(o){case Nn[s(289)]:return await i.getBase64();case Nn.DATA_URL:return await i[s(325)]();case Nn[s(310)]:return i[s(331)]();default:const t=await i.getBuffer();return Buffer.from(t)}}return{async createPdf(t,n="blob"){const{styles:e}=An(t);var r,o;await(r=Yn,o=e,r(o));return Wn(Ln(t),n)},async loadFonts(t){const n=Cn,e=function(t,n){return t(n)};if(function(t){return t()}(Bn))return e(an,t);Zt[n(238)](n(288))},clearFonts:()=>fn(),loadImages:async t=>async function(t){const n=gn,e={sDqvd:function(t,n){return t!==n}},r=Object[n(434)](t).map(async([t,r])=>{const o=n;try{const n=await wn(r);dn.set(t,n),e[o(449)](t,r)&&dn[o(490)](r,n),Zt.debug(o(475)+t)}catch(n){Zt[o(491)]('Could not preload image "'+t+'":',n[o(436)])}});await Promise.all(r)}(t),clearImages:()=>({ysINU:function(t){return t()}}[Cn(266)](zn)),configureLogger:t=>function(t={}){const n=Kt,e=function(t,n){return t!==n},r=function(t,n){return t===n},o=n(149);void 0!==t.level&&(typeof t[n(147)]===n(163)&&e(Wt[t.level[n(170)]()],void 0)?Ht[n(147)]=Wt[t.level[n(170)]()]:r(typeof t[n(147)],"number")&&(Ht[n(147)]=t[n(147)])),typeof t.handler===o&&(Ht.handler=t.handler)}(t),extractConfig:t=>An(t),_parse:Ln,getLogs:()=>({wAruc:function(t){return t()}}[Cn(311)](xn)),setLicense:async t=>lt(t),getLicenseState:()=>zt[Cn(342)](),isPro:()=>ht(),PRO_FEATURES:zt[Cn(255)]}});
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dmd-to-pdf",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "DMD - Document Markdown to PDF. A specialized markdown language for generating professional PDFs.",
|
|
5
|
+
"main": "dist/dmd.umd.js",
|
|
6
|
+
"browser": "dist/dmd.umd.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"require": "./dist/dmd.umd.js",
|
|
11
|
+
"import": "./dist/dmd.umd.js",
|
|
12
|
+
"browser": "./dist/dmd.umd.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "node tests/harness/test-dmd.js tests/harness/test.dmd output.pdf",
|
|
17
|
+
"test:umd": "node tests/harness/test-umd.js",
|
|
18
|
+
"test:unit": "node tests/unit/run-all.js",
|
|
19
|
+
"build": "rollup -c",
|
|
20
|
+
"docs:build": "npm run build && cp dist/dmd.umd.js documentation/lib/",
|
|
21
|
+
"upload": "node scripts/upload-lib.cjs",
|
|
22
|
+
"deploy": "npm run build && npm run upload",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"pdfmake": ">=0.2.0"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@fontsource/roboto": "^5.2.10",
|
|
31
|
+
"@rollup/plugin-commonjs": "^29.0.0",
|
|
32
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
33
|
+
"@rollup/plugin-replace": "^6.0.3",
|
|
34
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
35
|
+
"javascript-obfuscator": "^5.3.0",
|
|
36
|
+
"jsdom": "^28.1.0",
|
|
37
|
+
"pdf2json": "^4.0.2",
|
|
38
|
+
"pdfmake": "0.3.5",
|
|
39
|
+
"rollup": "^4.59.0",
|
|
40
|
+
"rollup-plugin-javascript-obfuscator": "^1.0.4",
|
|
41
|
+
"rollup-plugin-polyfill-node": "^0.13.0",
|
|
42
|
+
"wrangler": "^4.72.0"
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist/dmd.umd.js",
|
|
46
|
+
"README.md",
|
|
47
|
+
"LICENSE",
|
|
48
|
+
"CHANGELOG.md",
|
|
49
|
+
"DMD_API.md"
|
|
50
|
+
],
|
|
51
|
+
"keywords": [
|
|
52
|
+
"pdf",
|
|
53
|
+
"markdown",
|
|
54
|
+
"document",
|
|
55
|
+
"pdfmake",
|
|
56
|
+
"dmd"
|
|
57
|
+
],
|
|
58
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
59
|
+
"author": "Jizreel Alencar",
|
|
60
|
+
"repository": {
|
|
61
|
+
"type": "git",
|
|
62
|
+
"url": "git+https://github.com/jizreelalencar/dmd-to-pdf.git"
|
|
63
|
+
},
|
|
64
|
+
"bugs": {
|
|
65
|
+
"url": "https://github.com/jizreelalencar/dmd-to-pdf/issues"
|
|
66
|
+
},
|
|
67
|
+
"homepage": "https://dmdlang.dev"
|
|
68
|
+
}
|