monaco-editor11 1.1.6 → 1.1.8

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 (98) hide show
  1. package/dist/abap-CrvW7_qN.mjs +1398 -0
  2. package/dist/apex-BAOI8p1v.mjs +327 -0
  3. package/dist/assets/html.worker-C8VxctEJ.js +470 -0
  4. package/dist/azcli-BlCk_UqW.mjs +68 -0
  5. package/dist/bat-DPoEelVx.mjs +100 -0
  6. package/dist/bicep-Cp1F394l.mjs +102 -0
  7. package/dist/cameligo-CWqtSlQs.mjs +174 -0
  8. package/dist/clojure-CKBp32Gf.mjs +761 -0
  9. package/dist/coffee-CDo6vc-J.mjs +232 -0
  10. package/dist/cpp-DokufPgf.mjs +389 -0
  11. package/dist/csharp-BQi3szM0.mjs +326 -0
  12. package/dist/csp-BSGtCCZ-.mjs +53 -0
  13. package/dist/css-DEPFDJfb.mjs +187 -0
  14. package/dist/cssMode-BQ5BKBAY.mjs +141 -0
  15. package/dist/cypher-DAb1vOxS.mjs +263 -0
  16. package/dist/dart-C8p4jewR.mjs +281 -0
  17. package/dist/dockerfile-DP0iLFPN.mjs +130 -0
  18. package/dist/ecl-BDQHA6fi.mjs +456 -0
  19. package/dist/elixir-D4II6kDM.mjs +569 -0
  20. package/dist/environment.d.ts +1 -1
  21. package/dist/flow9-StcnL-VB.mjs +142 -0
  22. package/dist/freemarker2-6GYcye2r.mjs +982 -0
  23. package/dist/fsharp-DdUVp3EN.mjs +217 -0
  24. package/dist/go-D1-I258M.mjs +218 -0
  25. package/dist/graphql-DWkL3f8U.mjs +151 -0
  26. package/dist/handlebars-5_7gZ3QS.mjs +412 -0
  27. package/dist/hcl-D_0MNifv.mjs +183 -0
  28. package/dist/html-2thNXsIu.mjs +301 -0
  29. package/dist/htmlMode-Dmqis0oY.mjs +152 -0
  30. package/dist/index-CiIcpngo.mjs +128785 -0
  31. package/dist/index.d.ts +1 -7
  32. package/dist/ini-C4I2-MT7.mjs +71 -0
  33. package/dist/java-OBvaP_SS.mjs +232 -0
  34. package/dist/javascript-DGu9heQ1.mjs +70 -0
  35. package/dist/jsonMode-BHf-60PU.mjs +577 -0
  36. package/dist/julia-BmDH8Kkf.mjs +511 -0
  37. package/dist/kotlin-Dhu5AGOD.mjs +252 -0
  38. package/dist/less-CzmjXREq.mjs +162 -0
  39. package/dist/lexon-CV2c4pN9.mjs +157 -0
  40. package/dist/liquid-B6d5eZ0w.mjs +233 -0
  41. package/dist/lspLanguageFeatures-CQ-4g5T6.mjs +1458 -0
  42. package/dist/lua-CFY5U8qF.mjs +162 -0
  43. package/dist/m3-BL_AnZVh.mjs +210 -0
  44. package/dist/markdown-CWKQPXCv.mjs +229 -0
  45. package/dist/mdx-Dc2EzqW9.mjs +158 -0
  46. package/dist/mips-ButYmJ5E.mjs +198 -0
  47. package/dist/monaco-editor11.css +1 -0
  48. package/dist/monaco-editor11.es.js +21 -58
  49. package/dist/monaco-editor11.umd.js +1234 -1
  50. package/dist/monacoeditorwork/css.worker.bundle.js +54271 -0
  51. package/dist/monacoeditorwork/editor.worker..bundle.js +14319 -0
  52. package/dist/monacoeditorwork/json.worker.bundle.js +22098 -0
  53. package/dist/monacoeditorwork/ts.worker.bundle.js +225960 -0
  54. package/dist/msdax-C3cnXqDh.mjs +375 -0
  55. package/dist/mysql-YlSHaf6G.mjs +878 -0
  56. package/dist/objective-c-Dwnlproe.mjs +183 -0
  57. package/dist/pascal-UzGbSWEN.mjs +251 -0
  58. package/dist/pascaligo-CslTgu68.mjs +164 -0
  59. package/dist/perl-oj6r_mgw.mjs +626 -0
  60. package/dist/pgsql-DSBO0Mev.mjs +851 -0
  61. package/dist/php-YzCD--7j.mjs +500 -0
  62. package/dist/pla-CmylB8vQ.mjs +137 -0
  63. package/dist/postiats-CLFW5gNY.mjs +907 -0
  64. package/dist/powerquery-CmOWUvlh.mjs +890 -0
  65. package/dist/powershell-fHQcmBLK.mjs +239 -0
  66. package/dist/protobuf-p5BArb-9.mjs +420 -0
  67. package/dist/pug-gVdUDvqf.mjs +402 -0
  68. package/dist/python-BN7PRYMW.mjs +294 -0
  69. package/dist/qsharp-DnrWSUlt.mjs +301 -0
  70. package/dist/r-Cv309K2z.mjs +243 -0
  71. package/dist/razor-amsYwW3e.mjs +543 -0
  72. package/dist/redis-DTcS4wMj.mjs +302 -0
  73. package/dist/redshift-hLxZVESM.mjs +809 -0
  74. package/dist/restructuredtext-C898lK4f.mjs +174 -0
  75. package/dist/ruby-CgKtnJIQ.mjs +511 -0
  76. package/dist/rust-bj8oxVnh.mjs +343 -0
  77. package/dist/sb-DWynz26l.mjs +115 -0
  78. package/dist/scala-BL5z1UEd.mjs +370 -0
  79. package/dist/scheme-DUJsH6VU.mjs +108 -0
  80. package/dist/scss-CxjmhvaL.mjs +262 -0
  81. package/dist/shell-D14Zs1dF.mjs +221 -0
  82. package/dist/solidity-WyRm-BGK.mjs +1367 -0
  83. package/dist/sophia-CKk-_Oa5.mjs +199 -0
  84. package/dist/sparql-DHtmINMZ.mjs +201 -0
  85. package/dist/sql-Dqaj5JHC.mjs +853 -0
  86. package/dist/st-Bj2IIaop.mjs +416 -0
  87. package/dist/swift-DwxP72iM.mjs +312 -0
  88. package/dist/systemverilog-D7wJfuql.mjs +576 -0
  89. package/dist/tcl-0ApMt-eC.mjs +232 -0
  90. package/dist/tsMode-CfGJAg8A.mjs +946 -0
  91. package/dist/twig-DxwbdmvQ.mjs +392 -0
  92. package/dist/typescript-BkqvjzTg.mjs +336 -0
  93. package/dist/typespec-Fd-JwSuS.mjs +117 -0
  94. package/dist/vb-CxuyYE1I.mjs +372 -0
  95. package/dist/wgsl-DoEGc31J.mjs +439 -0
  96. package/dist/xml-BE08lKLg.mjs +88 -0
  97. package/dist/yaml-DaPfb7D4.mjs +199 -0
  98. package/package.json +3 -2
