entities 6.0.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/decode-codepoint.d.ts +8 -0
  2. package/dist/decode-codepoint.d.ts.map +1 -0
  3. package/dist/decode-codepoint.js +46 -0
  4. package/dist/decode-codepoint.js.map +1 -0
  5. package/dist/{esm/decode.d.ts → decode.d.ts} +11 -26
  6. package/dist/decode.d.ts.map +1 -0
  7. package/dist/{esm/decode.js → decode.js} +130 -83
  8. package/dist/decode.js.map +1 -0
  9. package/dist/{commonjs/encode.d.ts → encode.d.ts} +2 -0
  10. package/dist/encode.d.ts.map +1 -0
  11. package/dist/encode.js +90 -0
  12. package/dist/encode.js.map +1 -0
  13. package/dist/{esm/escape.d.ts → escape.d.ts} +13 -8
  14. package/dist/escape.d.ts.map +1 -0
  15. package/dist/{esm/escape.js → escape.js} +49 -34
  16. package/dist/escape.js.map +1 -0
  17. package/dist/generated/decode-data-html.d.ts +3 -0
  18. package/dist/generated/decode-data-html.d.ts.map +1 -0
  19. package/dist/generated/decode-data-html.js +5 -0
  20. package/dist/generated/decode-data-html.js.map +1 -0
  21. package/dist/generated/decode-data-xml.d.ts +3 -0
  22. package/dist/generated/decode-data-xml.d.ts.map +1 -0
  23. package/dist/generated/decode-data-xml.js +5 -0
  24. package/dist/generated/decode-data-xml.js.map +1 -0
  25. package/dist/generated/encode-html.d.ts +5 -0
  26. package/dist/generated/encode-html.d.ts.map +1 -0
  27. package/dist/generated/encode-html.js +12 -0
  28. package/dist/generated/encode-html.js.map +1 -0
  29. package/dist/{commonjs/index.d.ts → index.d.ts} +10 -17
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/{esm/index.js → index.js} +9 -25
  32. package/dist/index.js.map +1 -0
  33. package/dist/internal/bin-trie-flags.d.ts +17 -0
  34. package/dist/internal/bin-trie-flags.d.ts.map +1 -0
  35. package/dist/internal/bin-trie-flags.js +18 -0
  36. package/dist/internal/bin-trie-flags.js.map +1 -0
  37. package/dist/internal/decode-shared.d.ts +7 -0
  38. package/dist/internal/decode-shared.d.ts.map +1 -0
  39. package/dist/internal/decode-shared.js +17 -0
  40. package/dist/internal/decode-shared.js.map +1 -0
  41. package/dist/internal/encode-shared.d.ts +33 -0
  42. package/dist/internal/encode-shared.d.ts.map +1 -0
  43. package/dist/internal/encode-shared.js +93 -0
  44. package/dist/internal/encode-shared.js.map +1 -0
  45. package/package.json +38 -73
  46. package/readme.md +36 -27
  47. package/src/decode-codepoint.ts +1 -32
  48. package/src/decode.ts +127 -76
  49. package/src/encode.ts +49 -31
  50. package/src/escape.ts +50 -38
  51. package/src/generated/decode-data-html.ts +4 -5
  52. package/src/generated/decode-data-xml.ts +4 -5
  53. package/src/generated/encode-html.ts +15 -14
  54. package/src/index.ts +23 -49
  55. package/src/internal/bin-trie-flags.ts +16 -0
  56. package/src/internal/decode-shared.ts +18 -0
  57. package/src/internal/encode-shared.ts +123 -0
  58. package/decode.d.ts +0 -1
  59. package/decode.js +0 -3
  60. package/dist/commonjs/decode-codepoint.d.ts +0 -19
  61. package/dist/commonjs/decode-codepoint.d.ts.map +0 -1
  62. package/dist/commonjs/decode-codepoint.js +0 -77
  63. package/dist/commonjs/decode-codepoint.js.map +0 -1
  64. package/dist/commonjs/decode.d.ts +0 -209
  65. package/dist/commonjs/decode.d.ts.map +0 -1
  66. package/dist/commonjs/decode.js +0 -511
  67. package/dist/commonjs/decode.js.map +0 -1
  68. package/dist/commonjs/encode.d.ts.map +0 -1
  69. package/dist/commonjs/encode.js +0 -73
  70. package/dist/commonjs/encode.js.map +0 -1
  71. package/dist/commonjs/escape.d.ts +0 -43
  72. package/dist/commonjs/escape.d.ts.map +0 -1
  73. package/dist/commonjs/escape.js +0 -121
  74. package/dist/commonjs/escape.js.map +0 -1
  75. package/dist/commonjs/generated/decode-data-html.d.ts +0 -2
  76. package/dist/commonjs/generated/decode-data-html.d.ts.map +0 -1
  77. package/dist/commonjs/generated/decode-data-html.js +0 -10
  78. package/dist/commonjs/generated/decode-data-html.js.map +0 -1
  79. package/dist/commonjs/generated/decode-data-xml.d.ts +0 -2
  80. package/dist/commonjs/generated/decode-data-xml.d.ts.map +0 -1
  81. package/dist/commonjs/generated/decode-data-xml.js +0 -10
  82. package/dist/commonjs/generated/decode-data-xml.js.map +0 -1
  83. package/dist/commonjs/generated/encode-html.d.ts +0 -8
  84. package/dist/commonjs/generated/encode-html.d.ts.map +0 -1
  85. package/dist/commonjs/generated/encode-html.js +0 -13
  86. package/dist/commonjs/generated/encode-html.js.map +0 -1
  87. package/dist/commonjs/index.d.ts.map +0 -1
  88. package/dist/commonjs/index.js +0 -131
  89. package/dist/commonjs/index.js.map +0 -1
  90. package/dist/commonjs/package.json +0 -3
  91. package/dist/esm/decode-codepoint.d.ts +0 -19
  92. package/dist/esm/decode-codepoint.d.ts.map +0 -1
  93. package/dist/esm/decode-codepoint.js +0 -72
  94. package/dist/esm/decode-codepoint.js.map +0 -1
  95. package/dist/esm/decode.d.ts.map +0 -1
  96. package/dist/esm/decode.js.map +0 -1
  97. package/dist/esm/encode.d.ts +0 -22
  98. package/dist/esm/encode.d.ts.map +0 -1
  99. package/dist/esm/encode.js +0 -69
  100. package/dist/esm/encode.js.map +0 -1
  101. package/dist/esm/escape.d.ts.map +0 -1
  102. package/dist/esm/escape.js.map +0 -1
  103. package/dist/esm/generated/decode-data-html.d.ts +0 -2
  104. package/dist/esm/generated/decode-data-html.d.ts.map +0 -1
  105. package/dist/esm/generated/decode-data-html.js +0 -7
  106. package/dist/esm/generated/decode-data-html.js.map +0 -1
  107. package/dist/esm/generated/decode-data-xml.d.ts +0 -2
  108. package/dist/esm/generated/decode-data-xml.d.ts.map +0 -1
  109. package/dist/esm/generated/decode-data-xml.js +0 -7
  110. package/dist/esm/generated/decode-data-xml.js.map +0 -1
  111. package/dist/esm/generated/encode-html.d.ts +0 -8
  112. package/dist/esm/generated/encode-html.d.ts.map +0 -1
  113. package/dist/esm/generated/encode-html.js +0 -10
  114. package/dist/esm/generated/encode-html.js.map +0 -1
  115. package/dist/esm/index.d.ts +0 -96
  116. package/dist/esm/index.d.ts.map +0 -1
  117. package/dist/esm/index.js.map +0 -1
  118. package/dist/esm/package.json +0 -3
  119. package/escape.d.ts +0 -1
  120. package/escape.js +0 -3
  121. package/src/decode.spec.ts +0 -320
  122. package/src/encode.spec.ts +0 -78
  123. package/src/escape.spec.ts +0 -14
  124. package/src/generated/.eslintrc.json +0 -10
  125. package/src/index.spec.ts +0 -125
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Replace the given code point with a replacement character if it is a
3
+ * surrogate or is outside the valid range. Otherwise return the code
4
+ * point unchanged.
5
+ * @param codePoint Unicode code point to convert.
6
+ */
7
+ export declare function replaceCodePoint(codePoint: number): number;
8
+ //# sourceMappingURL=decode-codepoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-codepoint.d.ts","sourceRoot":"","sources":["../src/decode-codepoint.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS1D"}
@@ -0,0 +1,46 @@
1
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
2
+ const decodeMap = new Map([
3
+ [0, 65_533],
4
+ // C1 Unicode control character reference replacements
5
+ [128, 8364],
6
+ [130, 8218],
7
+ [131, 402],
8
+ [132, 8222],
9
+ [133, 8230],
10
+ [134, 8224],
11
+ [135, 8225],
12
+ [136, 710],
13
+ [137, 8240],
14
+ [138, 352],
15
+ [139, 8249],
16
+ [140, 338],
17
+ [142, 381],
18
+ [145, 8216],
19
+ [146, 8217],
20
+ [147, 8220],
21
+ [148, 8221],
22
+ [149, 8226],
23
+ [150, 8211],
24
+ [151, 8212],
25
+ [152, 732],
26
+ [153, 8482],
27
+ [154, 353],
28
+ [155, 8250],
29
+ [156, 339],
30
+ [158, 382],
31
+ [159, 376],
32
+ ]);
33
+ /**
34
+ * Replace the given code point with a replacement character if it is a
35
+ * surrogate or is outside the valid range. Otherwise return the code
36
+ * point unchanged.
37
+ * @param codePoint Unicode code point to convert.
38
+ */
39
+ export function replaceCodePoint(codePoint) {
40
+ if ((codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||
41
+ codePoint > 0x10_ff_ff) {
42
+ return 0xff_fd;
43
+ }
44
+ return decodeMap.get(codePoint) ?? codePoint;
45
+ }
46
+ //# sourceMappingURL=decode-codepoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-codepoint.js","sourceRoot":"","sources":["../src/decode-codepoint.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAErH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;CACb,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAC9C,IACI,CAAC,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC;QAC9C,SAAS,GAAG,UAAU,EACxB,CAAC;QACC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACjD,CAAC"}
@@ -1,8 +1,6 @@
1
- export declare enum BinTrieFlags {
2
- VALUE_LENGTH = 49152,
3
- BRANCH_LENGTH = 16256,
4
- JUMP_TABLE = 127
5
- }
1
+ /**
2
+ * Decoding mode for named entities.
3
+ */
6
4
  export declare enum DecodingMode {
7
5
  /** Entities in text nodes that can end with any character. */
8
6
  Legacy = 0,
@@ -30,7 +28,6 @@ export declare class EntityDecoder {
30
28
  *
31
29
  * For multi-byte named entities, this will be called multiple times,
32
30
  * with the second codepoint, and the same `consumed` value.
33
- *
34
31
  * @param codepoint The decoded codepoint.
35
32
  * @param consumed The number of bytes consumed by the decoder.
36
33
  */
@@ -45,7 +42,6 @@ export declare class EntityDecoder {
45
42
  *
46
43
  * For multi-byte named entities, this will be called multiple times,
47
44
  * with the second codepoint, and the same `consumed` value.
48
- *
49
45
  * @param codepoint The decoded codepoint.
50
46
  * @param consumed The number of bytes consumed by the decoder.
51
47
  */
@@ -69,7 +65,12 @@ export declare class EntityDecoder {
69
65
  private excess;
70
66
  /** The mode in which the decoder is operating. */
71
67
  private decodeMode;
72
- /** Resets the instance to make it reusable. */
68
+ /** The number of characters that have been consumed in the current run. */
69
+ private runConsumed;
70
+ /**
71
+ * Resets the instance to make it reusable.
72
+ * @param decodeMode Entity decoding mode to use.
73
+ */
73
74
  startEntity(decodeMode: DecodingMode): void;
74
75
  /**
75
76
  * Write an entity to the decoder. This can be called multiple times with partial entities.
@@ -77,7 +78,6 @@ export declare class EntityDecoder {
77
78
  *
78
79
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
79
80
  * entity is incomplete, and resume when the next string is written.
80
- *
81
81
  * @param input The string containing the entity (or a continuation of the entity).
82
82
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
83
83
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -87,18 +87,15 @@ export declare class EntityDecoder {
87
87
  * Switches between the numeric decimal and hexadecimal states.
88
88
  *
89
89
  * Equivalent to the `Numeric character reference state` in the HTML spec.
90
- *
91
90
  * @param input The string containing the entity (or a continuation of the entity).
92
91
  * @param offset The current offset.
93
92
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
94
93
  */
95
94
  private stateNumericStart;
96
- private addToNumericResult;
97
95
  /**
98
96
  * Parses a hexadecimal numeric entity.
99
97
  *
100
98
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
101
- *
102
99
  * @param input The string containing the entity (or a continuation of the entity).
103
100
  * @param offset The current offset.
104
101
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -108,7 +105,6 @@ export declare class EntityDecoder {
108
105
  * Parses a decimal numeric entity.
109
106
  *
110
107
  * Equivalent to the `Decimal character reference state` in the HTML spec.
111
- *
112
108
  * @param input The string containing the entity (or a continuation of the entity).
113
109
  * @param offset The current offset.
114
110
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -119,7 +115,6 @@ export declare class EntityDecoder {
119
115
  *
120
116
  * Implements the logic from the `Hexademical character reference start
121
117
  * state` and `Numeric character reference end state` in the HTML spec.
122
- *
123
118
  * @param lastCp The last code point of the entity. Used to see if the
124
119
  * entity was terminated with a semicolon.
125
120
  * @param expectedLength The minimum number of characters that should be
@@ -132,7 +127,6 @@ export declare class EntityDecoder {
132
127
  * Parses a named entity.
133
128
  *
134
129
  * Equivalent to the `Named character reference state` in the HTML spec.
135
- *
136
130
  * @param input The string containing the entity (or a continuation of the entity).
137
131
  * @param offset The current offset.
138
132
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
@@ -140,17 +134,14 @@ export declare class EntityDecoder {
140
134
  private stateNamedEntity;
141
135
  /**
142
136
  * Emit a named entity that was not terminated with a semicolon.
143
- *
144
137
  * @returns The number of characters consumed.
145
138
  */
146
139
  private emitNotTerminatedNamedEntity;
147
140
  /**
148
141
  * Emit a named entity.
149
- *
150
142
  * @param result The index of the entity in the decode tree.
151
143
  * @param valueLength The number of bytes in the entity.
152
144
  * @param consumed The number of characters consumed.
153
- *
154
145
  * @returns The number of characters consumed.
155
146
  */
156
147
  private emitNamedEntityData;
@@ -158,7 +149,6 @@ export declare class EntityDecoder {
158
149
  * Signal to the parser that the end of the input was reached.
159
150
  *
160
151
  * Remaining data will be emitted and relevant errors will be produced.
161
- *
162
152
  * @returns The number of characters consumed.
163
153
  */
164
154
  end(): number;
@@ -166,17 +156,15 @@ export declare class EntityDecoder {
166
156
  /**
167
157
  * Determines the branch of the current node that is taken given the current
168
158
  * character. This function is used to traverse the trie.
169
- *
170
159
  * @param decodeTree The trie.
171
160
  * @param current The current node.
172
- * @param nodeIdx The index right after the current node and its value.
161
+ * @param nodeIndex Index immediately after the current node header.
173
162
  * @param char The current character.
174
163
  * @returns The index of the next node, or -1 if no branch is taken.
175
164
  */
176
165
  export declare function determineBranch(decodeTree: Uint16Array, current: number, nodeIndex: number, char: number): number;
177
166
  /**
178
167
  * Decodes an HTML string.
179
- *
180
168
  * @param htmlString The string to decode.
181
169
  * @param mode The decoding mode.
182
170
  * @returns The decoded string.
@@ -184,26 +172,23 @@ export declare function determineBranch(decodeTree: Uint16Array, current: number
184
172
  export declare function decodeHTML(htmlString: string, mode?: DecodingMode): string;
185
173
  /**
186
174
  * Decodes an HTML string in an attribute.
187
- *
188
175
  * @param htmlAttribute The string to decode.
189
176
  * @returns The decoded string.
190
177
  */
191
178
  export declare function decodeHTMLAttribute(htmlAttribute: string): string;
192
179
  /**
193
180
  * Decodes an HTML string, requiring all entities to be terminated by a semicolon.
194
- *
195
181
  * @param htmlString The string to decode.
196
182
  * @returns The decoded string.
197
183
  */
198
184
  export declare function decodeHTMLStrict(htmlString: string): string;
199
185
  /**
200
186
  * Decodes an XML string, requiring all entities to be terminated by a semicolon.
201
- *
202
187
  * @param xmlString The string to decode.
203
188
  * @returns The decoded string.
204
189
  */
205
190
  export declare function decodeXML(xmlString: string): string;
191
+ export { replaceCodePoint } from "./decode-codepoint.js";
206
192
  export { htmlDecodeTree } from "./generated/decode-data-html.js";
207
193
  export { xmlDecodeTree } from "./generated/decode-data-xml.js";
208
- export { decodeCodePoint, replaceCodePoint, fromCodePoint, } from "./decode-codepoint.js";
209
194
  //# sourceMappingURL=decode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AA6DA;;GAEG;AACH,oBAAY,YAAY;IACpB,8DAA8D;IAC9D,MAAM,IAAI;IACV,uDAAuD;IACvD,MAAM,IAAI;IACV,oEAAoE;IACpE,SAAS,IAAI;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,uCAAuC,IAAI,IAAI,CAAC;IAChD,0CAA0C,CACtC,kBAAkB,EAAE,MAAM,GAC3B,IAAI,CAAC;IACR,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,aAAa;IAElB,wCAAwC;IAExC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IAbxB,wCAAwC;IAEvB,UAAU,EAAE,WAAW;IACxC;;;;;;;OAOG;IACc,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;IACtE,gDAAgD;IAC/B,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS;IAG7D,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAkC;IAC/C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAK;IACrB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAK;IAEnB,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,kDAAkD;IAClD,OAAO,CAAC,UAAU,CAAuB;IACzC,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAK;IAExB;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAU3C;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IA8B5C;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAmBvB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAoIxB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;;OAKG;IACH,GAAG,IAAI,MAAM;CA6BhB;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC3B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACb,MAAM,CA4CR;AAKD;;;;;GAKG;AACH,wBAAgB,UAAU,CACtB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,YAAkC,GACzC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC"}