fable-editor 1.0.0 → 1.0.2

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 An Sajin Satheesan
3
+ Copyright (c) 2026 Sajin Satheesan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -168,7 +168,7 @@ test/
168
168
 
169
169
  ## Author
170
170
 
171
- An Sajin Satheesan <an.sajinsatheesan@gmail.com>
171
+ Sajin Satheesan <an.sajinsatheesan@gmail.com>
172
172
 
173
173
  ## License
174
174
 
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 An Sajin Satheesan
3
+ Copyright (c) 2026 Sajin Satheesan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -168,7 +168,7 @@ test/
168
168
 
169
169
  ## Author
170
170
 
171
- An Sajin Satheesan <an.sajinsatheesan@gmail.com>
171
+ Sajin Satheesan <an.sajinsatheesan@gmail.com>
172
172
 
173
173
  ## License
174
174
 
@@ -38,6 +38,8 @@ export declare class FableEditor implements FableEditorApi {
38
38
  private onImageUploadError?;
39
39
  private contentStyle?;
40
40
  private selCtx;
41
+ private tplActive;
42
+ private tplCtx;
41
43
  private docInput;
42
44
  private revisions;
43
45
  private revTimer;
@@ -157,8 +159,10 @@ export declare class FableEditor implements FableEditorApi {
157
159
  private charMap;
158
160
  private printDoc;
159
161
  private pickImage;
162
+ private imgPhHTML;
160
163
  private insertImagePlaceholder;
161
164
  private clearImgPlaceholderSel;
165
+ private removeImgPlaceholder;
162
166
  private selectImgPlaceholder;
163
167
  private renderPhCtxButtons;
164
168
  private renderPhCtxUrlInput;
@@ -168,6 +172,18 @@ export declare class FableEditor implements FableEditorApi {
168
172
  private uploadImageFile;
169
173
  private replacePlaceholderWithImage;
170
174
  private positionImgPhCtx;
175
+ private templateMenu;
176
+ /** Miniature div-based mockup of a layout, mirroring what the block looks
177
+ like in the editor: grey box = image slot, bars = heading/paragraph. */
178
+ private tplPreviewHTML;
179
+ private buildTemplatePickInto;
180
+ private insertTemplate;
181
+ private clearTplSel;
182
+ private selectTemplate;
183
+ private renderTplCtxButtons;
184
+ private setTplLayout;
185
+ private removeTemplate;
186
+ private positionTplCtx;
171
187
  private pickWordDoc;
172
188
  private toggleFullscreen;
173
189
  private clearTableHandles;
@@ -134,6 +134,12 @@ export interface I18nStrings {
134
134
  dropimage: string;
135
135
  uploading: string;
136
136
  uploadfailed: string;
137
+ template: string;
138
+ tplimgleft: string;
139
+ tplimgright: string;
140
+ tplimgtop: string;
141
+ tplimgcenter: string;
142
+ deltemplate: string;
137
143
  }
138
144
  export declare const I18N: Record<EditorLanguage, I18nStrings>;
139
145
  export declare function getStrings(lang: EditorLanguage): I18nStrings;
@@ -3,7 +3,7 @@
3
3
  export const DEFAULT_TOOLBAR = 'undo redo | preview print | importword revhistory | fontfamily fontsize | fontsizeincrease fontsizedecrease | ' +
4
4
  'bold italic underline strikethrough | forecolor backcolor | alignleft aligncenter alignright alignjustify | ' +
5
5
  'bullist numlist | outdent indent | link blockquote changecase lineheight wordspacing | removeformat | blocks | ' +
6
- 'ltr rtl | quickimage quicktable charmap | fullscreen sourcecode';
6
+ 'ltr rtl | quickimage quicktable template charmap | fullscreen sourcecode';
7
7
  /** Transcribed from the editor's built-in menu keys so that `menubar: true` (the
8
8
  * default) renders identically to the hard-coded original. */
9
9
  export const DEFAULT_MENUBAR = 'file edit view insert format tools table help';
@@ -119,4 +119,4 @@ export const CHARS = [
119
119
  '٠',
120
120
  '١'
121
121
  ];
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO29GQUNvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQzFCLGdIQUFnSDtJQUNoSCw4R0FBOEc7SUFDOUcsaUhBQWlIO0lBQ2pILGlFQUFpRSxDQUFDO0FBRXBFOytEQUMrRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsK0NBQStDLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUF1QjtJQUN2QyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQztJQUN2QyxDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQztJQUMxQyxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQztJQUN6QyxDQUFDLGVBQWUsRUFBRSwwQkFBMEIsQ0FBQztJQUM3QyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQztJQUN0QyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztJQUMvQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDcEMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLENBQUMsUUFBUSxFQUFFLG1DQUFtQyxDQUFDO0lBQy9DLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDO0lBQy9CLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUM7SUFDNUMsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUM7SUFDdkMsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7SUFDN0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3hCLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDO0NBQ3pDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVwSixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUF1QjtJQUN4QyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFDYixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDbEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0lBQ2xCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNsQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDbEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0lBQ2xCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNsQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Q0FDZixDQUFDO0FBRUYsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHJhbnNjcmliZWQgZ3JvdXAtYnktZ3JvdXAgZnJvbSB0aGUgZWRpdG9yJ3MgYnVpbHQtaW4gdG9vbGJhciBsYXlvdXQgc28gdGhhdFxuICogIGB0b29sYmFyOiB0cnVlYCAodGhlIGRlZmF1bHQpIHJlbmRlcnMgaWRlbnRpY2FsbHkgdG8gdGhlIGhhcmQtY29kZWQgb3JpZ2luYWwuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MQkFSID1cbiAgJ3VuZG8gcmVkbyB8IHByZXZpZXcgcHJpbnQgfCBpbXBvcnR3b3JkIHJldmhpc3RvcnkgfCBmb250ZmFtaWx5IGZvbnRzaXplIHwgZm9udHNpemVpbmNyZWFzZSBmb250c2l6ZWRlY3JlYXNlIHwgJyArXG4gICdib2xkIGl0YWxpYyB1bmRlcmxpbmUgc3RyaWtldGhyb3VnaCB8IGZvcmVjb2xvciBiYWNrY29sb3IgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCBhbGlnbmp1c3RpZnkgfCAnICtcbiAgJ2J1bGxpc3QgbnVtbGlzdCB8IG91dGRlbnQgaW5kZW50IHwgbGluayBibG9ja3F1b3RlIGNoYW5nZWNhc2UgbGluZWhlaWdodCB3b3Jkc3BhY2luZyB8IHJlbW92ZWZvcm1hdCB8IGJsb2NrcyB8ICcgK1xuICAnbHRyIHJ0bCB8IHF1aWNraW1hZ2UgcXVpY2t0YWJsZSBjaGFybWFwIHwgZnVsbHNjcmVlbiBzb3VyY2Vjb2RlJztcblxuLyoqIFRyYW5zY3JpYmVkIGZyb20gdGhlIGVkaXRvcidzIGJ1aWx0LWluIG1lbnUga2V5cyBzbyB0aGF0IGBtZW51YmFyOiB0cnVlYCAodGhlXG4gKiAgZGVmYXVsdCkgcmVuZGVycyBpZGVudGljYWxseSB0byB0aGUgaGFyZC1jb2RlZCBvcmlnaW5hbC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTlVCQVIgPSAnZmlsZSBlZGl0IHZpZXcgaW5zZXJ0IGZvcm1hdCB0b29scyB0YWJsZSBoZWxwJztcblxuZXhwb3J0IGNvbnN0IEZPTlRTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnQW5kYWxlIE1vbm8nLCAnYW5kYWxlIG1vbm8sdGltZXMnXSxcbiAgWydBcmlhbCcsICdhcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiddLFxuICBbJ0FyaWFsIEJsYWNrJywgJ2FyaWFsIGJsYWNrLGF2YW50IGdhcmRlJ10sXG4gIFsnQm9vayBBbnRpcXVhJywgJ2Jvb2sgYW50aXF1YSxwYWxhdGlubyddLFxuICBbJ0NvbWljIFNhbnMgTVMnLCAnY29taWMgc2FucyBtcyxzYW5zLXNlcmlmJ10sXG4gIFsnQ291cmllciBOZXcnLCAnY291cmllciBuZXcsY291cmllciddLFxuICBbJ0dlb3JnaWEnLCAnZ2VvcmdpYSxwYWxhdGlubyddLFxuICBbJ0hlbHZldGljYScsICdoZWx2ZXRpY2EnXSxcbiAgWydJbXBhY3QnLCAnaW1wYWN0LGNoaWNhZ28nXSxcbiAgWydPc3dhbGQnLCAnb3N3YWxkJ10sXG4gIFsnU2Fra2FsIE1hamFsbGEnLCAnc2Fra2FsIG1hamFsbGEnXSxcbiAgWydTeW1ib2wnLCAnc3ltYm9sJ10sXG4gIFsnVGFob21hJywgJ3RhaG9tYSxhcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiddLFxuICBbJ1Rlcm1pbmFsJywgJ3Rlcm1pbmFsLG1vbmFjbyddLFxuICBbJ1RpbWVzIE5ldyBSb21hbicsICd0aW1lcyBuZXcgcm9tYW4sdGltZXMnXSxcbiAgWydUcmVidWNoZXQgTVMnLCAndHJlYnVjaGV0IG1zLGdlbmV2YSddLFxuICBbJ1ZlcmRhbmEnLCAndmVyZGFuYSxnZW5ldmEnXSxcbiAgWydXZWJkaW5ncycsICd3ZWJkaW5ncyddLFxuICBbJ1dpbmdkaW5ncycsICd3aW5nZGluZ3MsemFwZiBkaW5nYmF0cyddXG5dO1xuXG5leHBvcnQgY29uc3QgU0laRVMgPSBbJzhweCcsICc5cHgnLCAnMTBweCcsICcxMXB4JywgJzEycHgnLCAnMTRweCcsICcxNnB4JywgJzE4cHgnLCAnMjBweCcsICcyNHB4JywgJzI4cHgnLCAnMzJweCcsICczNnB4JywgJzQ4cHgnLCAnNzJweCcsICc5NnB4J107XG5cbmV4cG9ydCBjb25zdCBNSU5fRk9OVF9QWCA9IDE7XG5leHBvcnQgY29uc3QgTUFYX0ZPTlRfUFggPSAxMDA7XG5cbmV4cG9ydCBjb25zdCBMSU5FX0hFSUdIVFMgPSBbJzEnLCAnMS4xNScsICcxLjQnLCAnMS41JywgJzEuNzUnLCAnMicsICcyLjUnLCAnMyddO1xuXG5leHBvcnQgY29uc3QgV09SRF9TUEFDSU5HUyA9IFsnMXB4JywgJzJweCcsICc0cHgnLCAnNnB4JywgJzhweCcsICcxMnB4J107XG5cbmV4cG9ydCBjb25zdCBCTE9DS1M6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydwJywgJ3BhcmEnXSxcbiAgWydoMScsICdoZWFkaW5nMSddLFxuICBbJ2gyJywgJ2hlYWRpbmcyJ10sXG4gIFsnaDMnLCAnaGVhZGluZzMnXSxcbiAgWydoNCcsICdoZWFkaW5nNCddLFxuICBbJ2g1JywgJ2hlYWRpbmc1J10sXG4gIFsnaDYnLCAnaGVhZGluZzYnXSxcbiAgWydwcmUnLCAncHJlJ11cbl07XG5cbi8qKiBRdWljay1hY2Nlc3MgdGV4dCBjb2xvciBjaGlwcyBzaG93biBkaXJlY3RseSBpbiB0aGUgdG9vbGJhci4gKi9cbmV4cG9ydCBjb25zdCBRVUlDS19DT0xPUlMgPSBbJyNGNzY3MDcnLCAnIzQyNjNFQicsICcjQ0M1REU4J107XG5cbmV4cG9ydCBjb25zdCBDT0xPUlMgPSBbXG4gICcjQkZFREQyJyxcbiAgJyNGQkVFQjgnLFxuICAnI0Y4Q0FDNicsXG4gICcjRUNDQUZBJyxcbiAgJyNDMkUwRjQnLFxuICAnIzJEQzI2QicsXG4gICcjRjFDNDBGJyxcbiAgJyNFMDNFMkQnLFxuICAnI0I5NkFEOScsXG4gICcjMzU5OERCJyxcbiAgJyMxNjkxNzknLFxuICAnI0U2N0UyMycsXG4gICcjQkEzNzJBJyxcbiAgJyM4NDNGQTEnLFxuICAnIzIzNkZBMScsXG4gICcjRUNGMEYxJyxcbiAgJyNDRUQ0RDknLFxuICAnIzk1QTVBNicsXG4gICcjN0U4QzhEJyxcbiAgJyMzNDQ5NUUnLFxuICAnIzAwMDAwMCcsXG4gICcjRkZGRkZGJ1xuXTtcblxuZXhwb3J0IGNvbnN0IENIQVJTID0gW1xuICAnwqknLFxuICAnwq4nLFxuICAn4oSiJyxcbiAgJ8KnJyxcbiAgJ8K2JyxcbiAgJ+KAoCcsXG4gICfigKEnLFxuICAn4oCiJyxcbiAgJ+KApicsXG4gICfigLInLFxuICAn4oCzJyxcbiAgJ+KAsCcsXG4gICfCsCcsXG4gICfCsScsXG4gICfDlycsXG4gICfDtycsXG4gICfiiYgnLFxuICAn4omgJyxcbiAgJ+KJpCcsXG4gICfiiaUnLFxuICAn4oieJyxcbiAgJ8K1JyxcbiAgJ+KImicsXG4gICfiiJEnLFxuICAn4oKsJyxcbiAgJ8KjJyxcbiAgJ8KlJyxcbiAgJ8KiJyxcbiAgJ+KGkCcsXG4gICfihpInLFxuICAn4oaRJyxcbiAgJ+KGkycsXG4gICfCqycsXG4gICfCuycsXG4gICfigJwnLFxuICAn4oCdJyxcbiAgJ+KAmCcsXG4gICfigJknLFxuICAn4oCTJyxcbiAgJ+KAlCcsXG4gICfYnycsXG4gICfYjCcsXG4gICfYmycsXG4gICfZqicsXG4gICfZrScsXG4gICfZgCcsXG4gICfZoCcsXG4gICfZoSdcbl07XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO29GQUNvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQzFCLGdIQUFnSDtJQUNoSCw4R0FBOEc7SUFDOUcsaUhBQWlIO0lBQ2pILDBFQUEwRSxDQUFDO0FBRTdFOytEQUMrRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsK0NBQStDLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUF1QjtJQUN2QyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQztJQUN2QyxDQUFDLGFBQWEsRUFBRSx5QkFBeUIsQ0FBQztJQUMxQyxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQztJQUN6QyxDQUFDLGVBQWUsRUFBRSwwQkFBMEIsQ0FBQztJQUM3QyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQztJQUN0QyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztJQUMvQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDcEMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLENBQUMsUUFBUSxFQUFFLG1DQUFtQyxDQUFDO0lBQy9DLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDO0lBQy9CLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUM7SUFDNUMsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUM7SUFDdkMsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7SUFDN0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3hCLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDO0NBQ3pDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVwSixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUF1QjtJQUN4QyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFDYixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDbEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0lBQ2xCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNsQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7SUFDbEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0lBQ2xCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNsQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Q0FDZixDQUFDO0FBRUYsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHJhbnNjcmliZWQgZ3JvdXAtYnktZ3JvdXAgZnJvbSB0aGUgZWRpdG9yJ3MgYnVpbHQtaW4gdG9vbGJhciBsYXlvdXQgc28gdGhhdFxuICogIGB0b29sYmFyOiB0cnVlYCAodGhlIGRlZmF1bHQpIHJlbmRlcnMgaWRlbnRpY2FsbHkgdG8gdGhlIGhhcmQtY29kZWQgb3JpZ2luYWwuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MQkFSID1cbiAgJ3VuZG8gcmVkbyB8IHByZXZpZXcgcHJpbnQgfCBpbXBvcnR3b3JkIHJldmhpc3RvcnkgfCBmb250ZmFtaWx5IGZvbnRzaXplIHwgZm9udHNpemVpbmNyZWFzZSBmb250c2l6ZWRlY3JlYXNlIHwgJyArXG4gICdib2xkIGl0YWxpYyB1bmRlcmxpbmUgc3RyaWtldGhyb3VnaCB8IGZvcmVjb2xvciBiYWNrY29sb3IgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCBhbGlnbmp1c3RpZnkgfCAnICtcbiAgJ2J1bGxpc3QgbnVtbGlzdCB8IG91dGRlbnQgaW5kZW50IHwgbGluayBibG9ja3F1b3RlIGNoYW5nZWNhc2UgbGluZWhlaWdodCB3b3Jkc3BhY2luZyB8IHJlbW92ZWZvcm1hdCB8IGJsb2NrcyB8ICcgK1xuICAnbHRyIHJ0bCB8IHF1aWNraW1hZ2UgcXVpY2t0YWJsZSB0ZW1wbGF0ZSBjaGFybWFwIHwgZnVsbHNjcmVlbiBzb3VyY2Vjb2RlJztcblxuLyoqIFRyYW5zY3JpYmVkIGZyb20gdGhlIGVkaXRvcidzIGJ1aWx0LWluIG1lbnUga2V5cyBzbyB0aGF0IGBtZW51YmFyOiB0cnVlYCAodGhlXG4gKiAgZGVmYXVsdCkgcmVuZGVycyBpZGVudGljYWxseSB0byB0aGUgaGFyZC1jb2RlZCBvcmlnaW5hbC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTlVCQVIgPSAnZmlsZSBlZGl0IHZpZXcgaW5zZXJ0IGZvcm1hdCB0b29scyB0YWJsZSBoZWxwJztcblxuZXhwb3J0IGNvbnN0IEZPTlRTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnQW5kYWxlIE1vbm8nLCAnYW5kYWxlIG1vbm8sdGltZXMnXSxcbiAgWydBcmlhbCcsICdhcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiddLFxuICBbJ0FyaWFsIEJsYWNrJywgJ2FyaWFsIGJsYWNrLGF2YW50IGdhcmRlJ10sXG4gIFsnQm9vayBBbnRpcXVhJywgJ2Jvb2sgYW50aXF1YSxwYWxhdGlubyddLFxuICBbJ0NvbWljIFNhbnMgTVMnLCAnY29taWMgc2FucyBtcyxzYW5zLXNlcmlmJ10sXG4gIFsnQ291cmllciBOZXcnLCAnY291cmllciBuZXcsY291cmllciddLFxuICBbJ0dlb3JnaWEnLCAnZ2VvcmdpYSxwYWxhdGlubyddLFxuICBbJ0hlbHZldGljYScsICdoZWx2ZXRpY2EnXSxcbiAgWydJbXBhY3QnLCAnaW1wYWN0LGNoaWNhZ28nXSxcbiAgWydPc3dhbGQnLCAnb3N3YWxkJ10sXG4gIFsnU2Fra2FsIE1hamFsbGEnLCAnc2Fra2FsIG1hamFsbGEnXSxcbiAgWydTeW1ib2wnLCAnc3ltYm9sJ10sXG4gIFsnVGFob21hJywgJ3RhaG9tYSxhcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiddLFxuICBbJ1Rlcm1pbmFsJywgJ3Rlcm1pbmFsLG1vbmFjbyddLFxuICBbJ1RpbWVzIE5ldyBSb21hbicsICd0aW1lcyBuZXcgcm9tYW4sdGltZXMnXSxcbiAgWydUcmVidWNoZXQgTVMnLCAndHJlYnVjaGV0IG1zLGdlbmV2YSddLFxuICBbJ1ZlcmRhbmEnLCAndmVyZGFuYSxnZW5ldmEnXSxcbiAgWydXZWJkaW5ncycsICd3ZWJkaW5ncyddLFxuICBbJ1dpbmdkaW5ncycsICd3aW5nZGluZ3MsemFwZiBkaW5nYmF0cyddXG5dO1xuXG5leHBvcnQgY29uc3QgU0laRVMgPSBbJzhweCcsICc5cHgnLCAnMTBweCcsICcxMXB4JywgJzEycHgnLCAnMTRweCcsICcxNnB4JywgJzE4cHgnLCAnMjBweCcsICcyNHB4JywgJzI4cHgnLCAnMzJweCcsICczNnB4JywgJzQ4cHgnLCAnNzJweCcsICc5NnB4J107XG5cbmV4cG9ydCBjb25zdCBNSU5fRk9OVF9QWCA9IDE7XG5leHBvcnQgY29uc3QgTUFYX0ZPTlRfUFggPSAxMDA7XG5cbmV4cG9ydCBjb25zdCBMSU5FX0hFSUdIVFMgPSBbJzEnLCAnMS4xNScsICcxLjQnLCAnMS41JywgJzEuNzUnLCAnMicsICcyLjUnLCAnMyddO1xuXG5leHBvcnQgY29uc3QgV09SRF9TUEFDSU5HUyA9IFsnMXB4JywgJzJweCcsICc0cHgnLCAnNnB4JywgJzhweCcsICcxMnB4J107XG5cbmV4cG9ydCBjb25zdCBCTE9DS1M6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydwJywgJ3BhcmEnXSxcbiAgWydoMScsICdoZWFkaW5nMSddLFxuICBbJ2gyJywgJ2hlYWRpbmcyJ10sXG4gIFsnaDMnLCAnaGVhZGluZzMnXSxcbiAgWydoNCcsICdoZWFkaW5nNCddLFxuICBbJ2g1JywgJ2hlYWRpbmc1J10sXG4gIFsnaDYnLCAnaGVhZGluZzYnXSxcbiAgWydwcmUnLCAncHJlJ11cbl07XG5cbi8qKiBRdWljay1hY2Nlc3MgdGV4dCBjb2xvciBjaGlwcyBzaG93biBkaXJlY3RseSBpbiB0aGUgdG9vbGJhci4gKi9cbmV4cG9ydCBjb25zdCBRVUlDS19DT0xPUlMgPSBbJyNGNzY3MDcnLCAnIzQyNjNFQicsICcjQ0M1REU4J107XG5cbmV4cG9ydCBjb25zdCBDT0xPUlMgPSBbXG4gICcjQkZFREQyJyxcbiAgJyNGQkVFQjgnLFxuICAnI0Y4Q0FDNicsXG4gICcjRUNDQUZBJyxcbiAgJyNDMkUwRjQnLFxuICAnIzJEQzI2QicsXG4gICcjRjFDNDBGJyxcbiAgJyNFMDNFMkQnLFxuICAnI0I5NkFEOScsXG4gICcjMzU5OERCJyxcbiAgJyMxNjkxNzknLFxuICAnI0U2N0UyMycsXG4gICcjQkEzNzJBJyxcbiAgJyM4NDNGQTEnLFxuICAnIzIzNkZBMScsXG4gICcjRUNGMEYxJyxcbiAgJyNDRUQ0RDknLFxuICAnIzk1QTVBNicsXG4gICcjN0U4QzhEJyxcbiAgJyMzNDQ5NUUnLFxuICAnIzAwMDAwMCcsXG4gICcjRkZGRkZGJ1xuXTtcblxuZXhwb3J0IGNvbnN0IENIQVJTID0gW1xuICAnwqknLFxuICAnwq4nLFxuICAn4oSiJyxcbiAgJ8KnJyxcbiAgJ8K2JyxcbiAgJ+KAoCcsXG4gICfigKEnLFxuICAn4oCiJyxcbiAgJ+KApicsXG4gICfigLInLFxuICAn4oCzJyxcbiAgJ+KAsCcsXG4gICfCsCcsXG4gICfCsScsXG4gICfDlycsXG4gICfDtycsXG4gICfiiYgnLFxuICAn4omgJyxcbiAgJ+KJpCcsXG4gICfiiaUnLFxuICAn4oieJyxcbiAgJ8K1JyxcbiAgJ+KImicsXG4gICfiiJEnLFxuICAn4oKsJyxcbiAgJ8KjJyxcbiAgJ8KlJyxcbiAgJ8KiJyxcbiAgJ+KGkCcsXG4gICfihpInLFxuICAn4oaRJyxcbiAgJ+KGkycsXG4gICfCqycsXG4gICfCuycsXG4gICfigJwnLFxuICAn4oCdJyxcbiAgJ+KAmCcsXG4gICfigJknLFxuICAn4oCTJyxcbiAgJ+KAlCcsXG4gICfYnycsXG4gICfYjCcsXG4gICfYmycsXG4gICfZqicsXG4gICfZrScsXG4gICfZgCcsXG4gICfZoCcsXG4gICfZoSdcbl07XG4iXX0=