@@ -0,0 +1,183 @@
1
+ const e = {
2
+ comments: {
3
+ lineComment: "//",
4
+ blockComment: ["/*", "*/"]
5
+ },
6
+ brackets: [
7
+ ["{", "}"],
8
+ ["[", "]"],
9
+ ["(", ")"]
10
+ ],
11
+ autoClosingPairs: [
12
+ { open: "{", close: "}" },
13
+ { open: "[", close: "]" },
14
+ { open: "(", close: ")" },
15
+ { open: '"', close: '"' },
16
+ { open: "'", close: "'" }
17
+ ],
18
+ surroundingPairs: [
19
+ { open: "{", close: "}" },
20
+ { open: "[", close: "]" },
21
+ { open: "(", close: ")" },
22
+ { open: '"', close: '"' },
23
+ { open: "'", close: "'" }
24
+ ]
25
+ }, n = {
26
+ defaultToken: "",
27
+ tokenPostfix: ".objective-c",
28
+ keywords: [
29
+ "#import",
30
+ "#include",
31
+ "#define",
32
+ "#else",
33
+ "#endif",
34
+ "#if",
35
+ "#ifdef",
36
+ "#ifndef",
37
+ "#ident",
38
+ "#undef",
39
+ "@class",
40
+ "@defs",
41
+ "@dynamic",
42
+ "@encode",
43
+ "@end",
44
+ "@implementation",
45
+ "@interface",
46
+ "@package",
47
+ "@private",
48
+ "@protected",
49
+ "@property",
50
+ "@protocol",
51
+ "@public",
52
+ "@selector",
53
+ "@synthesize",
54
+ "__declspec",
55
+ "assign",
56
+ "auto",
57
+ "BOOL",
58
+ "break",
59
+ "bycopy",
60
+ "byref",
61
+ "case",
62
+ "char",
63
+ "Class",
64
+ "const",
65
+ "copy",
66
+ "continue",
67
+ "default",
68
+ "do",
69
+ "double",
70
+ "else",
71
+ "enum",
72
+ "extern",
73
+ "FALSE",
74
+ "false",
75
+ "float",
76
+ "for",
77
+ "goto",
78
+ "if",
79
+ "in",
80
+ "int",
81
+ "id",
82
+ "inout",
83
+ "IMP",
84
+ "long",
85
+ "nil",
86
+ "nonatomic",
87
+ "NULL",
88
+ "oneway",
89
+ "out",
90
+ "private",
91
+ "public",
92
+ "protected",
93
+ "readwrite",
94
+ "readonly",
95
+ "register",
96
+ "return",
97
+ "SEL",
98
+ "self",
99
+ "short",
100
+ "signed",
101
+ "sizeof",
102
+ "static",
103
+ "struct",
104
+ "super",
105
+ "switch",
106
+ "typedef",
107
+ "TRUE",
108
+ "true",
109
+ "union",
110
+ "unsigned",
111
+ "volatile",
112
+ "void",
113
+ "while"
114
+ ],
115
+ decpart: /\d(_?\d)*/,
116
+ decimal: /0|@decpart/,
117
+ tokenizer: {
118
+ root: [
119
+ { include: "@comments" },
120
+ { include: "@whitespace" },
121
+ { include: "@numbers" },
122
+ { include: "@strings" },
123
+ [/[,:;]/, "delimiter"],
124
+ [/[{}\[\]()<>]/, "@brackets"],
125
+ [
126
+ /[a-zA-Z@#]\w*/,
127
+ {
128
+ cases: {
129
+ "@keywords": "keyword",
130
+ "@default": "identifier"
131
+ }
132
+ }
133
+ ],
134
+ [/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/, "operator"]
135
+ ],
136
+ whitespace: [[/\s+/, "white"]],
137
+ comments: [
138
+ ["\\/\\*", "comment", "@comment"],
139
+ ["\\/\\/+.*", "comment"]
140
+ ],
141
+ comment: [
142
+ ["\\*\\/", "comment", "@pop"],
143
+ [".", "comment"]
144
+ ],
145
+ numbers: [
146
+ [/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/, "number.hex"],
147
+ [
148
+ /@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,
149
+ {
150
+ cases: {
151
+ "(\\d)*": "number",
152
+ $0: "number.float"
153
+ }
154
+ }
155
+ ]
156
+ ],
157
+ // Recognize strings, including those broken across lines with \ (but not without)
158
+ strings: [
159
+ [/'$/, "string.escape", "@popall"],
160
+ [/'/, "string.escape", "@stringBody"],
161
+ [/"$/, "string.escape", "@popall"],
162
+ [/"/, "string.escape", "@dblStringBody"]
163
+ ],
164
+ stringBody: [
165
+ [/[^\\']+$/, "string", "@popall"],
166
+ [/[^\\']+/, "string"],
167
+ [/\\./, "string"],
168
+ [/'/, "string.escape", "@popall"],
169
+ [/\\$/, "string"]
170
+ ],
171
+ dblStringBody: [
172
+ [/[^\\"]+$/, "string", "@popall"],
173
+ [/[^\\"]+/, "string"],
174
+ [/\\./, "string"],
175
+ [/"/, "string.escape", "@popall"],
176
+ [/\\$/, "string"]
177
+ ]
178
+ }
179
+ };
180
+ export {
181
+ e as conf,
182
+ n as language
183
+ };
@@ -0,0 +1,251 @@
1
+ const e = {
2
+ // the default separators except `@$`
3
+ wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
4
+ comments: {
5
+ lineComment: "//",
6
+ blockComment: ["{", "}"]
7
+ },
8
+ brackets: [
9
+ ["{", "}"],
10
+ ["[", "]"],
11
+ ["(", ")"],
12
+ ["<", ">"]
13
+ ],
14
+ autoClosingPairs: [
15
+ { open: "{", close: "}" },
16
+ { open: "[", close: "]" },
17
+ { open: "(", close: ")" },
18
+ { open: "<", close: ">" },
19
+ { open: "'", close: "'" }
20
+ ],
21
+ surroundingPairs: [
22
+ { open: "{", close: "}" },
23
+ { open: "[", close: "]" },
24
+ { open: "(", close: ")" },
25
+ { open: "<", close: ">" },
26
+ { open: "'", close: "'" }
27
+ ],
28
+ folding: {
29
+ markers: {
30
+ start: new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),
31
+ end: new RegExp("^\\s*\\{\\$ENDREGION\\}")
32
+ }
33
+ }
34
+ }, t = {
35
+ defaultToken: "",
36
+ tokenPostfix: ".pascal",
37
+ ignoreCase: !0,
38
+ brackets: [
39
+ { open: "{", close: "}", token: "delimiter.curly" },
40
+ { open: "[", close: "]", token: "delimiter.square" },
41
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
42
+ { open: "<", close: ">", token: "delimiter.angle" }
43
+ ],
44
+ keywords: [
45
+ "absolute",
46
+ "abstract",
47
+ "all",
48
+ "and_then",
49
+ "array",
50
+ "as",
51
+ "asm",
52
+ "attribute",
53
+ "begin",
54
+ "bindable",
55
+ "case",
56
+ "class",
57
+ "const",
58
+ "contains",
59
+ "default",
60
+ "div",
61
+ "else",
62
+ "end",
63
+ "except",
64
+ "exports",
65
+ "external",
66
+ "far",
67
+ "file",
68
+ "finalization",
69
+ "finally",
70
+ "forward",
71
+ "generic",
72
+ "goto",
73
+ "if",
74
+ "implements",
75
+ "import",
76
+ "in",
77
+ "index",
78
+ "inherited",
79
+ "initialization",
80
+ "interrupt",
81
+ "is",
82
+ "label",
83
+ "library",
84
+ "mod",
85
+ "module",
86
+ "name",
87
+ "near",
88
+ "not",
89
+ "object",
90
+ "of",
91
+ "on",
92
+ "only",
93
+ "operator",
94
+ "or_else",
95
+ "otherwise",
96
+ "override",
97
+ "package",
98
+ "packed",
99
+ "pow",
100
+ "private",
101
+ "program",
102
+ "protected",
103
+ "public",
104
+ "published",
105
+ "interface",
106
+ "implementation",
107
+ "qualified",
108
+ "read",
109
+ "record",
110
+ "resident",
111
+ "requires",
112
+ "resourcestring",
113
+ "restricted",
114
+ "segment",
115
+ "set",
116
+ "shl",
117
+ "shr",
118
+ "specialize",
119
+ "stored",
120
+ "strict",
121
+ "then",
122
+ "threadvar",
123
+ "to",
124
+ "try",
125
+ "type",
126
+ "unit",
127
+ "uses",
128
+ "var",
129
+ "view",
130
+ "virtual",
131
+ "dynamic",
132
+ "overload",
133
+ "reintroduce",
134
+ "with",
135
+ "write",
136
+ "xor",
137
+ "true",
138
+ "false",
139
+ "procedure",
140
+ "function",
141
+ "constructor",
142
+ "destructor",
143
+ "property",
144
+ "break",
145
+ "continue",
146
+ "exit",
147
+ "abort",
148
+ "while",
149
+ "do",
150
+ "for",
151
+ "raise",
152
+ "repeat",
153
+ "until"
154
+ ],
155
+ typeKeywords: [
156
+ "boolean",
157
+ "double",
158
+ "byte",
159
+ "integer",
160
+ "shortint",
161
+ "char",
162
+ "longint",
163
+ "float",
164
+ "string"
165
+ ],
166
+ operators: [
167
+ "=",
168
+ ">",
169
+ "<",
170
+ "<=",
171
+ ">=",
172
+ "<>",
173
+ ":",
174
+ ":=",
175
+ "and",
176
+ "or",
177
+ "+",
178
+ "-",
179
+ "*",
180
+ "/",
181
+ "@",
182
+ "&",
183
+ "^",
184
+ "%"
185
+ ],
186
+ // we include these common regular expressions
187
+ symbols: /[=><:@\^&|+\-*\/\^%]+/,
188
+ // The main tokenizer for our languages
189
+ tokenizer: {
190
+ root: [
191
+ // identifiers and keywords
192
+ [
193
+ /[a-zA-Z_][\w]*/,
194
+ {
195
+ cases: {
196
+ "@keywords": { token: "keyword.$0" },
197
+ "@default": "identifier"
198
+ }
199
+ }
200
+ ],
201
+ // whitespace
202
+ { include: "@whitespace" },
203
+ // delimiters and operators
204
+ [/[{}()\[\]]/, "@brackets"],
205
+ [/[<>](?!@symbols)/, "@brackets"],
206
+ [
207
+ /@symbols/,
208
+ {
209
+ cases: {
210
+ "@operators": "delimiter",
211
+ "@default": ""
212
+ }
213
+ }
214
+ ],
215
+ // numbers
216
+ [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
217
+ [/\$[0-9a-fA-F]{1,16}/, "number.hex"],
218
+ [/\d+/, "number"],
219
+ // delimiter: after number because of .\d floats
220
+ [/[;,.]/, "delimiter"],
221
+ // strings
222
+ [/'([^'\\]|\\.)*$/, "string.invalid"],
223
+ // non-teminated string
224
+ [/'/, "string", "@string"],
225
+ // characters
226
+ [/'[^\\']'/, "string"],
227
+ [/'/, "string.invalid"],
228
+ [/\#\d+/, "string"]
229
+ ],
230
+ comment: [
231
+ [/[^\*\}]+/, "comment"],
232
+ //[/\(\*/, 'comment', '@push' ], // nested comment not allowed :-(
233
+ [/\}/, "comment", "@pop"],
234
+ [/[\{]/, "comment"]
235
+ ],
236
+ string: [
237
+ [/[^\\']+/, "string"],
238
+ [/\\./, "string.escape.invalid"],
239
+ [/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
240
+ ],
241
+ whitespace: [
242
+ [/[ \t\r\n]+/, "white"],
243
+ [/\{/, "comment", "@comment"],
244
+ [/\/\/.*$/, "comment"]
245
+ ]
246
+ }
247
+ };
248
+ export {
249
+ e as conf,
250
+ t as language
251
+ };
@@ -0,0 +1,164 @@
1
+ const e = {
2
+ comments: {
3
+ lineComment: "//",
4
+ blockComment: ["(*", "*)"]
5
+ },
6
+ brackets: [
7
+ ["{", "}"],
8
+ ["[", "]"],
9
+ ["(", ")"],
10
+ ["<", ">"]
11
+ ],
12
+ autoClosingPairs: [
13
+ { open: "{", close: "}" },
14
+ { open: "[", close: "]" },
15
+ { open: "(", close: ")" },
16
+ { open: "<", close: ">" },
17
+ { open: "'", close: "'" }
18
+ ],
19
+ surroundingPairs: [
20
+ { open: "{", close: "}" },
21
+ { open: "[", close: "]" },
22
+ { open: "(", close: ")" },
23
+ { open: "<", close: ">" },
24
+ { open: "'", close: "'" }
25
+ ]
26
+ }, o = {
27
+ defaultToken: "",
28
+ tokenPostfix: ".pascaligo",
29
+ ignoreCase: !0,
30
+ brackets: [
31
+ { open: "{", close: "}", token: "delimiter.curly" },
32
+ { open: "[", close: "]", token: "delimiter.square" },
33
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
34
+ { open: "<", close: ">", token: "delimiter.angle" }
35
+ ],
36
+ keywords: [
37
+ "begin",
38
+ "block",
39
+ "case",
40
+ "const",
41
+ "else",
42
+ "end",
43
+ "fail",
44
+ "for",
45
+ "from",
46
+ "function",
47
+ "if",
48
+ "is",
49
+ "nil",
50
+ "of",
51
+ "remove",
52
+ "return",
53
+ "skip",
54
+ "then",
55
+ "type",
56
+ "var",
57
+ "while",
58
+ "with",
59
+ "option",
60
+ "None",
61
+ "transaction"
62
+ ],
63
+ typeKeywords: [
64
+ "bool",
65
+ "int",
66
+ "list",
67
+ "map",
68
+ "nat",
69
+ "record",
70
+ "string",
71
+ "unit",
72
+ "address",
73
+ "map",
74
+ "mtz",
75
+ "xtz"
76
+ ],
77
+ operators: [
78
+ "=",
79
+ ">",
80
+ "<",
81
+ "<=",
82
+ ">=",
83
+ "<>",
84
+ ":",
85
+ ":=",
86
+ "and",
87
+ "mod",
88
+ "or",
89
+ "+",
90
+ "-",
91
+ "*",
92
+ "/",
93
+ "@",
94
+ "&",
95
+ "^",
96
+ "%"
97
+ ],
98
+ // we include these common regular expressions
99
+ symbols: /[=><:@\^&|+\-*\/\^%]+/,
100
+ // The main tokenizer for our languages
101
+ tokenizer: {
102
+ root: [
103
+ // identifiers and keywords
104
+ [
105
+ /[a-zA-Z_][\w]*/,
106
+ {
107
+ cases: {
108
+ "@keywords": { token: "keyword.$0" },
109
+ "@default": "identifier"
110
+ }
111
+ }
112
+ ],
113
+ // whitespace
114
+ { include: "@whitespace" },
115
+ // delimiters and operators
116
+ [/[{}()\[\]]/, "@brackets"],
117
+ [/[<>](?!@symbols)/, "@brackets"],
118
+ [
119
+ /@symbols/,
120
+ {
121
+ cases: {
122
+ "@operators": "delimiter",
123
+ "@default": ""
124
+ }
125
+ }
126
+ ],
127
+ // numbers
128
+ [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
129
+ [/\$[0-9a-fA-F]{1,16}/, "number.hex"],
130
+ [/\d+/, "number"],
131
+ // delimiter: after number because of .\d floats
132
+ [/[;,.]/, "delimiter"],
133
+ // strings
134
+ [/'([^'\\]|\\.)*$/, "string.invalid"],
135
+ // non-teminated string
136
+ [/'/, "string", "@string"],
137
+ // characters
138
+ [/'[^\\']'/, "string"],
139
+ [/'/, "string.invalid"],
140
+ [/\#\d+/, "string"]
141
+ ],
142
+ /* */
143
+ comment: [
144
+ [/[^\(\*]+/, "comment"],
145
+ //[/\(\*/, 'comment', '@push' ], // nested comment not allowed :-(
146
+ [/\*\)/, "comment", "@pop"],
147
+ [/\(\*/, "comment"]
148
+ ],
149
+ string: [
150
+ [/[^\\']+/, "string"],
151
+ [/\\./, "string.escape.invalid"],
152
+ [/'/, { token: "string.quote", bracket: "@close", next: "@pop" }]
153
+ ],
154
+ whitespace: [
155
+ [/[ \t\r\n]+/, "white"],
156
+ [/\(\*/, "comment", "@comment"],
157
+ [/\/\/.*$/, "comment"]
158
+ ]
159
+ }
160
+ };
161
+ export {
162
+ e as conf,
163
+ o as language
164
+ };